7 tipů pro práci s VCS v IntelliJ Idea

Znát velmi dobře IDE, se kterým pracujete deno denně, je pro vaši produktivitu zcela zásadní. Poslední rok mne utvrdil v tom, že přesto že IntelliJ Ideu používám už několik let, přesto je plno věcí, které nevím a které mi nakonec ušetří plno práce. Příkladem budiž pár klávesových zkratek o kterých jsem absolutně nevěděl a které jsem se dozvěděl teprve z DZone IntelliJ Cheatsheetu od Hamleta D’Arcyho – kupříkladu:

  • Ctrl+Shift+Insert – vertikální výběr oblasti (skvělé pro hromadné úpravy CSV souborů, SQL apod.)
  • Ctrl+Shift+U – změna case vybraného textu (tzn. na upper-case nebo lower-case)
  • Ctrl+Alt+Left, Ctrl+Alt+Right – posun na předchozí / následující lokaci kurzoru (používal jsem ikony) – skvělé pokud si prohlížíte jinou část třídy, včetně přesunutí kurzoru a pak se chcete vrátit rychle zpět
  • F11 – vložení rychlého bookmarku do kódu, který se vám ukazuje po pravé straně a je možné se na něj rychle vrátit

Možná, že teda i já vím pár věcí, které tak úplně známé nejsou, a třeba někomu z vás pomůžou.

Začněme třeba s prací s VCS a revizemi – u nás používáme CVS, ale řekl bych, že tyto věci budou přenositelné i na SVN a další VCS systémy:

1. Revize přístupné z kódu

CVS-gutter

V editoru kódu máte hned po levé straně informaci o tom, jaké změny jsou v aktuálním kódu oproti poslední revizi ve VCS. Jedním klikem můžete pak můžete vrátit změny dané části na původní verzi uloženou v CVS, rychle porovnat změny nebo si původní verzi vložit do schránky.

2. CVS / SVN Bar

CVS-bar Plno šikovných operací s CVS je skryto až na druhé úrovni popup menu apodobně. Pro rychlý přístup k těmto operacím je možné si nainstalovat plugin CVS / SVN bar, který vám nejčastější operace (přidat soubor do CVS, commit / update / rollback, show history, diff) zpřístupní v nástrojovém menu.

3. Vybavení naposledy vložených komentářů při commitu

Je zajímavé, že o téhle fíčurce jsem nevěděl strašně dlouho a při diskusi s dalšími vývojáři jsem zjistil, že ani oni ji moc neznali. V commit dialogu se vám nabízí vždy jen poslední vložený komentář, jak ale vyvolat starší historii komentářů (často potřeba, když se pracuje na více tascích najednou)? Magické tlačítko jsem označil červeným kroužkem:

CVS-message-history

4. Change listy / Shelf

Change listy jsou skvělým nástrojem, pokud pracujete na více věcech najednou, nebo máte právě rozpracovánu novou funkcionalitu a potřebujete pro kolegy udělat rychlý hotfix. Hodí se taky pro změny, které děláte v souborech, které jsou součástí VCS, ale u kterých nechcete abyste je omylem commitnuli (např. rychlé nastavení nějakých property pro vaše lokální vývojové prostředí apod).

Práci se shelvem (poličkou?! :-) ) ukazuje skvěle Václav Pech v 5ti minutovém demíčku.

Co se týká change-listů, tak ty používám v případě, že potřebuju oddálit commit některých souborů. Jednoduše je přesunu do odděleného changelistu a při průběžných commitech už nemusím řešit odškrtávání těchto souborů v commit listu. Jde především o to, že při běžné práce by se mi určitě brzy stalo, že bych je omylem commitnul. Často mám totiž rychlejší ruce než mozek.

5. Historie revizí

Můj oblíbený nástroj, při kterém obvykle vyslovuji větu “ze mě nikdo blbce dělat nebude”. Pokud člověk potřebuje zjistit, kdo ve zdrojovém souboru provedl tu změnu, která dle všech zůčastněných vznikla sama od sebe je historie skvělý nástroj, jak tomu přijít na kloub:

CVS-history

Stejně často tento přístup používám, pokud se sám potřebuji vrátit k nějaké předchozí revizi, nebo když potřebuji zjistit, jakého člověka se mám zeptat na důvody a detaily konkrétní implementace v kódu. Bez této funkce se podle mého názoru prostě nedá obejít.

6. Lokální historie

V každém případě pro vás Idea udržuje lokální historii, takže přestože commity do CVS děláte jen čas od času, máte k dispozici daleko jemnější pohled na změny v kódu mezi revizemi.

Local-history-menu

Local-history

Ani nemusím říkat, kolikrát mi tahle funkce zachránila plno času v případě souborů, které jsem do VCS ještě necommitnul. Obvykle ji používám spíše jako poslední záchrannou brzu – je tu sice ještě možnost pojmenovat si stav lokálních změn (Put label) – tedy něco jako lokální tag, ale tu používám málokdy, protože obvykle radši straním plnohodnotným tagům v CVS.

Jedinou nevýhodou (ale logickou) je to, že v lokální historii pracujete vždy jen s aktuálním souborem – tj. pokud se potřebujete dostat zpět do určitého stavu u více souborů, musíte po jednom. Nicméně v takových situacích, ve kterých tuto funkci používám já, jsem stejně rád, že jsem rád a klidně tuto práci podstoupím, jen když mi to zachrání napsaný kód.

7. Porovnání kódu proti schránce

Tahle fíčurka už nesouvisí s VCS jako takovým, ale souvisí s prací se změnami v kódě, tak jsem ji taky zařadil. IntelliJ Idea má naprosto skvělý DIFF editor, který se samozřejmě používá při práci s VCS, ale můžete ho použít velmi efektivně i samostatně. Zkuste třeba označit dva soubory v Project browseru a v popup menu vybrat položku:

Compare-two-files

Nebo si text hoďte do schránky, vyberte kus textu v jiném souboru a vyberte:

Compare-clipboard

Tohle je věc, kterou jsem také objevil teprve nedávno a strašně rád ji používám.

Jak jsem už v úvodu řekl, je plno věcí, které neznám a jsem strašně překvapený, když se je po letech dozvím. Zkuste mě překvapit třeba v komentářích :-)

Podělte se s ostatními:

  • Digg
  • del.icio.us
  • Technorati
  • Diigo
  • DZone
  • FriendFeed
  • Google Bookmarks
  • LinkedIn
  • Reddit
  • RSS
  • StumbleUpon
  • Twitter

Související články:

  1. 7 tipů pro práci v Debug režimu v IntelliJ Idea
  2. Porovnání Maven 2 pluginů pro IntelliJ Idea
Ohodnoťte článek:
Takovéhle články už radši ne!Nic nového pod sluncem.Průměr - obsahuje zajímavé střípky informací.Hodnotný článek - lecos nového jsem se dozvěděl.Skvělý článek - informace se mi dost hodí. (doposud bez hlasů)
Loading ... Loading ...

