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 :-)