System správy verzí v malé skupině

cosmo

System správy verzí v malé skupině
« kdy: 18. 08. 2011, 10:30:25 »
Zdravim vsetkych.

Momentalne riesim koordinaciu niekolkych malych PHP projektov, na ktorych pracuje mala skupinka ludi, pripadne iba jednotlivec. Doteraz sme nepouzivali ziadny system spravy verzii, opravy/upravy sa realizovali vo forme reportu a nasledneho zaradenia upraveneho suboru do noveho foldra s cislom revizie. Pri malom projektiku a malych poctoch zmien je to este unosne, ale momentalne to zbytocne zdrzuje pri praci a je to uz neprehladne.

Chcel by som sa preto spytat, ktory system spravy verzii by ste vedeli doporucit.
Mas nasledovne poziadavky:

- lokalny repozitar
- webovy repozitar
- moznost spravovat/prehliadat zmeny cez web browser
- jednoduchy commit zmien
- jednoduche prehliadanie verzii a ich rozdielov
- moznost ulozit na lokalny disk lubovolnu starsiu reviziu vsetkych suborov
- integracia do NetBeans/Eclipse
- moznost prenositelnosti repozitarov medzi servermi pri migracii

Zatial som zavrhol SVN,CVS ako zbytocne zlozite. Uvazujem nad GIT alebo MERCURIAL. Mercurial ma zaujal pre svoju jednoduchost a dobru dokumenaciu. Ja uprednostnujem prikazovy riadok ale nejake GUI pre kolegov na Windowse by bolo tiez fajn :-)

Mate niekto realne pozitivne/negativne skusenosti ? Alebo nejake navrhy ?

Dakujem za odpovede.
« Poslední změna: 18. 08. 2011, 10:39:43 od Petr Krčmář »


Mordae

Re: System správy verzí v malé skupině
« Odpověď #1 kdy: 18. 08. 2011, 11:04:31 »
Mam dobre zkusenosti s gitem. Na sdilene repozitare lze pouzit napriklad gitosis. Existuji i graficke nastroje a integrace s NetBeans by mela byt i pod Windows. Da se poridit i levny hosting privatnich repozitaru na githubu, pripadne jit open-source cestou a nechat nejakou uzavrenost plavat. :-)

Jinak je to ale jedno, mercurial i git by mely zvladat zhruba totez a jediny duvod, proc preferovat git, je jeho vetsi podil na trhu => vetsi sance, ze s tim lide budou umet a vice navodu, ktere pomuzou s resenim uloh.

Jinak hned z kraje doporucuji naimportovat stare verze do verzovaciho systemu a pak jet uz jen pres ten.

Jeste k tomu "moznost ulozit na lokalny disk lubovolnu starsiu reviziu vsetkych suborov":
Kód: [Vybrat]
git log                # koukneme se, co vlastne hledame za verzi
git checkout 1234abcd  # vytahneme si tuhle verzi do workspacu

Pripadne:
Kód: [Vybrat]
git log                            # najdeme verzi, kterou jsme nekomu dodali
git branch zakaznik-pepa 1234abcd  # udelame vetev pro tohoto zakaznika
git checkout zakaznik-pepa         # presuneme se na tuto vetev
vim index.php                      # udelame zmeny, ktere zakaznik chtel
git add index.php
git commit -s                      # commitneme zmeny
git format-patch -1                # udelame si patch, ktery muzeme hned
                                   # aplikovat u nej
git checkout master                # vratime se na vyvojovou vetev

Co se tyce weboveho prihlizeni/spravy zmen, videl jsem nejake projekty na "code review" prave nad gitem, ale pro read-only prohlizeni jsou tu gitweb, cgit. No a pak je tu github.

peter

Re: System správy verzí v malé skupině
« Odpověď #2 kdy: 18. 08. 2011, 11:06:57 »
na linuxe GIT + gitk, na windowse git v cygwin-e, neviem ci je tam aj graficke prostredie. je to rychle, jednoduche, myslim ze aj prehladne