10 Responses to “7 tipů pro práci s VCS v IntelliJ Idea”

  1. blaf says:

    Docela uzitecny mi prijde shortcut Ctrl+Alt+Shift+N – slouzi k vyhledavani symbolu v kodu (jmena promennych, spring bean a kdovi ceho vseho)

    misto pouzivani svn bar jsem si nadefinoval quick list a asocioval ho s klavesovou zkratkou, ktera mi zobrazi seznam s VCS akcemi, potom uz jenom napisu cast nazvu akce, kterou chci udelat, takze dam Ctrl+Alt+Shift+P, potom napisu “late” a v tom seznamu se mi vyfiltruje Compare with latest version, … stejny zpusob pouzivam napr. refactor akci, prijde mi to pohodlnejsi nez klikat mysi

  2. Ladislav Thon says:

    Ad 4: change listy jsou užitečné, ale už jsem se párkrát nechal nachytat, když jsem v souvislosti s aktuálním úkolem změnil soubor, který už byl z dřívějška kvůli jiné změně v jiném change listu. Odhaduju, že při použití Gitu by to mohlo být inteligentnější, ale CSV a SVN holt verzují celé soubory a ne jednotlivé změny. Shelf se v tomhle kontextu tuším česky říká přihrádka :-)

    Ad 5: historie je naprosto _klíčová_, ale pro první pohled používám Annotate (klik pravým na gutter — ten panel vlevo zmiňovaný v bodu 1), občas postačí.

    Ad 7: tak Compare Two Files jsem znal, ale Compare with Clipboard nikoliv, díky!!!

  3. Otec Fura says:

    @Ladislav Thon:

    S changelisty máš pravdu – taky jsem přišel na to, že je to v podstatě jen per file. Na dost usecasů mě to zatím stačilo. Pokud by se to chovalo jako shelve, bylo by to zajímavé, ale trošku bych se obával toho, aby si člověk ještě udržel nad změnami přehled. V takovém případě se člověk nevyhnutelně musí dostat ke konfliktům.

  4. antaran says:

    :) to porovnavanie dvoch suborov a porovnavanie so schrankou som este nevidel :)

    -> k tym changelistom, ja si vacsinou na kazde issue vytvaram zvlast changelist, existuje take nastavenie tu:

    Settings/VersionControl/IssueNavigation

    -> kde sa da nastavit pattern web stranky issue trackeru (pre jiru je na to button)
    -> potom ked do mena changelistu napisem kod issue, tak sa mi z neho automaticky vyrobi link do trackeru

    je to sikovne odporucam vyskusat… :)

  5. Otec Fura says:

    @antaran – aha, tak to jsem pro změnu zase nevěděl já … vyzkouším, díky

  6. podlesh says:

    To s tou lokální historií omezenou na jednotlivé soubory není tak docela pravda – lze pracovat i na úrovni adresářů.

    Mezi další užitečné věci v idee bych uvedl:

    - Ctrl+Shift+V = paste s výběrem několika posledních obsahů schránky

    - Alt+Q = ukáže hlavičku aktuální metody nebo třídy, v jejímž těle se právě nacházím (a která je typicky oscrollována někam pryč)

  7. Otec Fura says:

    @podlesh

    S tou lokální historií máš pravdu – na úrovni adresářů jsem si myslel, že to funguje pouze pro to jak získat již odstraněné soubory, ale ono to správně zobrazuje i stav souborů v čase, což je super.

    Díky za další tipy – Ctrl+Shift+V je základ, ten snad zná každý :) – tuhle věc jsem si tak oblíbil, že jsem ji potřeboval i ve Windows samotných tak jsem si doinstaloval CLCL ( http://www.nakka.com/soft/clcl/index_eng.html ).

    Alt-Q je zajímavé – zkusím začít používat.

  8. Jety says:

    Ahoj Honzo, díky. Líbí se mi ten shelving, dost často už jsem ho potřeboval a nevěděl jsem, co mi vlastně chybí :) . Taky často používám ten Annotate. Ctrl+Shift+V nepoužívám, místo toho používám ClipDiary (obdoba CLCL) jak pro windows, tak pro Ideu, takže mám jistotu, že když něco zkopíruju odjinud, bude to tam taky.

  9. Jety says:

    @antaran
    Díky, to issue navigation funguje pěkně a hodí se mi. Jen jsem musel trochu upravit JIRA pattern z [A-Z]+\-\d+ na [A-Z0-9]+\-\d+, protože klíče máme např. O2DU-1234.

  10. Petr says:

    Praktická je taky zkratka CTRL+SHIFT+I – udělá náhled metody, nad kterou zrovna jste. Nemusíte tedy skočit dovnitř přes CTRL+B a pak zase zpátky.

    Další vychytávka je Ctrl+Shift+A – vyhledává akci v menu – doporučuji vyzkoušet.

    Hrátky z shelf jsem ještě nezkoušel, ale vypadá to jako super feature.

  11. antaran says:

    @Jety
    ano, to sa pomerne casto stava, ale da sa to tam zmenit lahko aj vyskusat…

    inak, niekedy strasne davno asi viac nez rok, dva dozadu, bola v IDEI taka moznost pozriet si statistiky pouzitych klavesovych skratiek…teraz to nemozem nikde najst :( poznate to niekto?

    ak ste nejaku instalaciu IDEI pouzivali dlhsi cas, len ju stale updatovali, tak tam boli take zaujimave informacie, napr. stlacenie Ctrl + Space 100 000 krat a tak… :)

  12. Otec Fura says:

    @antaran jeto tam stále: statistiky vyvoláš klávesovou zkratkou Alt + H + P nebo přes Menu -> Help -> Productivity Guide

    Já mám třeba:
    Basic code completion 162 369 krát
    Syntax aware selection 86 471 krát

    Zajímavé počteníčko :-)

    Tímto děkuji Václavovi Pechovi za zodpovězení, sám jsem nevěděl.

  13. antaran says:

    @Otec Fura

    vdaka :) , v poslednej dobe som sa rozhodol zacat viac pouzivat live templates tak si chcem odsledovat ako mi to ide…

    ja som bohuzial nechal svoje skoro 3 rocne statistiky v minulej praci…ale tiez som tam mal vysoke cisla…mno jo keby som dostal jedno euro za kazdy “Basic code completion” mohol by som ist do dochodku :)

Leave a Reply