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

dustin

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #60 kdy: 31. 07. 2014, 00:19:31 »
Bod 3 ve windows bych vyřadil.

Pokud nemáš ve windows plnohodnotný git, tak bych se na něj vybodl a používal něco, co tam funguje tak, jak má. Git byl primárně navržený pro unixové filestémy a do windows je víceméně dohackovaný.


Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #61 kdy: 31. 07. 2014, 00:28:06 »
Bod 3 ve windows bych vyřadil.

Pokud nemáš ve windows plnohodnotný git, tak bych se na něj vybodl a používal něco, co tam funguje tak, jak má. Git byl primárně navržený pro unixové filestémy a do windows je víceméně dohackovaný.

Tenhle argument se mi líbí bez legrace. Ti co o tom rozhodují musí slyšet na jednoduchá hesla. No a zrovná má specifika je to, že umím v systému, kterému moc lidi nerozumí a takový argument by mi pomohl vyjednat si aspoň výjimku. Dík

Sten

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #62 kdy: 31. 07. 2014, 00:32:31 »
Bod 3 ve windows bych vyřadil.

Protože je to adresář, tak ve Windows lze použít NTFS junction point.

git clone --single-branch --branch větev URL

Vyzkouším zítra. Nicméně podle toho jak funguje clone se bojím, že stejně skončim s celým webkitem a chromiem v separátním adresáři. Nebo ne?

Nemělo by. Tohle stáhne kompletní historii té jedné větve a nic jiného. Pokud chceš omezenou historii, můžeš tam místo --single-branch dát --depth kolik_commitů_zpět.

git commit -a --amend ;)

nepochopil jsem odpověď, záměrem bylo zjistit, jaké všechny činnosti navíc musejí dělat programátoři v git a jak často.

Tohle byla reakce na to, že ty dvě věci jsou vlastně jedna změna.

Nemusejí dělat nic či to můžou dělat úplně stejně jako v SVN. Ale protože commity jsou velmi levné, tak je vhodné je dělat často a s malými, snadno pochopitelnými změnami. Třeba stažení a použití souboru z URL uvedeného v nastavení včetně GUI:
  • Přidám rozhraní pro použití toho souboru - commit
  • Přidám stažení souboru a použití toho rozhraní - commit
  • Přidám callback vyvolávaný stahováním (kolik staženo z kolika) - commit
  • Implementuji GUI pro ten callback - commit
  • Přidám možnost zrušení stahování do toho GUI - commit
  • Přidám načtení URL z nastavení - commit
  • push

Pokud něco z toho se ukáže jako problematické, můžu se kdykoliv vrátit, stejně tak lze snadno vyhledávat, která část do toho zavlekla chybu, kterou objevím až na konci. Nebo to můžu squashnout (= spojit více commitů) či místo commit použít amend commit (= přidat další změnu do posledního commitu), pokud mi nějaké commity přijdou zbytečně malé. A přitom je to jeden ticket, tedy v SVN by to nejspíš byl jen jeden commit (protože mezilehlé commity to taky můžou kolegům rozbít).

dustin

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #63 kdy: 31. 07. 2014, 00:47:13 »
Ti co o tom rozhodují musí slyšet na jednoduchá hesla. No a zrovná má specifika je to, že umím v systému, kterému moc lidi nerozumí a takový argument by mi pomohl vyjednat si aspoň výjimku. Dík

Ti, co o tom rozhodují, by tomu především měli rozumět. Výjimky v pevně daném procesu jsou peklo a jejich akceptace musí být sakramentsky dobře zdůvodněná. Pokud tým z nějakých zásadních a také dobře promyšlených důvodů přejde na nové SCM, nedovedu si představit, že někdo z týmu zůstane na jiném.

A upřímně, pokud celou dobu hledáš důvody, proč něco nejde, místo aby ses snažil se to naučit, najít cestu, jak by to šlo, tak být tím, kdo to rozhoduje, akceptoval bych dočasnou výjimku a začal hned intenzivně hledat náhradu za toho, kdo na té výjimce trvá.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #64 kdy: 31. 07. 2014, 01:05:10 »
A upřímně, pokud celou dobu hledáš důvody, proč něco nejde, místo aby ses snažil se to naučit, najít cestu, jak by to šlo, tak být tím, kdo to rozhoduje, akceptoval bych dočasnou výjimku a začal hned intenzivně hledat náhradu za toho, kdo na té výjimce trvá.

