Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: cosmo 18. 08. 2011, 10:30:25

Název: System správy verzí v malé skupině
Přispěvatel: cosmo 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: Mordae 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: peter 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
Název: Re: System správy verzí v malé skupině
Přispěvatel: Hynek Vychodil 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: nou 18. 08. 2011, 11:16:02
no gui pre win by mohol posluzit tortoisegit http://code.google.com/p/tortoisegit/
Název: Re: System správy verzí v malé skupině
Přispěvatel: Dusan Zatkovsky 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 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 :-)
Název: Re: System správy verzí v malé skupině
Přispěvatel: Inkvizitor 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: Inkvizitor 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: Kit 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 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.
Název: Re: System správy verzí v malé skupině
Přispěvatel: podlesh 18. 08. 2011, 12:32:31
Chtěl bych upozornit na dvě věci u gitu:
Jak jsou na tom alternativy netuším.
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 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 :-)
Název: Re: System správy verzí v malé skupině
Přispěvatel: Filip 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
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 18. 08. 2011, 15:52:53
Zaujimave riesenie :-) Ale nahodit GIT na VPS zrejme nebude problem. Najjednoduchsie to pojde cez sambu, ale riesenie to nie je vobec elegantne. No, na zaciatok mi postaci to, ze nebudem mat neporiadok v zdrojakoch, zvysni clenovia teamu sa uz nejako skoordinuju :-)

Skor by som preferoval neico taketo:
http://tumblr.intranation.com/post/766290565/how-set-up-your-own-private-git-server-linux

Mercurial ma "hg serve", zrejme aj GIT ma nieco podobne, alebo by sa dalo pouzit nieco taketo:
http://kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt
http://jfcouture.com/2008/01/20/how-to-set-up-a-git-server/

V tom poslednom sa spomina gitosis.

Su to vsetko iba ideove zalezitosti, konkretne prevedenie by uz zaviselo od okolnosti :-)

Neviem, co vsetko stihnem dnes, ale mozno vyskusam lokalny webserver s GIT repozitarom a ked to bude potrebne, premigrujem na nejake VPS.
Název: Re: System správy verzí v malé skupině
Přispěvatel: Kit 18. 08. 2011, 16:05:26
S Gitem na Sambě bych byl opatrný. Nevím, jestli bude správně fungovat při souběhu požadavků, ale možná je to už vyřešené. Osvědčilo se mi SSH, ale metod je k dispozici víc.
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 18. 08. 2011, 16:11:49
[kit]  Prave som si nasiel mnozstvo How-to o instalacii GIT-u na server, takze zrejme pojdem touto cestou. Co sa tyka samby, tak to je fakt, moze dojst k uzamknutiu suboru, naslednemu odomknutiu a zapisu novych dat. V konecnom dosledku by takto cely repozitar mohol zostat znacne nekonzistentny, takze svoj ucel by si to nesplnilo. ta samba by sa dala pouzit skor ako iba zaloha aktualneho lokalneho repozitara. Takze, radsej poraidne ciste riesenie, ktore nebudeme musiet neustale kontrolovat, ale proste sa spolahneme, ze to funguje :-)

Uvazujem zrovna nad SSH implelentaciou, ktoru som nasiel v jednom HowTo. Este si to zbezne prejdem, ale to bude asi to prave. Zatial by som to nechal na mojej masine, pustil by som von jeden port na verejnej IP pre zvysok teamu, priapadne hodim nejaky filter IP a mozme vyskusat novy sposob prace :-)
Název: Re: System správy verzí v malé skupině
Přispěvatel: Kit 18. 08. 2011, 16:32:08
[kit]  Uvazujem zrovna nad SSH implelentaciou, ktoru som nasiel v jednom HowTo. Este si to zbezne prejdem, ale to bude asi to prave. Zatial by som to nechal na mojej masine, pustil by som von jeden port na verejnej IP pre zvysok teamu, priapadne hodim nejaky filter IP a mozme vyskusat novy sposob prace :-)
Je dobré tomu zřídit vlastní účet, kterému zakážeš shell a povolíš jen přístup přes Git. Trochu to zvýší bezpečnost.

