Hlavní navigace

Git a Subversion

Dan Horák 11. 8. 2008

Protože Git nabízí řadu možností pro zvýšení efektivity práce v distribuovaném vývojářském prostředí, dá se očekávat, že budou existovat i prostředky pro spolupráci s jinými systémy pro správu verzí. Dnes se podíváme na utilitu git-svn, která zajišťuje spolupráci Git a Subversion.

Ve světe open source software existuje několik skupin lidí – autoři, uživatelé a také správci balíčků a nezávislí vývojáři. Úkolem správců balíčků je ze zdrojového archívu udělat balíček, který splňuje požadavky dané distribuce a případně i opravuje chyby. Při řešení chyb je více než vhodné spolupracovat s autorem nebo autory daného programu. Za nezávislým vývojářem si můžeme představit člověka, který se při výskytu chyby v programu snaží chybu opravit nebo samostatně vyvíjí nové funkce. Těmto dvěma skupinám dává Git možnost mít u sebe celou kompletní historii projektu a snadné vytváření větví pak ulehčuje tvorbu oprav i práci na nových vlastnostech. A utilita git-svn umožní využití výhod Gitu i pro práci na projektech, které používají pro správu verzí systém Subversion.

Původně byl git-svn navržen jako nástroj pro obousměrné předávání sad změn mezi Gitem a Subversion pracující s jednou svn větví, ale vyvinul se do podoby, kdy je možné sledovat i modifikovat celou strukturu subversion repozitáře. Od toho se také odvíjí 2 scénáře, jak git-svn pužívat.

Začneme tím jednodušším, a to je sledování jedné větve Subversion

git svn clone svn://svn.danny.cz/libsql/trunk

čímž získáme kompletní historii větve trunk jako repozitář Gitu na lokálním počítači, větev trunk je možné nahradit za libovolnou jinou. A protože se přenáší celá historie dané větve, bude stahování nějakou dobu trvat. Strukturu lokální kopie nám ukáže

git branch -a
* master
  git-svn

kde master je lokální větev a git-svn je vzdálená, napojená na svn repozitář. Pokud potřebujeme aktualizovat naši kopii, spustíme příkaz

git svn rebase

, který získá aktualizace ze vzdáleného repozitáře a zároveň je aplikuje do pracovních souborů.

Teď už můžeme s repozitářem pracovat, jako když máme normální klon, kde je na druhé straně také Git. Časem ale vznikne potřeba odeslat naše lokální commity do vzdáleného svn repozitáře, a tak použijeme

git svn dcommit

Druhou a efektnější možností je sledování celého svn repozitáře a použijeme nedávno v Softwarové sklizni přestavený Misfit Model 3D

git svn clone --stdlayout http://svn.misfitcode.com/misfitcode/mm3d

, kde přepínač –stdlayout zařídí rozpoznání svn větví a tagů. Nyní je nutné obrnit se trpělivostí ještě více než v předchozím příkladě, protože se stahuje svn repozitář včetně kompletní historie a svn protokol není v tomto případě moc efektivní.

Nyní se můžeme podívat jak vypadá struktura

git branch -a
* master
  mm3d-qt4
  tags/mm3d-1.3.6
  tags/mm3d-1.3.7
  tags/mm3d-qt3-1.3.7
  trunk

, kde všechny větve kromě master jsou vzdálené.

Protože se ukázalo, že mm3d 1.3.7 nejde sestavit ve vývojové verzi Fedory, uděláme si lokální větev, kam budeme ukládat potřebné patche.

git checkout -b mm3d-1.3.7-fedora tags/mm3d-1.3.7

nyní se podíváme, co se změnilo

git branch -a
  master
* mm3d-1.3.7-fedora
  mm3d-qt4
  tags/mm3d-1.3.6
  tags/mm3d-1.3.7
  tags/mm3d-qt3-1.3.7
  trunk

Pro aktualizaci naší kopie z svn použijeme příkaz

git svn fetch

, což je ekvivalent příkazu „git fetch“, který aktualizuje všechny větve v lokálním repozitáři, ale nezasahuje do pracovních souborů. Pro jejich aktualizaci pak můžeme použít

git rebase tags/mm3d-1.3.7 mm3d-1.3.7-fedora

Následovat bude „nezáživná“ práce na úpravě kódu, commit do lokálního repozitáře a pak vygenerování záplaty, kterou pošleme autorovi. A nebo, pokud máme právo zápisu do svn repozitáře, použijeme „git svn dcommit“.

Cílem tohoto článku nebyl detailní rozbor možností, které git-svn nabízí, k tomu lépe poslouží manuálová stránka a případně další dokumentace dostupná na webu, ale spíše ukázání postupů, které může použít správce balíčků nebo vývojář ve své každodenní práci. Za výhodu považuji i to, že svn repozitář se stáhne do přesně vymezených větví v lokální kopii, a tak nic nebrání v práci s lokálním git repozitářem používat své zaběhnuté postupy.

Našli jste v článku chybu?

11. 8. 2008 8:54

Opraveno, už je nastaven správný autor, kterým je Dan Horák.

11. 8. 2008 0:32

Autorem tohoto článku je Dan Horák, ne já. Chyba bude opravena ráno. Když jsem zadával článek, tak Dan nebyl v seznamu autorů a tak tam zůstalo moje jméno. Článek by jinak vyšel již minulý týden. Když se dneska Petr vrátil z dovolené, tak jsem mu tuto podstatnou informaci zapomněl říct a on ho vydal. Moc se omlouvám hlavně Danovi, jde o nedorozumění.
Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Lupa.cz: Levný tarif pro Brno nebude. Radní: je to kartel

Levný tarif pro Brno nebude. Radní: je to kartel

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Měšec.cz: Golfové pojištění: kde si jej můžete sjednat?

Golfové pojištění: kde si jej můžete sjednat?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka