2010-05-02 26 views
11

Wiele słyszałem o zaletach używania systemu kontroli wersji i chciałbym go wypróbować. Przez ostatnie 2 lata zajmowałem się tworzeniem stron zewnętrznych w PHP, dwa miesiące temu zatrudniłem jeszcze dwóch programistów do pomocy. Niedługo zatrudnię jeszcze jedną osobę. Prowadzimy 4 strony internetowe, z których wszystkie są moje, które są ciągle edytowane przez jednego z nas. Sam nauczyłem się PHP i nigdy nie pracowałem w żadnej innej firmie. Stąd jestem nowy w kontroli wersji, testowaniu jednostkowym i wszystkim.Kontrola wersji dla PHP Development

Obecnie mamy serwery rozwojowe na naszych stacjach roboczych. Kiedy edytujemy konkretną sekcję strony, pobieramy kod dla tej konkretnej sekcji (powiedzmy/news/lub/movies/lub/wallpapers /) z serwera produkcyjnego do serwera dev, wykonujemy zmiany lokalnie i przesyłamy do produkcji serwer (bez sprawdzania/testowania kodu). Z tego powodu nasz serwer dev jest zawsze nieaktualny z naszego serwera prod. Czasami powoduje to również problem, gdy jeden z nas zapomni pobrać najnowszą kopię z prod i nadpisuje ostatnią zmianę. Wiem, że to bardzo głupie, ale obecnie nasz serwer prod jest jedyną kopią, która ma wszystkie aktualizacje i najnowsze zmiany.

Czy ktokolwiek może zaproponować dla mnie najlepszy system kontroli wersji? Bardziej interesuje mnie rozproszona kontrola wersji, ponieważ nie mamy centralnej kopii zapasowej dla całego naszego kodu. Czytałem o Mercurial i Git i odkryłem, że Mercurial jest używany w kilku dużych projektach open source przez Mozillę, Sun, Symbian itd. Więc który z nich jest dla mnie lepszy? Nie tylko kontrola wersji, jeśli jest jakikolwiek inny pakiet, którego mogę użyć do ulepszenia mojej obecnej konfiguracji, proszę o tym również wspomnieć :)

+0

Na jakiej platformie się rozwijasz? Chciałbym znaleźć odpowiedni tutorial git, ale muszę wiedzieć, czy jesteś w systemie Windows, osx itp. – Benson

+0

Używam OSX, inni używają Windowsa i naszym serwerem prod jest Cent OS –

+2

Git może działać na wszystkie te platformy, dla każdego z nich istnieją narzędzia GUI (choć zalecam używanie wiersza poleceń), a także całkiem stabilna wtyczka dla Eclipse.Ponieważ używasz OSX, zakładam, że używasz TextMate (a jeśli nie, to bardzo, * bardzo *, ** BARDZO ** warto sprawdzić), i jest dostępny pakiet dla niego. – Zack

Odpowiedz

3

Brzmi jak Git może osiągnąć swoje cele całkiem dobrze. Ponieważ jest rozprowadzany, doskonale nadaje się do pracy lokalnie, ponieważ możesz wykonywać większość operacji (zatwierdzanie, przywracanie, porównywanie, łatanie) bez połączenia z serwerem centralnym. Możesz także uniknąć brzydkiego momentu, w którym ktoś pcha nowy kod do produkcji, podczas gdy ktoś inny pracuje nad nim, a następnie ma skomplikowane zadanie scalenia tych dwóch wersji kodu razem (git dostarcza przydatnego narzędzia do robienia tego, nazwanego rebase).

Zauważyłeś, że jest kilka dużych projektów używających Hg (Mercurial), ale są też takie duże przy użyciu Git, takich jak jądro Linux, X.org, Android i Debian.

Używam git dla wszystkich moich stron: jest błyskawiczny, wydajny i łatwy w użyciu.