Další variantou je posílání patchů na správce, který je po schválení teprve posílá do repozitáře nebo nadřízenému správci (v případě hierarchicky řízeného projektu). Možností je skutečně velmi mnoho.
Název: Re: System správy verzí v malé skupině
Přispěvatel: ovrscout 18. 08. 2011, 18:43:11
Zdravím,
  git používám dennějiž  vícenež  dva roky a nemohu si ho vynachválit, tady jsou nektere poznamky.

1)pod windowsama funguje dobre msysgit ktery se obejde bez molocha cygwinu.

2)Co se tyka GUI tak soucasti gitu jsou  "git gui" a "gittk".
  git gui je na comitovani(umi i comitovat jen vybrane radky ze souboru,revert jednotlivych souboru,atp),Fetch,Merge,a takove ty zakladni operace.
  gittk je pak hlavne na prohlizeni historie ale umi (kromnejineho ) porovnavat commity a vetve nebo se da snadno udelat cherry-pick comitu z jine vetve.

 Tyto dva jsou pro mne  takovy ten zaklad pro bezne denni pouzivani. Jedine co mi snad chybelo ze tu nejdou smazat Tagy(kdyz se upisu), na coz jde dobre pouzit Jiz zmineny TortoiseGit ktery ma sice vice moznosti(napr graficke rebase) ale na bezne pouzivani mi to jeho rozhrani nejak nevyhovuje.

3)Server nepouzivam takze jedu jen po windowsim sdileni. Natahovani dat(Pull,Fetch,Clone) funguje paradne, ale s push mi nejak nechodil(obcas jo obcas ne). Tam bych asi doporucil SSH, ale jak rikam nemam centralni repo takze si mezi PC vzdycky jen Fetchnu a jedu dál. Ovsem ze zvedavosti jsem si nahodil Git na virtual linux a prez SSH v pohode.

Na zalohovani mam udelany skript ktery mi Fetchne vsechny repositare na PC(i v stiti) jako mirror do zvlasnti slozky, kterou pak stejnym skriptem prenesu na FlashDisk a obcas pak  cely adresar zabalim do archivu a vypalim jako stabilni zalohu.

Preju hodne zdaru.
Název: Re: System správy verzí v malé skupině
Přispěvatel: ava 18. 08. 2011, 19:44:49
Ja pouzivam Fossil (http://fossil-scm.org) a jsem naprosto spokojeny, jen tu integraci do IDE nema.. :P
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 19. 08. 2011, 11:25:45
[ava] Urcite si to pozriem, uz len preto, ze je to pre mna upln novinka :-)

[ovrscout] Dakujem za doporucenia. Nakoniec som sa rozhodol pre GIT v tejto zostave:

- u mna na debiane lokalne repo, NetBeans IDE, riadok a skriptiky
- u kolegov na windowse NetBeans IDE, msysgit
- centralne repo na serveri, pravdepodobne cez SSH

Vcera som nejako nemal cas, ale dnes to skusim nahodit do virtualu a otestovat. Nasledne by som to preklopil do nejakej VPS, alebo nechal bezat na svojom stroji s verejnou IP a patricnym zabezpecenim.

Velmi rad si necham poradit od skusenejsich, teoria sa da precitat na nete, ale pozitivne/negativne skusenosti sa daju zistit, len ked sa clovek spyta :-)
Nakolko ste viac/menej vsetci odporucili GIT, rozhodol som sa pre GIT :-) Ak nam jedneho dna nebude stacit, potom sa znova budem obzerat po niecom dalsom, mozno Mercurial :-)