Celé je to o tom PROČ by se měl měnit zaběhnutý systém? Proč by měla společnost s centrálními repozitáři přecházet na git? OpenSource pravděpodobně nevyvíjí a pokud už, tak bez externích kontributorů


Sten

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #65 kdy: 31. 07. 2014, 01:44:50 »
A upřímně, pokud celou dobu hledáš důvody, proč něco nejde, místo aby ses snažil se to naučit, najít cestu, jak by to šlo, tak být tím, kdo to rozhoduje, akceptoval bych dočasnou výjimku a začal hned intenzivně hledat náhradu za toho, kdo na té výjimce trvá.

Celé je to o tom PROČ by se měl měnit zaběhnutý systém? Proč by měla společnost s centrálními repozitáři přecházet na git? OpenSource pravděpodobně nevyvíjí a pokud už, tak bez externích kontributorů

Třeba protože mají více než jednoho vývojáře

Mudrlant

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #66 kdy: 31. 07. 2014, 03:43:48 »
Pokud hledáte opravdu něco, co má SVN a GIT z principu nemůže, tak Vám napovím.
Jsou to uživatelská práva.
V SVN můžete definovat uživatelská práva na úrovni jednotlivých adresářů, větví, tagů. atd.
Pokud do SVN musejí přistupovat různí přispěvatelé s různými právy k různým částem projektu, je SVN v tomto lepší.
Což je výhodné např. v korporátním prostředí, kde paranoidní manažer bude chtít části projektu mezi lidmi skrývat.

V GITu máte pouze Read nebo Read-Write pro celé repository. Možná ty neptrřičné zápisy do repoí jdou zjemnit nějakým hook skriptem, ale přečíst se dá prostě celé repository.
Jde to samozřejmě obejít rozdrobením na menší repository, kde ke každému bude mít práva jen skupinka vyvolených, ale je to nepohodlné (když chcete aktualizovat projekt, musíte pracovat s vícero repository ...).
A nemůžete dané schéma práv změnit, protože rozdělení na projekty už zafixováno.

Pokud pracujete v korporátní paranoidní sféře, která ráda pečlivě od sebe odděluje přispěvatele jemně definovaných částí projektu, bude SVN lepší.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #67 kdy: 31. 07. 2014, 07:05:37 »
Přesně tak, hlavně zásadní "výhodu" spatřuju v tom, že v centrálně řízené organizaci není DVCS nutný, naopak jednotlivý programátoři musí být zastupitelní
Žádné přesně tak, způsob řízení ani zastupitelnost programátorů vůbec nesouvisí s tím, zda vyvíjíte na jedné společné hromadě zdrojáků, nebo zda vyvíjíte tak, že vytváříte a aplikujete jednotlivé změny.

Zatím jsem jen slyšel, že je to moderní standard.
Záleží na tom, čemu říkáte "slyšel". Pokud tomu, že to "zaznělo" ve vaší přítomnosti, pak jste toho slyšel mnohem víc. Pokud tomu, že jste to vzal na vědomí, protože je to v souladu s tím, co slyšet chcete, pak jste toho asi opravdu o moc víc neslyšel - ale není to chyba ostatních diskutujících.

Obdivuju váš čas si s tím hrát. Já zpravidla programuju lineárně. Bych si klidně udělal tisíce větví, beztak by tam jen hnily.
Pracuju na nějaké větší změně, mezi tím přijde někdo, že pro jeho změnu potřebuje nějakou úpravu ode mne. Pak zase já pro tu větší změnu potřebuju úpravu od někoho jiného a musím počkat, než ji dodělá, tak mezi tím dělám na něčem jiném. A do toho je potřeba průběžně opravovat chyby, které se objeví. Pokud můžete dělat vždy jen na jedné věci a nemusíte opravovat žádné chyby,  asi můžete programovat lineárně. Ale moc vás takových nebude.

