Proč bych měl přejít ze SVN na GIT? (vážně)

Proč bych měl přejít ze SVN na GIT? (vážně)
« kdy: 30. 07. 2014, 13:19:12 »
Poslední dobou jsem obklopen lidmi, kteří "jedou na gitu" doslova to tak cítím, protože se kolikrát chovají jak ujetý jako by jeli v nějakých drogách. Git je úžasný, git je světový trend, zapomeň na cokoliv jiného, všechno bude git

Jsem šťastný uživatel SVN pro jeho jednoduchost. Ke své práci potřebuji commit, update a občas nějaký to branch a merge. Bohužel jsem už několikrát narazil na nutnost s gitem pracovat a vždycky jsem se ztratil v přehršli příkazů v příkazové řádce a možnostech, o kterých pochybuju, že někdy využiju (momentálně zápasim s chromiem, který má ještě nad gitem nějakou vlastní šílenou nadstavbu - proč asi?)

Předem upozorňuji, že nechci a v budoucnu neplánuji pracovat na distribuovaných repozitářech a spolupracovat na opensource projektech. Takže rovnou vynechte tuhle "výhodu".


Tadeas

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #1 kdy: 30. 07. 2014, 13:39:04 »
Používej Perforce :-P

pecko

  • ***
  • 105
    • Zobrazit profil
    • E-mail
Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #2 kdy: 30. 07. 2014, 13:44:24 »
Precitaj si toto http://stackoverflow.com/questions/871/why-is-git-better-than-subversion (myslim aj ostatne reakcie) a sprav si vlastny nazor. :)

Vzdy lepsie, ako tu zacinat flame.  8)

Sten

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #3 kdy: 30. 07. 2014, 13:45:49 »
Git má mnohem lepší merge conflict resolver pro případy, kdy se rozejde tvoje a remote branch, a má mnohem rychlejší branchování. Těch příkazů je hodně právě kvůli problémům v distribuovaném verzování (např. možnost spojení historií lokální a remote branche, podpora digitálních podpisů, řízené přetahování commitů, práce na tisících paralelních branchí ap.). Pokud na něčem děláš sám, tak ani jedno nevyužiješ a je pak zbytečné opouštět SVN, pokud jsi na něj zvyklý.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #4 kdy: 30. 07. 2014, 13:53:25 »
Git má mnohem lepší merge conflict resolver pro případy, kdy se rozejde tvoje a remote branch, a má mnohem rychlejší branchování. Těch příkazů je hodně právě kvůli problémům v distribuovaném verzování (např. možnost spojení historií lokální a remote branche, podpora digitálních podpisů, řízené přetahování commitů, práce na tisících paralelních branchí ap.). Pokud na něčem děláš sám, tak ani jedno nevyužiješ a je pak zbytečné opouštět SVN, pokud jsi na něj zvyklý.

Tady bych se možná zastavil, protože z mého pohledu práce na tisících paralelních branchí a velkých projektech obecně není podle mě dobrý styl. Konečně podívej se na zdrojáky webkit/chromium. To je slepenec bez vnitřní organizace, ve kterém se prakticky nedá vyznat, na různých místech se střídají programátorské styly, někde dokonce i několik na jedné řádce. Git možná vede k takovým možnostem, ale je to opravdu správný způsob vývoje? z mého pohledu má git spoustu možností, které bych spíš zakázal pro vývoj v menším teamu.


pecko

  • ***
  • 105
    • Zobrazit profil
    • E-mail
Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #5 kdy: 30. 07. 2014, 13:59:02 »
Tady bych se možná zastavil, protože z mého pohledu práce na tisících paralelních branchí a velkých projektech obecně není podle mě dobrý styl. Konečně podívej se na zdrojáky webkit/chromium. To je slepenec bez vnitřní organizace, ve kterém se prakticky nedá vyznat, na různých místech se střídají programátorské styly, někde dokonce i několik na jedné řádce. Git možná vede k takovým možnostem, ale je to opravdu správný způsob vývoje? z mého pohledu má git spoustu možností, které bych spíš zakázal pro vývoj v menším teamu.

Za to ale Git nemoze. To je vecou code review a workflow. Rovnaky bordel spravis podla mna aj pomocou SVN.