Re: System správy verzí v malé skupině
« Odpověď #3 kdy: 18. 08. 2011, 11:11:58 »
Jen bych se připojil k doporučení gitu. Git už dlouho používám i jen když pracuji na něčem sám, i na úplné drobnosti. Prostě to škáluje od pár řádek kódu pro jednoho člověka až pro tisíci členné týmy rozeseté po celém světě pracující na miliónech řádek kódu. Git, jedině git. Pro sdílené repository zkus kounout na github, je tam i placená verze pro closed source.

nou

Re: System správy verzí v malé skupině
« Odpověď #4 kdy: 18. 08. 2011, 11:16:02 »
no gui pre win by mohol posluzit tortoisegit http://code.google.com/p/tortoisegit/


Re: System správy verzí v malé skupině
« Odpověď #5 kdy: 18. 08. 2011, 11:20:59 »
Vybral si spravne a zavrhol si spravne. Mercurial mi pride na zaciatok trosku lahsi na naucenie, ale nedisponuje takym mnozstvom moznosti ( proti git-u ), ktore mozno casom vyuzijes pri zlozitejsich projektoch.

Nech zvolis ktorykolvek z tychto dvoch, neurobis zle.

cosmo

Re: System správy verzí v malé skupině
« Odpověď #6 kdy: 18. 08. 2011, 11:28:58 »
Dakujem za odpovede. Pozeral som podporu, NetBeans pod Linuxom maju podporu Mercurial a GIT, takze pri pouziti NetBeans by sme mali vyriesenu aj otazku GUI :-) Pod windows este musim vyskusat. Ja sice viac preferujem svoje male shell-skriptiky, ale pri windowse sa skor hodi nejaky GUI nastroj.

[Mordae] Co sa tyka webovych rozhrani, nejake som uz nasiel, popzeram vyskusam a uvidi sa. Dakujem aj za malu ukazku prace s GIT-om.

Pre Mercurial som nasiel nieco taketo:  http://javadocs.wordpress.com/2010/05/25/introducing-hg-php-a-web-mercurial-repository-manager/

Zopar GUI podl inux som nasiel tu:
http://stackoverflow.com/questions/1516720/git-gui-client-for-linux

Nieco pre windows som nasiel tu:
http://stackoverflow.com/questions/157476/what-guis-exist-for-git-on-windows

Skonsolidujem si zdrojaky a skusim nasadit GIT a Mercurial, uvidime, ktory bude pohodlnejsi, ale zatial sa priklanam k tomu GIT-u, kedze tu mam od Vas same kladne odporucania.
Ocakavam od pouzitia mierne zefektivnenie prace pri prerabani suborov.

Este raz dakujem za odpovede, urcite napisem, pre co som sa nakoniec rozhodol.

cosmo

Re: System správy verzí v malé skupině
« Odpověď #7 kdy: 18. 08. 2011, 11:33:57 »
[Dusan Zatkovsky]
To SVN a CVS som zavrhol z trosku subjektivnych dovodov, zdali sa mi zlozite a sem tam sa v nejakych diskusiach objavi, ze su tieto systemy uz zastarale. V pripade GIT a Mercurial ma presvedcili hlavne na zaciatok jednoduchsia praca a prislo mi to prehladnejsie uz pri citani samotnych manualov.

Myslim, ze to co potrebujem ja, splni GIT a Mercurial s obrovskou rezervou :-)

Inkvizitor

Re: System správy verzí v malé skupině
« Odpověď #8 kdy: 18. 08. 2011, 11:35:48 »
U nás ve firmě jedeme na Gitu už pěkných pár let. Věci typu rebase (neuvěřitelně silný nástroj) a cherry-pick jsou naprosto neocenitelné. Stejně jako snadná práce na několika repozitářích podobných projektů, mezi kterými lze přelévat commity atd.

Já osobně mám několik jednoduchých skriptíků, které mi usnadňují život - třeba otevřít obsah commitu v Gvimu, napsat tam případné připomínky a jako code review pošlu okomentovaný patch kolegovi jako code review. Nebo si nechám v Gvimu zobrazit diff mezi dvěma verzemi commitu v různých stádiích vývoje (do výsledného repozitáře dáváme až schválené commity).