Este raz dakujem za postrehy a urcite dam vediet, co sa podarilo.
Název: Re: System správy verzí v malé skupině
Přispěvatel: Kalanis 20. 08. 2011, 01:21:57
Tak a já si dovolím pokračovat v podobném tématu, takže radši nebudu zakládat další vlákno. Oproti kolegovi je v sestavě několik změn.
Vývoj PHP na vlastním malém domácím serveru (aby se až tolik nenudil), tedy vzdáleně. Zatím používám prostě Gedit, znásilněný Notepad2 (nic lepšího a zároveň malého na úpravy programů neznám) a pobíhání v tabech desktopu (thx linuxu, že případná grafika může jet na jiný ploše). Vývoj probíhá tím, že napíšu kus kódu, nahraju ho na server a otestuju, co to páchá (výhoda dvojitého uložení se mi už několikrát osvědčila). Pokud to, co chci, tak jedu dál. Pokud něco jiného, tak se seknu a hledám chybu (základní strom toho, co to má dělat, mám na papíře; je to tak snazší udržet). A takto to jede, dokud není modul dokončený. No a až teď se dostáváme k publikaci a tomu, co od Gitu či jiného správce verzí chci. Zveřejnění změn totiž musí probíhat až po dokončení modulu (zveřejnit v PHP něco, co někde nejede, považuju za problém). Rád bych ho dokopal k tomu, že mi bude dělat balíky (bohužel to musí být ZIP, s ničím jiným nelze v plánovaném modulu aktualizací na ostrých instalacích pracovat; PHP totiž by default nic jiného nezvládá) a udržovat jejich verze. Jenže - většina těchto správců je jasně napsána na to, že se daný program vcelku přeloží a až pak se spouští. Ten můj PHP kód si ale tahá jen ty moduly, které v tu chvíli potřebuje - a ty se pak ženou překladem.
Návrhy?
Název: Re: System správy verzí v malé skupině
Přispěvatel: cosmo 06. 09. 2011, 11:17:39
[Kalanis]
No, toto je uplne klasicky sposob, ktory sme pouzivali +- doteraz, ale zacina to mierne zdrzovat. Navyse je tam potrebne urcite usilie na evidenciu zmien v kodoch a pripadne hladanie chyby v buducnosti. Tento system je v pohode pre jedneho vyvojara, prakticky doteraz som ho pouzival, ale pre vacsi projekt sa mi neosvedcil. Je to mierne neprehladne a strasne sa mnozia rozne subory tipu subor.php.bak vo foldroch v.2x.x v3.x.x a podobne :-)

Inak na Linuxe odporucam jEdit, je to sice java monstrum, ale je to velmi dobry editor s mnozstvom pluginov.

Co sa tyka vasej otazky - treba commitovat do git-u len vysledny produkt, ktory je sfunkcneny natolko, ze moze sluzit ako odrazovy mostik nejakej major verzie. Dalsie zmeny potom uz commitovat uplne vsetky (samozrejme nie kazdy backspace alebo \n). Co sa tyka balickovania, tak na to sa da pouzit skript, ktory Vam vsetko zabali tak ako potrebujete. Ale pri vyvoji rozhodne pracovat z nezabalenymi subormi. V repozitaroch uchovavajte iba zdrojaky, uchovavat zipy, ktore nemozete priamo upravovat je zbytocne (nechavajte si iba vyznamne verzie). Nasledne si zabalte so zdrojakov prave tu verziu, ktoru potrebujete.

Mozno sme sa nerozumeli a vasu otazku som zle pochopil, mozte kludne upresnit :-)
Název: Re: System správy verzí v malé skupině
Přispěvatel: Kalanis 11. 09. 2011, 00:23:54
Naopak jste ji pochopil správně.
Navíc by každý modul měl mít vlastní podvětve (jest kravina když se povýší modul zpracovávat všechno okolo - modul totiž musí být závislý minimálně).
Další problémek je aby při commitu větve se i balíčkovalo; balíčky samozřejmě půjdou do extra složky - tušíte někdo, jak to spíchnout (lajna je pro programátorskou lenost špatná odpověď, přimapovaný skript vč. provedení dobrá)?