Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Svn vs Git vs CVS vs Mercurial
Forum PHP.pl > Forum > Kontrola i zarządzanie projektami
wookieb
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.
Crozin
Osobiście chwalę sobie GITa, za to, że jest on w przeciwieństwie do SVNa systemem rozproszonym, a nie scentralizowanym.
wookieb
Jaką to możliwość stwarza? Bo o ile dobrze rozumiem, to Backup.
Crozin
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.
vokiel
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, jak widać sporo dużych projektów z niego korzysta.

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

Puciek
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
kwiateusz
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)
Zyx
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.
wookieb
Do netbeans-a jest plugin ale nie oficjalny. Ale co powiecie o innych systemach kontroli?
athabus
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
Crozin
@athabus: w GITcie nadal możesz mieć centralny serwer, do którego wszyscy wysyłają zmiany.
athabus
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.
Puciek
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).
mike
WhyGITIsBetterThanX.com
wowo86
Również polecam gita, ratuje życie w wielu przypadkach :-)
kwiateusz
ja dziś sobie git'a zaprzęgłem do pracy z svn'em, bardzo fajna rzecz smile.gif i to w standardzie
wookieb
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?
Theqos
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.
mike
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ć git-svn'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.
kwiateusz
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
wookieb
A ja zapytam tak. Co mi po systemie rozproszonym jeżeli np użytkownicy z którymi współpracuje nie mają globalnego ip?
kwiateusz
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
cojack
http://pl.wikipedia.org/wiki/Git_%28oprogramowanie%29

Historia tłumaczy dlaczego GIT, sam ostatnio przeniosłem się na gita i jestem zadowolony.
wookieb
A instalowałeś może gitosisa na swoim serwerze? Bo ja mam z tym nadal cholerne problemy.
cojack
Nie, nie bawiłem się w to.
strife
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 ^^
rzymek01
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?
Crozin
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.
rzymek01
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
wookieb
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).
melkorm
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.
ixpack
A ja chciałem polecić mały "artykuł": Git is MacGyver & Mercurial is James Bond.

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.
athabus
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.
ixpack
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.
melkorm
Cytat


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.
ixpack
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2018 Invision Power Services, Inc.