Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Kontrola i zarządzanie projektami _ Svn vs Git vs CVS vs Mercurial

Napisany przez: wookieb 26.07.2010, 14:19:42

Zastanawia mnie jaki system kontroli wersji jest najlepszy (szybkość, łatwość obsługi, możliwości).
Od sporego czasu używam SVN-a (VisualSvn na winde + Tortoise) i jakoś działa aczkolwiek czasem potrafi wypluć jakieś kosmiczne błędy, które logicznie nie powinny mieć miejsca.
Dlatego też chciałem was zapytać o osobiste doświadczenie i rekomendacje do jednego z wymienionych systemów. Chyba, że są inne jeszcze lepsze.
Bardzo bym prosił również o podanie w formie listy zalet i wad każdego z systemów.

Napisany przez: Crozin 26.07.2010, 14:23:58

Osobiście chwalę sobie GITa, za to, że jest on w przeciwieństwie do SVNa systemem rozproszonym, a nie scentralizowanym.

Napisany przez: wookieb 26.07.2010, 14:25:45

Jaką to możliwość stwarza? Bo o ile dobrze rozumiem, to Backup.

Napisany przez: Crozin 26.07.2010, 14:32:03

http://progit.org/book/ - rozdział 1.1 i 1.3 - przeczytasz w 10 minut a powinieneś mieć już jakieś rozeznanie w plusach i minusach obu koncepcji.

Napisany przez: vokiel 26.07.2010, 14:35:37

Przyznam, że nie mam ogromnego doświadczenia z SVN, z GIT'em dopiero niedawno zacząłem. Nie mam całkowicie żadnego z CVS, którego trudno nazwać "systemem kontroli wersji" winksmiley.jpg

Git w porównaniu do SVN ma więcej możliwości, jest jak wspomniał Crozin systemem rozproszonym, co za tym idzie nie musi (może) istnieć serwer główny projektu. Można korzystać z repozytorium macierzystego, ale nie ma takiej konieczności. W zasadzie każdy ma u siebie swoje repozytorium i commit nic nie wysyła, tylko uaktualnia lokalne repozytorium, dopiero popchnięcie tego dalej (np do repo macierzystego) lub pociągnięcie przez kogoś innego, skutkuje tym, że projekt zobaczy światło dzienne winksmiley.jpg

Ostatnio zauważyłem, że dużo projektów przechodzi na GIT'a, http://pl.wikipedia.org/wiki/Git_(oprogramowanie)#U.C5.BCytkownicy sporo dużych projektów z niego korzysta.

Proponuję poczytać o tym systemie, możliwości jest na prawdę dużo. Materiały:



Napisany przez: Puciek 26.07.2010, 14:42:36

Od svna/cvsa to ja wole tarballe z diffami, wygodniejsze w uzyciu. mercu to praktycznie klon gita z brakiem kilku funkcjonalnosci i w pythonie (jezeli zamierzasz cos dopisywac to cie to obchodzi), ciut mniej wydajny od gita ale dla malych/srednich projektow starczy.

http://www.youtube.com/watch?v=4XpnKHJAok8

Napisany przez: kwiateusz 26.07.2010, 18:28:36

mnie strife zainteresował ostatnio bazaarem, taki git tylko wydaje mi sie z bardziej intuicyjną składnią.

Oglonie dla mnie najwieksza zaletą gita (akurat to mi przypadło jakos do gustu, reszty nie testowałem) to:

* że nie tworzy ci w każdym katalogu ukrytego katalogu (jak to ma miejsce z .svn),
* pracujesz u siebie na pc commitujac, a potem zbiorczy commit idzie na macierzysty serwer (wkurzało mnie w robocie jak spr log a tam pierdyliard commitow i ktory jest tym ktorego szukam),
* łatwość pracowania z gałęziami i system na nie zorientowany (a nie jak w svn, branch to tylko taka proteza copy)

Napisany przez: Zyx 26.07.2010, 20:41:34

