Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Git a Subversion

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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

Školení: TCP/IP na Linuxu I.

V tomto kurzu se seznámíte se síťováním v Linuxu na všech vrstvách. Ujasníte si možnosti použití Linuxu v roli klienta, serveru i routeru.

  • Počítačové sítě
  • Architektura TCP/IP
  • Ethernet
  • Protokol PPP
  • Protokoly IPv4 a IPv6
  • IP na ethernetu
  • IP routing
  • Chybové a řídící zprávy
  • Transportní protokoly
  • Překlady jmen a adres
  • Aplikace
  • Překlady síťových adres a proxying
  • Testování sítě
  • Aktuální situace na poli TCP/IP

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 3,00

Přehled názorů

Super :)
Jakub Šťastný 11. 8. 2008 00:10
Nový
├ 
Re: Super :)
Adam Štrauch 11. 8. 2008 00:35
Nový
└ 
Re: Super :)
arnold 11. 8. 2008 08:20
Nový
Nejsem autor!
Adam Štrauch 11. 8. 2008 00:32
Nový
└ 
Re: Nejsem autor!
Petr Krčmář 11. 8. 2008 08:54
Nový
Nejsem autor!
Adam Štrauch 11. 8. 2008 00:34
Nový
Poznamka k typografii
marek 11. 8. 2008 07:25
Nový
└ 
Re: Poznamka k typografii
Dan Horák 11. 8. 2008 09:23
Nový
Typografie ZAVER
benzin 11. 8. 2008 11:15
Nový
par tipu a otazek
jakub vysoky [kvbik] 17. 8. 2008 13:34
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem