Portál AbcLinuxu, 30. dubna 2025 20:37
VCS - Version Control System
Přes vánoční svátky jsem trochu studoval dokumentaci k Bazááru. Bzr na mě udělal dojem, líbí se mi, jak je to škálovatelné. Škálovatelností nemyslím schopnost vyrovnat se stomegabajtovýma patchema, ale schopnost být užitečný jednomu osamělému vako-vlko-vývojáři stejně jako neorganizovanému monstrtýmu rozprsknutému přes půl světa.
Tato škálovatelnost jde ruku v ruce se zpětnou kompatibilitou s mainstreamovým Subversion. Takže omezený mozeček vývojáře, který má jiné starosti, než se učit zacházet s novým programem, není vystaven takovému stresu.
Na začátku je možné bzr používat jako feature to feature náhradu za svn. Tedy: existuje centrální úložiště, checkout obsahuje jen jen pracovní kopii. Commity se odehrávají na serveru, pro logy se chodí tamtéž. Checkout se aktualizuje obligátním příkazem update
.
Za předpokladu, že na serveru je centrální úložiště, udělá se svn-like checkout nějak takhle:
bzr checkout --lightweight bzr://centralhost/srv/bzr/X-repo/X-trunk
Druhý mód je takový hybridní (tedy něco mezi centralizovaným a distribuovaným přístupem). Checkout obsahuje nejen pracovní kopii, ale též kompletní historii dané větve. Checkout je vlastně plnohodnotná nová větev, která je ale spojena se vzdálenou větví na serveru. Prohlížet logy lze tedy lokálně, což může odlehčit serverům u velkých projektů. A jak je to s commitováním? Šalamounsky každý commit se provede zároveň do lokálního repozitáře i do vzdáleného. Pokud vypadne spojení ze serverem, je možné commit nepřeposílat na server pouhým uvedením přepínače --local
.
Vytvoření "heavy" checkoutu je nasnadě:
bzr checkout bzr://centralhost/srv/bzr/X-repo/X-trunk
No a pokud má někdo náladu, může si verzovat plně distribuovaně. Pak je každý checkout vlastně zcela nezávislá větev. Větev vytvoříme klasickým
bzr branch bzr://centralhost/srv/bzr/X-repo/X-trunk
Nezávislou větev je taky možné vytvořit odpojením "heavy" checkoutu od mateřského repozitáře (bzr unbind
), potom jsou všechny commity jen lokální. Odpojení je též vhodné pokud jsme delší dobu bez spojení se serverem a nechceme každý commit explicitně označovat jako lokální. Větev je možné navázat na jinou přes bzr bind
.
Pro přenášení změn mezi různými samostatnými větvemi je možné použít příkazy pull a push.
Docela mě překvapilo, že bzr obsahuje příkaz uncommit
, který dokáže odvolat posledních N commitů. V svn je to tak, že commit je neodvolatelný, co jednou dáte do repozitáře, to bude pod danou revizí vždy dostupné. Zde je politika benevolentnější.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.