Dotąd korzystałem z SVN-a, ale w ostatnich miesiącach przerzuciłem się na Gita. Powód to duża elastyczność, łatwość pracy z gałęziami oraz dzielenia się kodem. W sumie jedyne, czego mi brakuje, to odpowiednik svn:externals, ale z tego, co zdążyłem wyczytać, da się to nieźle zasymulować poprzez podmoduły (submodules). Nawet słabe wsparcie ze strony NetBeans mogę wybaczyć, bo z konsolowego interfejsu korzysta się wygodnie.

Napisany przez: wookieb 26.07.2010, 21:05:43

Do netbeans-a jest plugin ale nie oficjalny. Ale co powiecie o innych systemach kontroli?

Napisany przez: athabus 29.07.2010, 14:18:54

Pod wpływem wątku spróbowałem zabawy z gitem. Nawet całkiem fajny. Najbardziej podoba mi się:
- intuicyjność składni - już nie trzeba ciągle zerkać do manuala, żeby zrobić coś bardziej nietypowego od commita
- patent z brakiem ukrytych folderów jest dobry - już kilka razy udało mi się wysłać przez ftp te ukryte foldery .svn przez nieuwagę
- praca z gałęziami jest banalnie prosta w porównaniu ze składnią z svn'a

Co mnie trochę "zadziwia" i na razie nie wiem czy to dobrze czy źle:
- rozproszenie - jakoś naturalniej czułem się z centralnym serwerem, choć z drugiej strony ma to swoje plusy

Napisany przez: Crozin 29.07.2010, 15:32:22

@athabus: w GITcie nadal możesz mieć centralny serwer, do którego wszyscy wysyłają zmiany.

Napisany przez: athabus 29.07.2010, 15:40:15

Tak zdaję sobie z tego sprawę. Po prostu tutaj jest inna "metodologia" pracy - każdy working directory to również repozytorium. Trochę dziwne wrażenie po przyzwyczajeniach wyniesionych z svn.

Podobnie mam problemy z przyzwyczajeniem się do "stagingowania" - ciągle trzeba mieć to z tyłu głowy.

Właśnie czytam sobie książkę w wolnych chwilach i pewne rzeczy mi się rozjaśniają bo po przeczytaniu tutoriala nie wszystko było jasne.

Napisany przez: Puciek 29.07.2010, 20:05:54

Cytat(athabus @ 29.07.2010, 16:40:15 ) *
Tak zdaję sobie z tego sprawę. Po prostu tutaj jest inna "metodologia" pracy - każdy working directory to również repozytorium. Trochę dziwne wrażenie po przyzwyczajeniach wyniesionych z svn.

Podobnie mam problemy z przyzwyczajeniem się do "stagingowania" - ciągle trzeba mieć to z tyłu głowy.

Właśnie czytam sobie książkę w wolnych chwilach i pewne rzeczy mi się rozjaśniają bo po przeczytaniu tutoriala nie wszystko było jasne.
Zamiast marnowac czas na ksiazke to lepiej pobawic sie duzym repo (np. wine).

Napisany przez: mike 29.07.2010, 22:35:07

http://whygitisbetterthanx.com

Napisany przez: wowo86 3.11.2010, 00:00:43

Również polecam gita, ratuje życie w wielu przypadkach :-)

Napisany przez: kwiateusz 3.11.2010, 02:06:49

ja dziś sobie git'a zaprzęgłem do pracy z svn'em, bardzo fajna rzecz smile.gif i to w standardzie

Napisany przez: wookieb 3.11.2010, 07:32:47

Cytat(kwiateusz @ 3.11.2010, 02:06:49 ) *
ja dziś sobie git'a zaprzęgłem do pracy z svn'em, bardzo fajna rzecz smile.gif i to w standardzie

A mianowicie?

Napisany przez: Theqos 3.11.2010, 07:48:17

To ja polece Mercuriala, moim zdaniem ma lepsze wsparcie pod windowsem niż Git. Jak ktoś chce w pigułce o zaletach rozproszonego systemu to http://hginit.com. To w domu, bo w pracy dalej rządzi SVN.

Napisany przez: mike 3.11.2010, 10:22:17

Cytat(wookieb @ 3.11.2010, 07:32:47 ) *
A mianowicie?
Jeśli jesteś zmuszony do korzystania z SVN'a a jednocześnie chciałbyś doświadczać dobroci GIT'a to możesz użyć http://www.kernel.org/pub/software/scm/git/docs/git-svn.html'a. Efektem tego do pracy wykorzystujesz GIT'a, który później pcha wszystko do SVN'a.
Dla innych użytkowników repozytorium SVN'a jesto to kompletnie niezauważalne a dla Ciebie wygodne.

Napisany przez: kwiateusz 3.11.2010, 10:28:21

Cytat(Theqos @ 3.11.2010, 07:48:17 ) *
To ja polece Mercuriala, moim zdaniem ma lepsze wsparcie pod windowsem niż Git. Jak ktoś chce w pigułce o zaletach rozproszonego systemu to http://hginit.com. To w domu, bo w pracy dalej rządzi SVN.


Fakt Mercurial lepiej jest wspierany pod win, ale komu konsola nie straszna to Git też jest git smile.gif (niby jest TortoiseGIT ale nie dokonca wszystkie opcje implementuje)

A czemu SVN miałby być lepszy w zastosowaniu biznesowym? Jakiś życiowy przykład bym prosił? smile.gif

Napisany przez: wookieb 3.11.2010, 10:49:17

A ja zapytam tak. Co mi po systemie rozproszonym jeżeli np użytkownicy z którymi współpracuje nie mają globalnego ip?

Napisany przez: kwiateusz 3.11.2010, 10:59:31

stawiasz serwer do ktorego commitują, albo commitują bezpośrednio do Ciebie smile.gif (jesli masz zew. IP) rozproszone da sie uzywac jak scentralizowane, np ja synchronizuje lapa ze stacjonarka przez moj serwer smile.gif

Napisany przez: cojack 22.01.2011, 00:14:19

http://pl.wikipedia.org/wiki/Git_%28oprogramowanie%29

Historia tłumaczy dlaczego GIT, sam ostatnio przeniosłem się na gita i jestem zadowolony.

Napisany przez: wookieb 22.01.2011, 09:36:48

A instalowałeś może gitosisa na swoim serwerze? Bo ja mam z tym nadal cholerne problemy.

Napisany przez: cojack 23.01.2011, 11:51:53

Nie, nie bawiłem się w to.

Napisany przez: strife 23.01.2011, 15:10:18

Cytat(wookieb @ 22.01.2011, 09:36:48 ) *
A instalowałeś może gitosisa na swoim serwerze? Bo ja mam z tym nadal cholerne problemy.

Ja instalowałem i mam go cały czas na swoim vpsie. Najbardziej irytuje mnie zarządzanie repo i dodawanie nowych użytkowników, przydałby się do tego jakiś interfejs ale na razie nic dobrego nie znalazłem. Najlepszy byłby taki interfejs jak jest na githubie ^^

Napisany przez: rzymek01 23.01.2011, 22:06:19

apropos instalacji GITa na serwerze,
jak czytam w http://progit.org/book/pl/ch4-1.html GIT może wykorzystywać do połączenia protokół SSH, gdzie w tym przypadku repo jest po prostu katalogiem,
i nie jest wymagana żadna instalacja GIta na serwerze tylko możliwość dostępu przez SSH?

Napisany przez: Crozin 23.01.2011, 22:09:43

Cytat
[...] GIT może [...] nie jest wymagana żadna instalacja GIta na serwerze tylko możliwość dostępu przez SSH?
To się wyklucza.

GIT może komunikować się przy pomocy SSH, ale to nadal GIT się komunikuje więc jest on potrzebny na serwerze.

Napisany przez: rzymek01 24.01.2011, 18:38:47

Inaczej, robię mały projekt z drugim programistą i nie potrzebuje nie wiadomo jakiego zarządzania
i wygląda to tak, że u siebie mam GITa (na PC) a na www tylko katalog z repo po SSH, i wtedy nie musze miec zainstalowanego GITa na serwerze

