k47.cz

twitter RSS

Verzovací systémy a spisovatelé

9. 3. 2011 (před 11 lety) — k47 (CC by-nc-sa)

Verzování je fajn!

Jelikož jsem tak trochu programátor, stydím se, že jsem do verzovacích systémů pronikl relativně nedávno. Obětním beránkem se v mém případě stal Git – dítko Linuse Torvalds, které se stará (mimo jiné) o správu a verzování zdrojáků linuxového jádra.


Verzovací systémy? Systémy správy verzí? O co jde? Velice krátce:

Verzovací systémy jsou verzovací, protože uchovávají jednotlivé verze vašeho projektu v čase. Vytváří jakési snímky toho, jak projekt vypadal, když byl tzv. commitnut. Člověk se v nic může vracet zpátky, dívat se, co se kde změnilo a také kdo to změnil (aby bylo na koho nadávat), můžete přejít ke starší verzi, když zjistí, že novinky nefungují, tu novou zahodit a pokračovat v práci od bezpečného bodu historie. Také jsou zcela zásadní pro spolupráci většího počtu lidí na jednom projektu.

Existují dva typy: centralizované a decentralizované (distribuované). U těch prvních je nějaký hlavní server (může to být klidně váš počítač), který uchovává historii změn projektu. Když chci na daném projektu pracovat, musím se připojit k centrálnímu serveru, abych mohl stáhnout nejnovější verzi nebo nahrát svojí práci. Decentralizované žádný takovýto středobod nemají a každý, kdo se na projektu podílí má u sebe celou historii změn.

Git patří mezi distribuované systémy.


A jak se to hodí pro spisovatele? Asi takhle přátelé: verzování se hodí všude, kde něco vzniká a prochází postupným procesem změn. Kupříkladu psaní aspoň trochu delší povídky/novely/románu. Píšu, píšu, píšu, pak se vrátím zpátky, čtu si to po sobě a chci provést nějakou změnu, například smazat nějakou pasáž. Je to dobrý nápad? Co když se bude dát přilepit někam jinam? Co když jí budu později potřebovat? Co když? Co když? Plus člověk se může uklepnout a něco omylem smazat. Moje oblíbená klávesová zkratka editoru Gedit Ctrl-D, která smaže celý řádek, je strategicky umístěna vedle ukládajícího Ctrl-S. Žádný z těchto problémů vás nemusí trápit, když budete používat verzovací systém, který sleduje změny a ukládá si průběžně (tedy přesněji řečeno, jenom když mu to nakážete) stav projektu (což je jednoduše nějaká složka + její obsah) a může se k libovolnému stavu vrátit.

Kdybych Git používal od začátku a postupně verzoval celou Terminalitu, mohl bych zjistit, jak postupně vznikala a kdy jsem psal jaké pasáže (dneska mám z nejstarších částí datované jenom 3 fragmenty).

A pak je také zábavné sledovat jak se program nebo dílo postupně vyvíjí a mění. Už třeba jednoduchý grafický klient Gitu gitk přehledně ukáže rozdíl souborů mezi dvěma verzemi. Pro literární díla se tato jednoduchá vizualizace změn bude hodit jenom když píšete do plaintextu – čistého textového souboru v editorech jako Gedit, Kate nebo Notepad; nikoli ve Wordu nebo Open Office Writeru, ty používají složitý binární formát, který se do podoby čitelné pro člověka převádí komplikovanou procedurou. Tady vám git řekne, že se daný soubor nějak změnil, ale neukáže vám, co se v něm změnilo, protože by jeho interpretace nedávala smysl (prostě by před vás vysypal něco jako hex dump).

Výhody verzování jsou zjevné: nemusím si dělat starosti a rozmýšlet se, než něco smažu, zásadně změním, upravím nebo překopu. Pokud před a po každé větší změně provedu commit, můžu se ke kterémukoli takto zachycenému stavu zase vrátit a to je hodně velký rozdíl pracovním postupu. Verzování se dá také využít k zálohování – stačí zkopírovat jednu složku a táhnete si s sebou nejen současný stav, ale i celou historii všech změn. Můžete si na jiném počítači v síti založit prázdný Git projekt a do něj jedním příkazem přetáhnout všechny soubory a jejich historii. Při dalším přetažení se nebude kopírovat všechno znovu, ale jenom změny v souborech. Pravda, Git není primárně určen na zálohování, ale dá se tak taky použít.

Dalším možným přínosem pro spisovatele je možnost spolupráce více autorů na jednom textu. Například můžete někomu dát přístup ke svého stromu, on si ho stáhne k sobě a pak můžete psát společně nebo on začne kontrolovat překlepy, opravovat neobratné věty, psát poznámky, provádět beta reading a vy si od něj průběžně budete přetahovat výsledky jeho práce a začleníte je do svého díla. Přitom oba můžete pracovat na jednom textu současně, on kontroluje začátek, vy píšete další kapitoly, jiný autor dopisuje doprostřed chybějící část, nemusíte na nikoho čekat, abyste mohli pracovat dál.

Teď mě napadá, že by se takhle dal uspořádat spisovatelský maraton. Sešlo by se několik kreativních duší s notebooky, nainstaloval a nastavil by se Git, nějaký pohodlný plaintextový editor a zábava by mohla začít.


PS: Právě pomocí Gitu jsem zjistil, že tenhle článek jsem začal psát 12. října 2009 :).

píše k47 & hosté, ascii@k47.cz