29. května 2012

Perforce, ignorování souborů a adresářů

Perforce (P4) je komerční version control system (VCS) se spoustou zajímavých vlastností. Jeho asi nejsilnější stránkou jsou vizuální nástroje na správu branchů/streamů a mergování souborů. Největším úskalím, na které může narazit vývojář se zkušeností s "běžnými" open source VCS nástroji àla SVN, je "trochu jiná" filozofie, se kterou Perfoce ke správě verzí přistupuje. Jednou takovou věcí je vytvoření ignore-listu souborů/adresářů, které nechceme komitovat do repository (depot v řeči P4).

Jako hlavní klient pro P4 je určen Perforce Visual Client (P4V), v aktuální verzi 2012.1, která ignore-list umí. Jelikož ale starší verze P4V klasický ignore-list, jak ho známe např. z CVS, SVN, Gitu apod., neumějí a vzhledem k tomu, že je P4 komerční (a tak se ve firmách/na projektech jen tak upgradovat nebude), nebude na škodu si říct, jak ignore-list "vyrobit" ve starších verzích. Následující popis je pro verzi 2011.1.

Ignorování souborů/adresářů se v P4V nastavuje na úrovni workspace a to pomocí mapování depotu (repository) na lokální workspace. Funguje to dobře, ale má to dvě nevýhody - jednak je potřeba ignorování nastavit pro každý workspace (kterých můžu mít víc, např. pro branchování) a jednak nejde ignorování sdílet mezi vývojáři, tj. nastavit je pouze jednou pro daný projekt. Pokud tedy máme tyto skutečnosti na paměti, můžeme se pustit do nastavení:
  1. V menu View -> Workspaces, nebo ikona .
  2. Kliknout pravým tlačítkem na daný worskpace -> Edit workspace <workspace>.
  3. V sekci Workspace Mappings kliknout na View workspace mapping as a text.
  4. Přidat řádky pro ignorování. Důležitý je znak mínus před rootem depotu (-//). Tři tečky (...) znamenají libovolnou hierarchii adresářů.
-//mw/.../SCA-INF/...  //<workspace>/mw/.../SCA-INF/...
-//mw/.../deploy/...   //<workspace>/mw/.../deploy/...
-//mw/.../classes/...  //<workspace>/mw/.../classes/...
Pokud si pohled překlikneme zpátky pomocí View workspace mapping as a tree, měli bychom vidět něco takového:

P4 workspace s ignorovanými adresáři