tak to wygląda z tego co wyczytałem, ale jeszcze nie sprawdzałem

Napisany przez: wookieb 8.03.2011, 11:15:12

Wybrałem oczywiście GIT-a z jednego powodu. Lokalne Branche.
Zacząłem pracować na nich w momencie gdy zauważylem, że robienie wielu rzeczy na jednym branchu jest trudno i łatwo o bałagan. Lokalne branche ratują nam tyłek.
SVN-owe branche działały za wolno i sprawiały czasem problemy no i jak tu ktoś powiedział, jest to SYMULACJA branchy - zgodzę się.
HG (Mercurial) - jak się dowiedziałem, że "lokalny" branch trzeba wysłać przy pushu NAWET jeżeli jest on nieaktywny to przełączyłem się na chwilę w tryb leminga, ponieważ nie byłem w stanie zrozumieć tej "głupoty".
GIT - branche obsługuje się bardzo łatwo (git branch, git checkout, git merge) i masz wszystko czego potrzebujesz.

Dodatkowo można sobie postawić GITOLITE na swoim VPS-ie, dedyku i masz serwer centralny z uprawnieniami. Nawet na windowsie klieni zainstalował się bez problemu choć nie obeszło się bez pomocy TortoiseGIT przy klonowaniu repozytoriów (żeby ustawić klucze prywatne).

Napisany przez: melkorm 8.03.2011, 12:12:13

Cytat
HG (Mercurial) - jak się dowiedziałem, że "lokalny" branch trzeba wysłać przy pushu NAWET jeżeli jest on nieaktywny to przełączyłem się na chwilę w tryb leminga, ponieważ nie byłem w stanie zrozumieć tej "głupoty".


Z tego co wyczytałem cały system Mercuriala jest oparty na branach, trochę boli fakt że nie można ich w łatwy sposób usunąć, czy też nie wysyłać na serwer. Odpowiedzią są Bookmarks, imitacja branchy z GIT'a, co nie zmienia faktu że pracując trochę już na Mercurialu denerwuje fakt branchy duchów, a gdy nawet da się opcję by nie były wyświetlane na liście to i tak w podpowiedziach są aktywne ... . Z tego też powodu moja aktualna opinia na temat Mercuriala podupadła na rzecz GITa, sądzę też że jeżeli Mercurial nie zrobi nic konkretnego z tymi branchami to raczej nie uzyska takiej popularności jak GIT.

Napisany przez: ixpack 6.05.2011, 14:01:33

A ja chciałem polecić mały "artykuł": http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/.

Nie używałem jeszcze żadnego z wyżej wymienionych, nie potrzebowałem - pracuję jak james bond - sam, a jeżeli już to pomoc działa na osobnych frontach nie kolidujących z moimi piszgrołami (nowy wyraz wink.gif). Niestety (a właściwie stety) zaczynam pracę w teamie i to skłoniło mnie to przeglądania stron o dvcs etc. Poprawiam swoje stanowisko pracy, wymieniam dreamwavera na netbeans'a + mercurial - lepiej mi się z tym pracuje (zaczyna), ale nie wiadomo czy środowiska nie zmienię w krótkim czasie - zależy od teamu i demokratycznego wyboru (na razie mercurial rządzi).

Za mercurial+bitbucket przemawia fakt, że jest tańszy. Fakt github to nie jest wielka kasa, ale drażni mnie np. to, że trzeba płacić za prywatne repozytoria? Nie chodzi o to, że ktoś mi "ukradnie" mój kod... Chciałbym go "ukryć" przed jego ukończeniem, a pokazać dopiero dojrzały owoc.

edit: Wiem, że można postawić np. gitolite - nie w tym sęk, ale serwer też kosztuje wink.gif.

edit 2:

Cytat
Wybrałem oczywiście GIT-a z jednego powodu. Lokalne Branche.


"Git-like local branches": http://mercurial.selenic.com/wiki/BookmarksExtension

Ps. Nie jestem znawcą - osobista opinia.