To je to iste, ako nadavat na kombinacky, ze poohybali klince, ktore nimi nejaky "odbornik" zatlkal.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #6 kdy: 30. 07. 2014, 14:50:02 »
z mého pohledu práce na tisících paralelních branchí a velkých projektech obecně není podle mě dobrý styl
Tisíce paralelních větví umožňují například mít repository s kódem, který lze vždy přeložit, aniž by všichni museli mít nejaktuálnější verze všeho. Prostě bude několik větví, každá z nich samostatně půjde přeložit, ale např. ve větvi s optimalizací JavaScriptu budu mít původní vykreslovací jádro a nemusí mne trápit, že ve vedlejší větvi kolegové zrovna optimalizují vykreslovací jádro a ne všechny jejich pokusy jsou stabilní a vhodné pro situace, kdy mi má prohlížeč běžet déle než jednu sekundu.
Další možností je třeba to, že na jedné části kódu může pracovat víc lidí, a nemusí si upravené zdrojáky posílat e-mailem nebo předáváním svých částí zaplevelovat hlavní vývojovou větev.

Konečně podívej se na zdrojáky webkit/chromium. To je slepenec bez vnitřní organizace, ve kterém se prakticky nedá vyznat, na různých místech se střídají programátorské styly, někde dokonce i několik na jedné řádce.
To s verzovacím systémem nemá vůbec nic společného.

Pokud verzovací systém používáte jenom sám, viděl bych dvě výhody použití distribuovaného VCS oproti SVN: za prvé lepší podpora větví a řešení konfliktů, za druhé to, že celé repository máte v jednom adresáři a nepotřebujete žádný server.

Pedro

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #7 kdy: 30. 07. 2014, 15:01:25 »
Precti si tohle: http://hginit.com/00.html
Je to velice dobre vysvetleni rozdilu distribuovany VCS vs. centralizovany VCS, i kdyz je to o Mercurial.

pavelpotocek

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #8 kdy: 30. 07. 2014, 15:04:23 »
GIT není složitější používat než SVN. Není třeba používat komplikované příkazy. Commit, checkout, branch, merge a tak 3 další člověk používá pořád a mají své účely, žádný zmatek/složitost nehrozí. Já nepoužívám SVN když nejsem donucený, takže nemůžu moc porovnávat. Kvůli tomuhle dva projekty co znám přešly na GIT:

1. možnost commitovat offline a dělat vlastně cokoliv offline (úprava SW robota v terénu);
2. možnost využívat větve, commity atd. na lokálu, jednoduše a rychle (pro malé úpravy, vlastní potřebu aj.)
3. úžasná rychlost _všeho_ (oproti SVN);

Možná některé důvody pramení pouze z neznalosti správců projektu, nevím :-) SVN mi přijde jako že je jen taková lehká nadstavba nad ručním kopírováním složek, kdežto GIT posouvá abstrakci výš. Práce s ním je mnohem čistší a působí robustněji.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #9 kdy: 30. 07. 2014, 15:06:01 »
z mého pohledu práce na tisících paralelních branchí a velkých projektech obecně není podle mě dobrý styl
Tisíce paralelních větví umožňují například mít repository s kódem, který lze vždy přeložit, aniž by všichni museli mít nejaktuálnější verze všeho. Prostě bude několik větví, každá z nich samostatně půjde přeložit, ale např. ve větvi s optimalizací JavaScriptu budu mít původní vykreslovací jádro a nemusí mne trápit, že ve vedlejší větvi kolegové zrovna optimalizují vykreslovací jádro a ne všechny jejich pokusy jsou stabilní a vhodné pro situace, kdy mi má prohlížeč běžet déle než jednu sekundu.
Další možností je třeba to, že na jedné části kódu může pracovat víc lidí, a nemusí si upravené zdrojáky posílat e-mailem nebo předáváním svých částí zaplevelovat hlavní vývojovou větev.

Ale to SVN umi taky a neni to problem. Jde jen o to, ze ty vetve jsou verejne a dostupne vsem (takze se neztrati, kdyz kolega jednoho dne neprijde do prace a nikdo dalsi nebude mit heslo k jeho PC)

Hodně často narážím u evangelistů GITu na základní neznalosti práce v SVN. Je to úsměvné.