Celé je to o tom PROČ by se měl měnit zaběhnutý systém? Proč by měla společnost s centrálními repozitáři přecházet na git?
Protože pak vývojáři pracují efektivněji. Netráví čas zbytečně opakovaným prováděním těch samých změn na zdrojových kódech (různé větvení a spojování), místo toho se mohou věnovat vývoji. Ale jak už jsem psal, vývojáři jsou často velmi konzervativní a neměnit zaběhnutý systém je často velice silný argument pro starý systém. Ostatně vidíme to na vás.
Jinak pokud vám připadá Git složitý na používání, zkuste Mercurial - podle mne je o něco jednodušší, protože nemá tolik možností. Třeba napodobit v něm věrně práci s SVN myslím nejde (nebo jen velmi krkolomně), takže by vás to aspoň nelákalo a naučil byste se to rovnou používat správně.

Martin

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #68 kdy: 31. 07. 2014, 07:39:31 »
Doporučuji si přečíst prvních několik kapitol z knihy Pro Git (http://knihy.nic.cz/files/nic/edice/scott_chacon_pro_git.pdf) a vše si prakticky vyzkoušet.

Trupik

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #69 kdy: 31. 07. 2014, 08:34:08 »
Tiež som bol dlho spokojným používateľom SVN. Potom som ale robil na jednom veľkom projekte (veľa súborov) a tam každá operácia nad SVN trvala rádovo minúty (po lokálnej sieti!). Svätá trojica svn status, svn commit a svn update zabrala kľudne štvrť hodiny. Potom som ten istý strom na skúšku inicializoval do GIT-u - a tam boli operácie obvykle hotové do sekundy. To ma presvedčilo, aby som GIT začal brať vážne.

V prechode na GIT mi veľmi pomohla kniha ProGit v češtine, odkazovaná vyššie. Podľa nej som to nakoniec dal a som veľmi rád, že som to urobil.

Lemming

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #70 kdy: 31. 07. 2014, 08:50:01 »
Dobrý troll vlákno :D Ale přidám se:

Dělám hlavně v SVN. Jeden mini projekt (1000 souborů) a tam je SVN fakt pomalá, checkout trvá několik minut (možná je to tím, že je repository na sevreru na Amazon virtuálu?). Hledání v historii je tam prakticky nepoužitelné.

Pak trochu větší projekt (na jiném prostředí, asi 10 tisíc souborů), tam původně byla SVN taky dost pomalá, pak to nějak rozběhali, takže teď je, řekněme, přijatelně pomalá. Ale pořád třeba oanotovat soubor není nic co by bylo bleskem. Opravdu by mě zajímalo jak to Ondra dělá, že na SVN údajně nečeká.

Dělám dost často cherrypicking oprav, přes Tortoise SVN to byl pain in the ass, teď jsem se naučil pořádně používat SVN plugin v IntelliJ IDEA a je to už jen pain.

GIT používám na jednom menším projektu, člověk si musel zvyknout na trochu odlišnou filozofii, ale ve chvílí kdy ji pochopí, tak je to naopak lepší.

Třeba jedna věc, která mě v SVN dost žere: Dělám na nějaké feature, která změnila soubor X a ještě to není ve stavu, kdy bych to chtěl commitnout do repository. Pak to musím přerušit (čekání na součinnost / priorita) a chci dělat na věci, kde potřebuju taky změnit soubor X, třeba na nějakém jiném místě. No a máme problém, pánové. V GITu bych prostě commitnul částečnou implementaci, nepushoval. Pak bych se pustil do té nové věci a až bych ji dodělal, tak bych ji normálně commitnul a pushnul a mohl se vrátit k původní. V SVN můžu maximálně tak vytvořit vlastní branch (v repository používaném větším množstvím lidí nemyslitelné), nebo si to můžu vycheckoutovat do jiného adresáře, provést změnu tam, commitnout a zase smazat, ale to je dost práce a proč se drbat za levým uchem pravou rukou, když bych se tam mohl podrbat levou, že...


MBig

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #71 kdy: 31. 07. 2014, 09:15:36 »
Řeknu to takhle - naučit se Vim nebo Emacs taky trvá, ale ve výsledku se to vyplatí. To samé platí pro Git.

dustin

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #72 kdy: 31. 07. 2014, 10:31:18 »
Celé je to o tom PROČ by se měl měnit zaběhnutý systém? Proč by měla společnost s centrálními repozitáři přecházet na git?

Nevím, proč zrovna tvoje společnost uvažuje o přechodu. Ale vím, proč jsme před roky přešli ze SVN na git my.

Aktualizace stabilní větve commity z vývojového masteru pro nasazení několikrát do týdne zabrala vždy několik hodin, byl to pěkný opruz a nikomu se to nechtělo dělat. Nyní je to triviální úkon na pár sekund. Jinak plný git clone našeho projektu trvá po lokální síti skoro půl hodinu, takže je to dost velký balík (700MB, 20 tis. souborů).

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #73 kdy: 31. 07. 2014, 10:34:11 »
Pokud hledáte opravdu něco, co má SVN a GIT z principu nemůže, tak Vám napovím.
Jsou to uživatelská práva.
V SVN můžete definovat uživatelská práva na úrovni jednotlivých adresářů, větví, tagů. atd.
Pokud do SVN musejí přistupovat různí přispěvatelé s různými právy k různým částem projektu, je SVN v tomto lepší.
Což je výhodné např. v korporátním prostředí, kde paranoidní manažer bude chtít části projektu mezi lidmi skrývat.

V GITu máte pouze Read nebo Read-Write pro celé repository. Možná ty neptrřičné zápisy do repoí jdou zjemnit nějakým hook skriptem, ale přečíst se dá prostě celé repository.
Jde to samozřejmě obejít rozdrobením na menší repository, kde ke každému bude mít práva jen skupinka vyvolených, ale je to nepohodlné (když chcete aktualizovat projekt, musíte pracovat s vícero repository ...).
A nemůžete dané schéma práv změnit, protože rozdělení na projekty už zafixováno.

Pokud pracujete v korporátní paranoidní sféře, která ráda pečlivě od sebe odděluje přispěvatele jemně definovaných částí projektu, bude SVN lepší.
Priznam se, ze nevim jak je to v gitu samotnem, ale kazda rozumna firma si poridi nejakou workflow nadstavbu, trebas ten Stash ktery je v kombinaci s Jirou neco naprosto neuveritelneho. Aktualne jsme ve firme v podstate 3 a nedokazu si predstavit fungovat jinak nez pres Pull requesty, branch per feature(hodne zjednodusene gitflow by nvie).
Ty jako velice omezeny liny a zabrzdeny programator neschopny prijimat rozumne zmeny a pracovat na sobe nedokazes posoudit prinos pro firmu. Jsi koule na noze a sef by ti mel dat jasny nuz na krk - mas na to tyden a hotovo jinak letis.
Děkuji za možnost editace příspěvku.

Re:Proč bych měl přejít ze SVN na GIT? (vážně)
« Odpověď #74 kdy: 31. 07. 2014, 10:41:37 »
Třeba jedna věc, která mě v SVN dost žere: Dělám na nějaké feature, která změnila soubor X a ještě to není ve stavu, kdy bych to chtěl commitnout do repository. Pak to musím přerušit (čekání na součinnost / priorita) a chci dělat na věci, kde potřebuju taky změnit soubor X, třeba na nějakém jiném místě. No a máme problém, pánové. V GITu bych prostě commitnul částečnou implementaci, nepushoval. Pak bych se pustil do té nové věci a až bych ji dodělal, tak bych ji normálně commitnul a pushnul a mohl se vrátit k původní. V SVN můžu maximálně tak vytvořit vlastní branch (v repository používaném větším množstvím lidí nemyslitelné), nebo si to můžu vycheckoutovat do jiného adresáře, provést změnu tam, commitnout a zase smazat, ale to je dost práce a proč se drbat za levým uchem pravou rukou, když bych se tam mohl podrbat levou, že...
Tohle je presne ono. Tyden vyvijim feature, mezitim je potreba nejaky opravy na jinych features ktery se delaly drive, nejaky bugfix apod. Vsechno krasne zdokumentovany diky vetvim, pres cherry-pick dokazu bugfixes efektivne a rychle cpat do masteru, stejne tak cherry-pick veci ktery treba prida kolega a navzajem to souvisi. Vsechno dokazu resit lokalne a ven to davat az kdyz to vypada good. V SVN jsem to dokazal tak nejak kocirovat dokud jsem byl uplne sam a delal jen vyvoj samostatne a pak udrzbu samostatne. Ve chvili kdy prisly projekty ktere po spusteni kontinualne pokracuji a je tam v kazdou chvili vic pozadavku na opravy/vyvoj tak SVN konci s dechem.
Děkuji za možnost editace příspěvku.