Edit: Jeśli chcesz, aby dostać się za pomocą Git, polecam jakiejś lektury przed skokiem tuż Ruszanie na niewłaściwym stóp może mieć pewne konsekwencje strasznych później.. Jeśli podążasz za zwinnym przepływem pracy, możesz chcieć sprawdzić this. Here's Strona internetowa dowiedziałem się od mojej większości wiedzy z Git.

+0

Dzięki, Zack. Czy potrzebuję centralnego serwera do korzystania z Git? Jeśli to konieczne, czy mogę po prostu włączyć jeden z serwerów programowych do centralnego serwera? –

+0

Nie musisz mieć takiego, ale potrzebujesz go w tym sensie, że naprawdę ułatwi ci życie. – Benson

+1

Nie potrzebujesz go, ale warto go mieć. Hipotetycznie, każdy programista może dodać każdego programistę jako zdalną lokalizację i dzielić się pracą w ten sposób, ale byłby to koszmar. Git jest bardzo lekki i może działać za wcześniejszym uwierzytelnieniem SSH. – Zack

1

Możesz użyć SVN, Git, Mercurial.

Największe wyzwanie polega na tym, aby wszyscy byli zdyscyplinowani w używaniu kontroli wersji i nie byli leniwi.

+0

To był główny powód, dla którego nie pomyślałem o tym wcześniej. Ale teraz rozumiem, że zalety przewyższają niedogodności. –

+0

Nigdy nie przyszło mi do głowy, że ludziom nie uda się zdyscyplinować kontroli wersji, ponieważ oszczędza to każdemu tyle czasu, jeśli ludzie to robią. Ale minęły lata, odkąd nawet rozważałem rozwijanie bez kontroli wersji. – Benson

+0

To się dzieje. Zwłaszcza jeśli ludzie nie są przyzwyczajeni do pracy z wersjami kodu, stanie się to w pewnym momencie. – Kevin

1

Kontrola wersji jest niesamowitym narzędziem, nawet gdy pracujesz sam, a kiedy pracujesz z kimś innym, jest to niezbędne. Polecam używanie gita. Jest bardzo szybki, ma naprawdę świetny zestaw dostępnych narzędzi i oczywiście ma github.com. Mercurial jest tak samo dobry jak git, ale działa trochę wolniej i nie ma github.

dlaczego używać git, zapoznaj http://whygitisbetterthanx.com/

Oto ładną poradnik na rozpoczęcie pracy z git: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html

+0

Ponieważ nie jestem pewien, jak to się skończy, bardziej interesuje mnie bezpłatna konfiguracja. Jeśli Git to DVCS, dlaczego potrzebujemy serwer do obsługi projektów, taki jak Github.com? –

+2

Github jest bezpłatny dla projektów, które chcesz zrobić na otwartej przestrzeni. Możesz użyć git bez github i jest świetny, ale github dodaje wiele wartości. Myślałem, że github docs może pomóc ci zacząć. – Benson

+1

Bitbucket jest taki sam jak Github, i daje ci darmowe prywatne repozytorium. Nie uważałbym Githuba za dobry punkt Git, ani żadnej innej usługi. Są usługi, które obsługują wszystkie trzy takie jak CodeBaseHQ lub znacznie lepsze niż te, o których pisałem do tej pory: Kiln (choćby dla Mercurial). Usługi hostingu repozytorium są wszędzie. – CMircea

0

Zdecydowanie Mercurial. Chociaż można używać zarówno Git, jak i SVN, Mercurial jest lepszy z dwóch powodów:

  1. Vs Git: Dobra integracja z Windows.
  2. Vs SVN: Jest rozpowszechniany.

Jeśli nie chcesz uruchamiać serwera Mercurial (co jest całkiem łatwe), dostępnych jest wiele usług. Kiln + FogBugz to DOSKONAŁA kombinacja. Istnieje również CodeBaseHQ (obsługuje również Git i SVN), Bitbucket i wiele innych.

Zanim się na nie włączysz, zdecydowanie polecam przeczytać przynajmniej Joel Spolsky's tutorial, ale zdecydowanie polecam również przeczytać Mercurial: The Definitive Guide.