Konečně podívej se na zdrojáky webkit/chromium. To je slepenec bez vnitřní organizace, ve kterém se prakticky nedá vyznat, na různých místech se střídají programátorské styly, někde dokonce i několik na jedné řádce.
To s verzovacím systémem nemá vůbec nic společného.
No spíš to souvisí s myšlenkou distribuovaného vývoje. Nikdy jsem tu myšlenku moc nepobral. To už víc podporuju myšlenku centralizovaných ostrovních problémů, které se vyvýjejí separátně. Shodou okolností to vychází vstříct TDD.

Citace
Pokud verzovací systém používáte jenom sám, viděl bych dvě výhody použití distribuovaného VCS oproti SVN: za prvé lepší podpora větví a řešení konfliktů, za druhé to, že celé repository máte v jednom adresáři a nepotřebujete žádný server.

SVN umí být taky v jednom adresři, ale spatřuju jeho hlavní výhodu oddělené WC od repozitáře. Dokonce dneska už ani neplatí to, že by adresář .svn byl v každém podadresáři, takže to oddělení je úplné (i od metadat). U soliterního vývoje mívám repozitář na jiném disku než je WC...proč asi? Ale spíš vyvíjím přes vlastní server, umožňuje mi to na různých zařízeních mít okamžite přístup k aktuální verzi zdrojáků (jasně, taky mám dropbox, ale tohle je víc pod kontrolou)

Velké projekty řeším přes externals a přes schopnost SVN mergovat napříč repozitáři (jo, drtivá většina uživatelů to neví, že to jde - tohle by možná bylo dobré podpořit, třeba nějakým automatizovaným nástrojem)

JmJ

  • ****
  • 315
    • Zobrazit profil
Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #10 kdy: 30. 07. 2014, 15:09:09 »
Moje zkusenosti:

SVN:
+ snadno sem rozjel server na Linuxu a bezi bezproblemove
+ snadno sem se se SVN naucil
+ dobra podpora ve windows (dobre fungujici tortoiseSVN)
+ dobra podpora pro VisualStudio snad od 2005 (ankhSvn)
+ intuitivni gui ve widlo pruzkumniku - co je cervene, tam je zmena, to bych mel commitnout, aby to videli ostatni
+ par verzi zpet podle me normalne fungujici branch a merge branchu/trunku, vytvoritelny snadno na par kliku pres tortoise
- nema lokalni commity

GIT:
+ ma lokalni commity
- neni schopen rict zadna kloudna chybova hlaseni, 10 minut provadi pull aniz by rekl, ze k serveru se neda pripojit
- server sem rozjizdel asi 3 hodiny (gitblit), protoze maji v dokumentaci odkaz na uplne starou verzi
- naprosto divne ovladani konzoly
- neexistence pluginu pro Visual Studio (ty, ktere jsou uplne k nicemu, nepocitam), snad 2013 pry ma podporu z vyroby, nezkousel jsem
- tortoise Git sice docela jede, ale take neni schopny normalne reagovat na chybove stavy (asi proto, ze git samotny je toho neschopen, viz druhy bod)
- gui rozsireni tortoisu pro pruzkumnika neni tak intuitivni jako pro svn. co je zelene, je commitle, ale nikde neni videt, ze od posledniho commitu sem neudelal push, takze kdyz mam projekt z X repozitaru, tak pro sichr pushuju jak debil X repozitaru, abych mel jistotu, ze se to dostane ostatnim (ano, jiste existuji nejaka super kouzla, ale ja chci jen rychle dostat veci na server)
- chyby v samotnem gitu, kdy behem pushe git zamrzne a 30 minut je tuhy a pomuze jen zabit. known bug, zkuste verzi X.y, tam to jeste nedelalo nebo a.b tam uz to nedela. verze a.B se vam pobije s nastrojem git slave, ktery jede jen s verzi q.w atd.


Git je jiste mocny nastroj, o tom neni pochyb. Ale na to, jak je to udajne super vec a vsichni ji uzivaji atd, tak mi prijde jako docela nedomrdly. Podpurne nastroje jsou take nedotazene. Sami lide, kteri s gitem delaji treba 5 let, maji obcas problem s nim nektere veci vybojovat.

Znam velke a slavne firmy, ktere jedou na svn a ziji v pohode a problem nemaji. Ovsem lokalni commity se mi libi, to ne ze ne :-)

