Synchronizace projektů pomocí GITu

Pokud používáte pro práci více počítačů (desktop, laptop), jistě jste se setkali s problémem synchronizace pracovních dat. Řešením může být použití schopného verzovacího softwaru. Že nevíte o čem je řeč? Pak doporučuji přečíst seriál o verzování nebo alespoň první díl seriálu.

Na Windows jsem si kdysi vybral Subversion. Ten mi ale přišel vždy dost pomalý a jeho centralizovaná koncepce také není uplně spásná. Proto jsem chtěl zkusit v Ubuntu něco jiného. Procházel jsem seznamy verzovacích nástrojů až jsem narazil na GIT. GIT mne nejprve zaujal jménem autora - Linus Torvalds, autor jádra Linux. Dále pak svojí nenáročností, výkonem a distribuovanou koncepcí.

Jak na GIT

Základy GITu jsou o něco náročnější než u Subversion. Vše se dělá pomocí shellovských příkazů (ale něco se dá udělat i pomocí utility git-gui).

Ukažme si vše na příkladu:

Máme projekt /home/franta/workspace/projektik, v tomto adresáři máme všechny pracovní soubory (zdrojáky, dokumentaci). Nainstalujeme GIT (bývá ve všech balíčkovacích systémech) a jdeme na to.

Nejprve tedy chceme vytvořit pro tento projekt úložiště.

cd /home/franta/workspace/projektik
git init
To vytvoří v projektik nový adresář .git a v něm nějaký podivný obsah :)

Úložiště bysme tedy měli, teď ho musíme naplnit naším projektem.

git add .
git commit -a -m "initial commit"
Příkaz "git add ." přidá do indexu všechny soubory. "git-commit -a" pak uloží všechny změněné soubory (takže všechno) do úložiště. Pokud nechcete zahrnovat do úložiště všechny soubory, doporučuji spustit git-gui a naklikat si pouze ty, které chcete.

Nyní máme hotové úložiště naplněné daty. Nyní přeneseme celý projekt na druhý počítač. Nejprve zastavíme git démona a změníme jeho nastavení.

sudo /etc/init.d/git-daemon stop
sudo gedit /etc/sv/git-daemon/run

Řádek začínající exec (poslední) pak nahradíme

exec git-daemon --verbose --reuseaddr --export-all --user-path --syslog

a git-daemon opět spustíme

sudo /etc/init.d/git-daemon start

Můžeme přesedlat k druhému počítači, nainstalovat GIT a pustit se do přenesení.

cd /home/franta/workspace
rm -rf projektik
git clone git://192.168.1.1/~franta/workspace/projektik

Na druhém počítači pak stejným způsobem nastavte a restartujte git démona.

A na závěr to hlavní: Provedeme na prvním počítači změny v projektu a zkusíme je následně přenést i na druhý. Změny nejprve promítneme do svého úložiště (provádíme na prvním počítači).

git commit -a -m "prvni zmena"

Teď opět přejdeme na druhý počítač a napíšeme si alias pro přenesení změn. Otevřeme si v editoru /home/franta/.bashrc a zapíšeme na konec:

alias projektik='cd /home/franta/workspace/projektik; git pull git://192.168.1.1/~franta/workspace/projektik master'

Pokud jste otevírali soubor z konzole, musíme před použitím aliasu v konzoli ještě provést obsah .bashrc.

. ~/.bashrc

Nyní již můžeme zkusit zavolat příkaz

projektik

GIT toho samozřejmě umí daleko více než jen takovouto jednoduchou synchronizaci, o tom možná někdy příště :)

Hodnocení

Komentáře

[1] sNop
2008-07-01 11:34:43

Ahoj,

vsichni pisou zaklady svn nebo git, ale nikde jsem nevidel manual v nasel jazyce jak spravne delat rozvetvovat projket, jak spravne tagovat, jak spravne vytvaret branche, jak vytvorit mantaince branch a jak mezi vetvemi spravne mergovat. Taky clanek by se fakt hodil a dost by ti zdvihl navstevnost ;)

[2] Michal
2008-08-05 14:56:12

na manualy zkus http://github.com/guides/home
EN je samozrejme nutnosti, bez toho nemuzes v tohle oboru existovat

[3] Dundee
2009-04-25 11:08:33

V 9.04 je změna, do toho spouštěcího skriptu se musí zapsat:

exec chpst -ugitdaemon git daemon --verbose --reuseaddr --export-all --user-path --syslog

[4] Dundee
2009-10-08 15:41:56

V 9.10 opět změna, do souboru /etc/sv/git-daemon/run je třeba zapsat:

exec chpst -ugitdaemon /usr/lib/git-core/git-daemon --verbose --reuseaddr --export-all --user-path --syslog

Komentáře již nelze přidávat