Pro týmovou práci perfektní. Když si vzpomenu, jak jsme kdysi používali CVS nebo dokonce na firmu, kde žádný systém pro správu verzí nebyl, nedá se to srovnat. Ať použijete co chcete (git nebo hg), rozhodně je distribuovaný VCS jednoznačná volba. Držím palce.

Inkvizitor

Re: System správy verzí v malé skupině
« Odpověď #9 kdy: 18. 08. 2011, 11:40:29 »
A ještě jednu věc doplním. Při práci v týmu je dobré si vymyslet nějaký proces toku změn. Doporučuji si o obou kandidátech (git vs hg) nastudovat nějaké materiály, zkusit se odpoutat od "omezeného" světa CVS/SVN a představit si, jak nejlépe lze s těmi systémy pracovat z hlediska potřeb týmu.

Kit

Re: System správy verzí v malé skupině
« Odpověď #10 kdy: 18. 08. 2011, 12:04:42 »
Pro distribuované verzovací systémy hovoří ještě jeden fakt: Celá historie projektu je naklonována u všech členů týmu. Při fatálním výpadku stačí pro obnovu repozitář z kterékoli stanice a vývoj může pokračovat.

Používám Git.

cosmo

Re: System správy verzí v malé skupině
« Odpověď #11 kdy: 18. 08. 2011, 12:17:05 »
[kit] No, takto som sa na problematiku este nepozeral :-)
Co sa tyka zalohovania, mam v plane zalohovat to klasicky (tar.gzip), takze repozitar by sa pravidelne cez cron balil a kopiroval do zaloh. To iste by platilo aj pre pracovny folder.

podlesh

Re: System správy verzí v malé skupině
« Odpověď #12 kdy: 18. 08. 2011, 12:32:31 »
Chtěl bych upozornit na dvě věci u gitu:
  • příkazové řádce se v podstatě nelze vyhnout, žádný existující GUI client nemá dostatečnou funkcionalitu (no, možná když se člověk hooodně uskrovní)
  • git pod windows není žádná sláva a pokud máte něco co zamyká soubory nebo dokonce adresáře, tak to bude mít fatální následky (mingw build gitu totiž takové soubory začně považovat za smazané, takže např. pri rebase docela potichu zmizí)
Jak jsou na tom alternativy netuším.

cosmo

Re: System správy verzí v malé skupině
« Odpověď #13 kdy: 18. 08. 2011, 14:06:16 »
Noo, prave sa zabavam s 3 projektikmi a GIT-om integrovvanom v NetBeans 7.0.1. vyborne, presne toto potrebujem. Podla dokumentacia spojazdnim server s nasimi repozitarmi a bude to presne to, o co mi slo.

Zakladne veci ako commitovanie, checkout, add a podobne ide perfektne, zvlada to aj tvorbu branch-ov a po nastaveni je netbeans schopne priamo editovat subory projektu cez SFTP.  Zaroven sa subory ukladaju aj do lokalneho projektu a mozem si prezerat historiu zmien :-)

Presne toto som potreboval :-) Este sa s tym blizsie oboznamim a dam vediet... ale zatial to vyzera skor pre GIT, nakolko Mercurial  v NetBeans nefunguje ako ma (aspon nie u mna). Este si porobim skriptiky a bude to nakomplet :-)

Filip

Re: System správy verzí v malé skupině
« Odpověď #14 kdy: 18. 08. 2011, 15:37:42 »
No pokud nechcete delat zadna kouzla, tak imho nejjednodussi (!=nejlepsi) je pouzit dropbox v kombinaci se svn repozitarem (v dropboxu)

takle to pouzivame my a je to bez problemu (svn plugin je v netbeans uz defaultne), a diky dropboxu mame distribuovany repository (a zaroven lokalni :))

navic neni potreba zadneho serveru nebo treti strany