Napisany przez: athabus 6.05.2011, 14:29:23

Cytat(ixpack @ 6.05.2011, 15:01:33 ) *
Nie używałem jeszcze żadnego z wyżej wymienionych, nie potrzebowałem - pracuję jak james bond - sam, a jeżeli już to pomoc działa na osobnych frontach nie kolidujących z moimi piszgrołami (nowy wyraz wink.gif)...


To wg. mnie trochę błędne podejście - systemy kontroli wersji są bardzo przydatne także dla osób pracujących w pojedynkę. Kilka zalet:
- łatwe wykonywanie kopii bezpieczeństwa - nie musisz pamiętać o przegrywaniu swojego kodu na inny dysk, robić backupów jeśli korzystasz z serwera zewnętrznego
- możliwość rozwijania nowych funkcji bez kolidowania z wersją stabilną - np. masz projekt, do którego chcesz dopisać nową funkcjonalność, która dość dużo namiesza w projekcie. Podczas pisania możesz też chcieć wprowadzać do aktualnej wersji stabilnej małe poprawki w trakcie pisania tej nowej funkcjonalności - z systemem kontroli wersji takie rzeczy są proste i nie wymagają tworzenia co chwilę kopii swoich plików.
- rozwijanie kilku wersji projektu równocześnie - często są projekty, które różnią się między sobą tylko pojedynczymi plikami (np. szablonami) - dzięki systemowi kontroli wersji możesz rozwijać wygodnie wspólne pliki i łączyć je do poszczególnych projektów bez potrzeby kopiowania ręcznego plików (co zresztą może rodzić błędy).
- ... i jeszcze wiele innych rzeczy

Używam systemów kontroli wersji (najpierw svn potem git) od jakiś 2 lat i powiem szczerze, że się w nich zakochałem ;-) Zwłaszcza git przypadł mi do gustu bo jest prosty i szybki a jednocześnie ma spore możliwości. Może są lepsze systemy, ale mi na razie więcej nie potrzeba.

Co do kosztów serwera, to imo warto wykupić najtańszy serwer vps (już od 200zł rocznie) - taki serwer można wykorzystać pod hostowanie stronek (wydajność będzie większa niż na większości hostingów), a dodatkowo będzie można na nim tworzyć swoje repozytoria. Wymaga to co prawda trochę podstaw Linuksa, ale można je opanować w ciągu kilku dni.

Napisany przez: ixpack 6.05.2011, 14:44:56

Co do zalet systemu kontroli wersji 100% się zgadzam...

Dotychczas uważałem, że posiadanie 5ciu kopii jednego projektu (2 stare, jedna świeża + 1 aktualnie poprawiana) wystarczą - Boże ile ja razy kląłem :/, a raz nawet podmieniłem świeży skrypt starym (wtedy dotworzyłem kolejną kopię...) - ale tak jak Ty myślałem, że:

Cytat(athabus @ 6.05.2011, 14:29:23 ) *
Może są lepsze systemy, ale mi na razie więcej nie potrzeba.


Akurat mi było potrzeba wink.gif. Teraz się czuję jak taki dziadek co to nie chciał nawet spróbować pograć na komputerze "bo to zło".

Ale imo svn/cvs vs. git/mercurial - takie mam wrażenie.

Napisany przez: melkorm 6.05.2011, 16:58:26

Cytat
"Git-like local branches": http://mercurial.selenic.com/wiki/BookmarksExtension


Używałem tego i się kłóciło z normalnymi branchami, tzn dziwnie działało,w GIT'cie jest to `out-of-the-box` więc przerzuciłem się na GIT'a i na prawdę nie żałuję.
Z oboma systemami pracowałem przez ten sam czas na dużym projekcie i z GIT'em na prawdę pracuje się wygodniej/lepiej/wydajniej.

Napisany przez: ixpack 6.05.2011, 17:22:23

Więc jedyne słuszne rozwiązanie to praca na obu systemach i wybranie tego "właściwego". Zacznę to robić póki nie jest "za późno".
Ale jak na razie mercurial.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)