+0

Dzięki. Ja też po prostu czytam (http://www.straw-dogs.co.uk/11/16/mercurial-vs-git/), że Git ma słabą obsługę Windows. Obsługa systemu Windows jest dla mnie ważna, ponieważ wszyscy używają systemu Windows, innego niż ja. Łatwość użytkowania to kolejny ważny czynnik dla mnie. Ponieważ ciężko mi będzie uczyć innych korzystania z systemu. Który z nich jest łatwiejszy z punktu widzenia użytkownika. Konfigurowanie systemu jest moją pracą i nie mam nic przeciwko temu, że jest nieco skomplikowany. –

+0

@Vinod, Git został zaprojektowany dla systemu Linux, więc nie jest zaskoczeniem Linux jest traktowany jako pierwsza klasa, OS X działa dobrze, ponieważ jest bardzo podobny, a Windows jest obywatelem drugiej kategorii. Jedynym stabilnym sposobem uruchomienia Gita jest Cygwin; jest port pod MinGW, ale uważam, że jest dość powolny i niestabilny. – CMircea

+0

@Vinod: Integracja z Subversion w Windows jest znakomita: TortoiseSVN jest tak dobry jak dla Explorera, VisualSVN jest bardzo dobrym narzędziem dla Visual Studio i praktycznie wszystkie IDE mają integrację SVN. Narzędzia do Mercurial są surowe: TortoiseHG jest użyteczny, ale nie wielki; VisualHG, nie używałem go, nie mogę powiedzieć wiele. IDE oparte na platformie Eclipse mają dobrą integrację z Mercurial. Jednak interfejs wiersza poleceń jest dość łatwy w użyciu; zobacz ten arkusz oszukiwania: http://goo.gl/iQc4 – CMircea

0

Przykro mi, nie miałem zamiaru rozpoczynać świętej wojny DVCS. Mam zamiar wypróbować Gita.

0

Tak, kontrola wersji pomoże. Aby zacząć, widzę dwie ważne kwestie dla Ciebie:

  • hostowane lub samorządnych? Czy chcesz hostować to samodzielnie na serwerze, czy też chcesz, aby usługa ta zajęła się dla Ciebie? Istnieją powody, aby iść w drugą stronę, ale jeśli nie chcesz zarządzać serwerem, szukaj hostowanej opcji.

  • SVN lub Git Są inni, ale są to najlepsi rywale o otwartym kodzie źródłowym.

Plusy i minusy (moim zdaniem):

SVN: Dobre tutoriale i dość łatwo dostać się do prędkości z. Wymóg szkolenia jest mały (trochę tego zrobiłem). SVN działa bardzo dobrze w zespole z wieloma lokalizacjami, wieloma projektami itp. Przy ograniczonej liczbie oddziałów (których nie trzeba), jest solidny. Istnieje wiele integracji z innymi narzędziami.

Git: Rozpoczęcie może być trochę trudniejsze niż w przypadku SVN. Niektóre dokumenty są dobre, ale wiele z nich jest nastawionych raczej na dogłębne zrozumienie elementów wewnętrznych. Kiedy już to zrozumiesz, ma dużą elastyczność, ale widziałem, że prawie wszyscy, którzy zaczęli to robić, naprawdę się potykają, gdy zaczynają. Nawet po miesiącach pracy z nim ludzie debatują nad najlepszymi wzorami do wykorzystania. To naprawdę miłe dla projektów 1-osobowych (gdzie chcesz śledzić historię) i dla projektów rozproszonych takich jak GitHub. Używam Git nawet dla małych zespołów, które znajdują się w jednym miejscu, ponieważ lubię szybkość i elastyczność.

Biorąc pod uwagę to, co mówisz o swoim zespole, prawdopodobnie zaleciłbym próbowanie SVN. Będą lepsze zasoby, które pomogą Ci zacząć, a będziesz mniej podatny na frustrację.

Mam nadzieję, że to pomoże.