Přechod Subversion (SVN) → Git
- Petr Motejlek
- Člen | 293
No lol — co začalo jako přechod mezi SVN a Mercurial, skončilo jako přechod mezi SVN a GIT — škoda, že mě víc zaujal Mercurial…
- Ondřej Brejla
- Člen | 746
Co prosím? Pokud jsem správně četl, tak David zkouší obě varianty, protože si sám není jist, co je to pravé ořechové…
Nač stahovat kalhoty, když brod je ještě daleko, že ano ;-)
- David Grudl
- Nette Core | 8227
Teď se dívám, že na https://github.com/…mmits/master si ty revize nějak číslují, zajímalo by mě jak.
- Petr Motejlek
- Člen | 293
Warden napsal(a):
Co prosím? Pokud jsem správně četl, tak David zkouší obě varianty, protože si sám není jist, co je to pravé ořechové…
Nač stahovat kalhoty, když brod je ještě daleko, že ano ;-)
Viz post #41 ;) Stejně je to ale jedno; možná je dokonce i lepší, že Nette bude na Gitu, alespoň budu moct přihodit Nette přímo do projektu i s metadaty Gitu a občas udělám pull & update Nette na novou verzi, kterou po odzkoušení commitnu do Mercurial repository projektu ;).
- Ondřej Brejla
- Člen | 746
To je sice zajímavý post, ale to ještě David nevěděl, jaká to bude mít všelijaká úskalí, takže jak to dopadne se ještě neví ;-) Ale ono to nějak dopadne…:-)
- PetrP
- Člen | 587
David Grudl napsal(a):
Teď se dívám, že na https://github.com/…mmits/master si ty revize nějak číslují, zajímalo by mě jak.
Vypadá to že si jen čísla revizí sami píšou do komentářů ke commitům ;]
Jinak ten github je až k breku pomalej, a to jak „vygenerování“ stránky tak při renderování stránky mi na několik vteřin zamrzne i celej prohlížeč… ;/
- Nilp
- Člen | 65
Problemy s rychlosti jsou u GitHubu celkem zname, ale zda se ze se nejak resi, viz treba http://support.github.com/…me-very-slow. Jinak dalsi repository hosting pro Git je napr. Gitourious.
Editoval Nilp (16. 8. 2009 9:51)
- Jerry123456789
- Člen | 37
Jen takovej nápad k číslování revizí – na commit si na GitHubu
zavěsit hook-script (např na nette.org) který dostane json informace
o repository a commitu atd. (více v Guides). Ten by přidal do pole (např
serializovaného do souboru) info ve tvaru cislo_prave_pridane_revize ⇒
hash_prave_pridane_revize (cislo získat z komentáře regexpem, jako u toho
mangosu).
Takže by bylo možné jednoduše převádět mezi číslem revize a jejím
hashem (třeba url https://nette.org/hash2rev/562 a
/rev2hash/…, kvůli dostupnosti i na ne-nette webu, nebo na foru/nette webu
funkcemi(možná i jako dodatek k Texy syntaxi (jen tady na
fóru/dokumentaci))).
- abtris
- Člen | 2
Jenom by me zajímalo jak vyřeší se verzovaní v dokumentaci (phpdoc).
/**
* @version $Id$
*/
Právě kvůli tomuto problému jsem migroval projekty na Mercurial a ne na Git. Nechtělo se mi vracet se k ručnímu číslování. Linus má svůj názor k čemu RCS keywords a tak ani do budoucna se podpory v Gitu asi nedočkáme.
- David Grudl
- Nette Core | 8227
Zjišťuju, že jsem asi udělal blbost, když jsem nechat SVN přeimportovat do Gitu přes GitHub a ne přes git-svn, protože jsem si tím odřízl možnost zpětně mirrorovat změny na SVN. Takže asi nezbude než SVN definitivně poslat do věčných lovišt…
Na druhou stranu, proč vlastně SVN udržovat? Samotný GitHub nabízí dostatek prostředků, jak se zdrojáky pracovat, aniž by člověk Git měl (včetně stažení klonu jako archivu ZIP). Pro případ, že se rozhodne Git použít připravím lehký úvod k instalaci na stránku [download]. Vytvoření klonu je stejně snadné jako u SVN.
Posledním „důvodem“ zůstává svn:externals. Píšu v uvozovkách, protože automatické používání night build není zrovna košér praktika. Tady asi nezbude než je nahradit za volání odpovídajícího git příkazu.
(ps. teoreticky by možná šlo Git znovu převést do SVN)
- Honza Kuchař
- Člen | 1662
A nešel by napsat nějaký skript co by třeba přes exec vždy překopičil změny na SVN?
- Petr Motejlek
- Člen | 293
Nemám problém s tím, že je to na Gitu, jen ještě k tomu svn:externals — svn:externals se hodí, když projekt vyvýjí více lidí a někdo si dá tu práci, aby přes svn:externals nechal automaticky stahovat nějaký tag (verzi), se kterou zbytek aplikace v pohodě běží. Když jsem někde výše psal, že je škoda, že svn:externals není, neměl jsem na mysli, že nejde automaticky stahovat nejnovější verzi Nette, vadí mi, že teď, když přijde vývojář, tak musí stáhnout projekt, kde bude pracovat a pak ručně dostahovat správné verze Nette a Dibi ;). S svn:externals to šlo automatizovat na jeden svn checkout, který tomu člověkovi automaticky sosnul i správné verze Nette a Dibi — nicméně jak určitě někdo navrhne, i tohle se dá řešit jinak, podle mě by to mělo umět řešit nějak IDE už v rámci projektu (který si tak jako tak ten vývojář stejně musí stáhnout) — někde tam by mělo být napsáno, že projekt vyžaduje Nette a Dibi ve specifických verzích, které jdou nalézt na svých repozitářích — fakt ale nevím, jestli tohle nějaké samotné IDE řešit umí, troufal bych si říct, že by něco takového šlo řešit přes Maven, ale když jsem tuhle experimentoval s jeho podporou pro PHP, docela slušně jsem narazil :(.
Další, co mě docela zarazilo je následující: v repozitářích Nette i Dibi to je tak, že hned v kořeni je spousta věcí, které běžně vůbec nepotřebuju — extras, examples, 3rdParty, atd. — u svn jsem mohl checkoutovat např. nette.googlecode.com/svn/trunk/Nette a stáhlo se mi jen čisté Nette, bez příkladů apod. U Dibi je to to samé, tak jsem checkoutoval dibi.googlecode.com/svn/trunk/dibi a dostal jsem jen Dibi. Git tohle neumí (Nejspíš je to dáno tím, že metadata nejsou jako u Svn v celém stromu, ale jen v kořeni, který by se nestáhl, kdybych checkoutnul jen podadresář.), když nad tím ale přemýšlím, je otázka, jestli je vůbec dobře mít to takhle pohromadě v jednom repozitáři; vím, že ty věci spolu úzce souvisí (Nette příklady si bez samotného Nette pustím asi špatně.). Díky tomu, že vytvoření nového repozitáře „nic nestojí“ bych byl pro zvážení, jestli neudělat těch repozitářů víc — třeba jen Nette (kde budou fakt jen zrdojáky Nette) a Nette-additional (kde bude zbytek) — to stejné pro Dibi.
EDIT: Omlouvám se za dlouhý příspěvek :).
Editoval Petr Motejlek (19. 8. 2009 10:59)
- romansklenar
- Člen | 655
Ještě Davide svn repozitář na google codu nezabíjej prosím :) pokud budeš při vývoji na gitu používat tagování nějakých větších releasů jako 0.9.1 atd, tak se nabízím k tomu, že budu importovat tyto releasy do SVN pod tagy alespoň pro stable verze a tím je situace s externals vyřešená.
- David Grudl
- Nette Core | 8227
romansklenar napsal(a):
Ještě Davide svn repozitář na google codu nezabíjej prosím :) pokud budeš při vývoji na gitu používat tagování nějakých větších releasů jako 0.9.1 atd, tak se nabízím k tomu, že budu importovat tyto releasy do SVN pod tagy alespoň pro stable verze a tím je situace s externals vyřešená.
V podstatě to tak dělám – komituju tam stable release s dovětkem, že repozitář se přesunul.
- Petr Motejlek
- Člen | 293
Ještě mě napadla jedna věc — když se tady řešily ty hooky pro nové tagy, napadlo mě něco, co myslím, je zajímavější: všiml jsem si, že minified verze nejsou k dostání v Git repozitáři, ale pouze na stránkách Nette (a Dibi) v sekci Download — vím, že David používá nějaký skript na minifikaci; šlo by ten skript hooknout na každý commit? Automaticky by se mohly generovat minified verze ;).
- David Grudl
- Nette Core | 8227
Chtěl jsem to tak dělat (už na SVN), ale nepodařilo se mi na serveru zprovoznit generování phpDoc.
- Petr Motejlek
- Člen | 293
K čemu ten phpDoc používáš? Nenapadlo by mně, že pro generování minified verze to budeš potřebovat ;).
- David Grudl
- Nette Core | 8227
Pro minified verzi samozřejmě potřeba není. Chtěl jsem na server přesunout kompletní generování distribučních balíčků včetně API dokumentace a spouštět je přes post notifikaci, ale tím, že jednu část musím stále generovat na svém komplu, to ztratilo na efektivitě.
- jasir
- Člen | 746
Je zajímavé si toto vlákno si přečíst po téměř 4 měsících
pročítat.
Myslím, že všechny obavy s používání Gitu padly, nezaznamenal jsem zde
na fóru jediný problém. Git já osobně nyní používám už 8 měsíců a
jsem navýsost spokojen. Docela hodně by mě zajímalo, kolik lidí tady
z fóra se na základě (nejen) tohoto vlákna rozhodli přejít na Git a jak
jsou spokojeni oni…
Já se v podstatě potýkám (dělam na Windows) jen s různými
konci řádků CR/LF, které
se někdy prostě rozhodnou chovat
divně. Většinou to napravím pomocí config directivy autocrlf, ale nějak
jsem asi nepochopil její význam, někdy tam musí být input, někdy true,
někdy false :-), už jsem z toho volaký zmatený. Nevíte někdo jak tohle
jednou provždy vyřešit?
Petr Motejlek napsal(a):
Další, co mě docela zarazilo je následující: v repozitářích Nette i Dibi to je tak, že hned v kořeni je spousta věcí, které běžně vůbec nepotřebuju — extras, examples, 3rdParty, atd. — u svn jsem mohl checkoutovat např. nette.googlecode.com/svn/trunk/Nette a stáhlo se mi jen čisté Nette, bez příkladů apod.
a pak tento „pseudo“ problém. Sám ho řeším tak, že mám
v hlavních adresářích nette,dibi soubor netterobots.txt zakazující
přístup do examples apod.
Myslím, že by to ani v distribuci ničemu neuškodilo.
Jinak co se týče nástrojů, TortoiseGit nyní prakticky využívám ke
změně ikonek v systému, nejlépe se mi
pracuje v příkazové řádce a git-nativním grafickém nástroji (tak 70% ku
30% pro shell).
A na závěr takový malý tip pro uživatele PhpEdu : hoďte si do gitu jeho configurační adresář.
Editoval jasir (21. 11. 2009 5:03)
- Honza Kuchař
- Člen | 1662
Já bych rád přešel, ale potřebuji rozjet server pod Windows. (nějak jednoduše) Na SVN používám: http://www.visualsvn.com/server/ . Instalace tak minuta a konfigurace tak 2 :)
- Ondřej Mirtes
- Člen | 1536
honzakuchar napsal(a):
Já bych rád přešel, ale potřebuji rozjet server pod Windows. (nějak jednoduše) Na SVN používám: http://www.visualsvn.com/server/ . Instalace tak minuta a konfigurace tak 2 :)
Git žádný server nepotřebuje, jen SSH přístup :) A případně nějakého daemona pro rozjetí protokolu git:// pro klonování veřejných repozitářů.
jasir: Ty další složky jednoduše do libs/ k tvému projektu nepatří, jen ta podsložka Nette. V repozitáři jsou, protože reflektují aktuální stav frameworku (když je nějaká zásadní změna, David aktualizuje i examples a tests).
- Honza Kuchař
- Člen | 1662
SSH přístup bude asi pod Windows dost problém ne? :) (možná by se dal zařídit telnet, ale nevím k čemu by to bylo dobré) Prý stačí prostě vysdílet složku a je to. Ale jak se pak řeší atomicita a konflikty? A jak se to potom dostane mezi lidi?? Zase veřejně vysdílím read-only a už si s tím udělají co chcou? Prostě moc nechápu ten princip jak se ty data skladují, šíří atd.
- edke
- Člen | 198
jasir wrote:
Je zajímavé si toto vlákno si přečíst po téměř 4 měsících pročítat.
Myslím, že všechny obavy s používání Gitu padly, nezaznamenal jsem zde na fóru jediný problém. Git já osobně nyní používám už 8 měsíců a jsem navýsost spokojen. Docela hodně by mě zajímalo, kolik lidí tady z fóra se na základě (nejen) tohoto vlákna rozhodli přejít na Git a jak jsou spokojeni oni…
Rovnako som na zaklade tohto vlakna pricuchol ku gitu a uz som pri nom zostal. Velmi si pochvalujem, ulahcil mi kopec prace, ktora vznikala pri pouzivani svn. Hlavne moznost lokalneho branchovania a skveleho mergovania. Najvacsie problemy mam s git svn rebase, kedze vo firme stale pouzivame ako hlavne uloziste subversion a ja cez git z neho checkoutjem a spatne do neho komitujem. Problemy nastavaju, ked dlhsie nespravim svn rebase a potom skladam pracne dokopy moje vacsie lokalne zmeny so zmenami v svn. Ak to robim casto, problemy takmer ziadne nie su.
Pisem v netbeans, tam podpora git-u cez plugin je nedostacujuca. Pouzivam ho preto vylucne v konzole pod linuxom. Niektore operacie su dlhsie, ine zas ovela efektivnejsie, je to otazka zvyku asi.
- Ondřej Mirtes
- Člen | 1536
honzakuchar napsal(a):
SSH přístup bude asi pod Windows dost problém ne? :) (možná by se dal zařídit telnet, ale nevím k čemu by to bylo dobré) Prý stačí prostě vysdílet složku a je to. Ale jak se pak řeší atomicita a konflikty? A jak se to potom dostane mezi lidi?? Zase veřejně vysdílím read-only a už si s tím udělají co chcou? Prostě moc nechápu ten princip jak se ty data skladují, šíří atd.
Hele, já nevím, já ho na Windows používám jen jako uživatel :)
Tady to řeší nějak přes cygwin: http://stackoverflow.com/…y-in-windows
- Honza Kuchař
- Člen | 1662
Jaký je rozdíl mezi GITem a Mercurialem? Mercurial se zdá na Windows jede… http://mercurial.selenic.com/wiki/Download?…
- jasir
- Člen | 746
Ondřej Mirtes napsal(a):
jasir: Ty další složky jednoduše do libs/ k tvému projektu nepatří, jen ta podsložka Nette. V repozitáři jsou, protože reflektují aktuální stav frameworku (když je nějaká zásadní změna, David aktualizuje i examples a tests).
Tak…to vím, ne? ;-)
Chci mít v adresáři libs nette a chci ho mít jako git submodule. Git si neumí naklonovat jen pod-adresář z celého projektu. Proto mám v libs kompletní nette. Ale v examples najdu například třídu např. BasePresenter. Proto tam musím dát to netterobots.txt. Pak vše funguje a pro vývoj je to pro mě ok.
- Patrik Votoček
- Člen | 2221
honzakuchar napsal(a):
Jaký je rozdíl mezi GITem a Mercurialem? Mercurial se zdá na Windows jede… http://mercurial.selenic.com/wiki/Download?…
http://whygitisbetterthanx.karmi.cz/ snad odpoví…
- Honza Kuchař
- Člen | 1662
Pro ostatní co používají i nadále SVN: http://blog.moxiecode.com/…svn-support/ Doufám, že to není fake. :)
//EDIT: Není, tady je originální článek: https://github.com/…-svn-support
Editoval honzakuchar (28. 4. 2010 14:50)