Opravdu neni mim cilem tvrdit, ze git je smejd. Rad si necham poradit nejake figle. Ovsem toho, co se kolem gitu clovek musi naucit je tak 5x tolik, co potrebuje znat pro svn.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #11 kdy: 30. 07. 2014, 15:10:58 »
1. možnost commitovat offline a dělat vlastně cokoliv offline (úprava SW robota v terénu);
Nikdy jsem nic takového nepotřeboval a nevidím jediné využití. Pro historii používám Eclipse Local History. A bez toho není problém pustit skript na generování patchů oproti Base a ty ukládat někam bokem (vyřeší se tím funkce jak stach tak commit),

2. možnost využívat větve, commity atd. na lokálu, jednoduše a rychle (pro malé úpravy, vlastní potřebu aj.)

WC je vždycky bráno jako větev vůči stavu na serveru. Vytvářet větve ve větvi mi nepřišlo nikdy zajímavé. V rámci SVN si mohu vytvořit víc WC a pak každou považuju za větev. Pokud ukončím vývoj ve větvi, je nutné to commitnout na sevrer, protože hrozí, že to zapomenu (což je větší průser, než tam commitnout blbost)

3. úžasná rychlost _všeho_ (oproti SVN);

Nikdy jsem neměl problém s rychlostí operací. Rychlost sítě byla vždycky víc limitující faktor (práce přes mobilní připojení) A rychlost překladu ještě víc limitující. Tohle mi příjde jako virtuální problém.


Franta.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #12 kdy: 30. 07. 2014, 15:16:58 »
Osobně používám Mercurial (má mj. logičtější ovládání než Git... ale tenhle flame sem teď nechci zatahovat), nicméně ty výhody jsou společné pro distribuované verzovací systémy obecně.

Velkou výhodou je možnost pracovat offline, můžeš dělat commity, procházet historii nebo zkoumat starší verze... klidně i na pomalé nebo padající VPNce nebo úplně bez připojení. Více najdeš v seriálu Distribuované verzovací systémy

Pedro

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #13 kdy: 30. 07. 2014, 15:18:29 »
1. možnost commitovat offline a dělat vlastně cokoliv offline (úprava SW robota v terénu);
Nikdy jsem nic takového nepotřeboval a nevidím jediné využití. Pro historii používám Eclipse Local History. A bez toho není problém pustit skript na generování patchů oproti Base a ty ukládat někam bokem (vyřeší se tím funkce jak stach tak commit),

Jo, tak tohle se mi uz hodilo.
Tri tydny u zakaznika na miste, delam zmeny. Kolegove zatim v materske firme vyvijeji dal.
Po navratu chci moje zmeny i s historii mergovat do hlavni verze, na ktere zatim kolegove pracovali.

Se Subversion docela narez.
Resil jsem to pomoci hgSubversion (Mercurial jako Subversion-Klient).

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #14 kdy: 30. 07. 2014, 15:21:34 »
1. možnost commitovat offline a dělat vlastně cokoliv offline (úprava SW robota v terénu);
Nikdy jsem nic takového nepotřeboval a nevidím jediné využití. Pro historii používám Eclipse Local History. A bez toho není problém pustit skript na generování patchů oproti Base a ty ukládat někam bokem (vyřeší se tím funkce jak stach tak commit),

Jo, tak tohle se mi uz hodilo.
Tri tydny u zakaznika na miste, delam zmeny. Kolegove zatim v materske firme vyvijeji dal.
Po navratu chci moje zmeny i s historii mergovat do hlavni verze, na ktere zatim kolegove pracovali.

Se Subversion docela narez.
Resil jsem to pomoci hgSubversion (Mercurial jako Subversion-Klient).

Tohle umím. Repo si vyexportuju a vlozim do lokalni SVN repozitory. To je operace na par kliknuti. Nasledne do toho normalne commituju. Az se vratim do materske firmy, vytahnu si revizi, ze ktere jsem to vyexportoval, zamerguju cely lokalni repozitar do te revize, zamerguju tam zmeny provedene mezitim (nebo proste udelam update), zkontroluju, commitnu. Pokud se to protahne, protoze tam je moc konfliktu, resim to pres branch, do ktereho nakopiruju moji verzi z lokalniho svn. Cele to zabere par minut a hodi se to jen... obcas