Přechod Subversion (SVN) → Git

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Petr Motejlek
Člen | 293
+
0
-

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
+
0
-

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 | 7823
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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 | 7823
+
0
-

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)

Jod
Člen | 701
+
0
-

Veľké veci si žiadajú veľké obete :D

nAS
Člen | 277
+
0
-

Zrovna jsem se chtěl zeptat, zda by šlo GIT mirrorovat zpět na SVN :) No co už, holt nainstaluji TortoiseGit.

Honza Kuchař
Člen | 1661
+
0
-

A nešel by napsat nějaký skript co by třeba přes exec vždy překopičil změny na SVN?

David Grudl
Nette Core | 7823
+
0
-

Napiš, použiju ho.

Petr Motejlek
Člen | 293
+
0
-

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
+
0
-

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 | 7823
+
0
-

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
+
0
-

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 | 7823
+
0
-

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
+
0
-

K čemu ten phpDoc používáš? Nenapadlo by mně, že pro generování minified verze to budeš potřebovat ;).

David Grudl
Nette Core | 7823
+
0
-

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ě.

Petr Motejlek
Člen | 293
+
0
-

Tomu rozumím, to musí být otrava…

Cifro
Člen | 245
+
0
-

Prednaška o gite.

GitCasts: RailsConf Git Talk

jasir
Člen | 746
+
0
-

Když už je Nette na githubu, nestálo by za to začít používat i integrovaný Issue Tracker? Takto jsou bygy často skrýté někde na fóru, jejich hlášení se opakují a je poměrně komplikované udržet si přehled co je a co není fixnuto.

jasir
Člen | 746
+
0
-

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 | 1661
+
0
-

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
+
0
-

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 | 1661
+
0
-

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
+
0
-

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
+
0
-

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 | 1661
+
0
-

Jaký je rozdíl mezi GITem a Mercurialem? Mercurial se zdá na Windows jede… http://mercurial.selenic.com/wiki/Download?…

jasir
Člen | 746
+
0
-

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
+
0
-

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 | 1661
+
0
-

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)