2012-10-31 10 views
9

Oceniam system kontroli wersji dla naszego zespołu (od 1 do 2 programistów) i zastanawiam się, jak kontrola wersji TFS 2012 jest porównywalna z Mercurial pod względem łączenia i rozgałęziania. Nie mamy dużego zespołu i może to być tylko ja, a może inny programista, więc nie potrzebujemy solidnych możliwości rozgałęziania/łączenia, które oferuje DVCS. Nie byłem w stanie znaleźć wiele informacji na temat kontroli wersji TFS 2012 pod względem jej możliwości. Czy ktoś może wskazać mi przewodnika lub wyróżnić niektóre funkcje? Należy pamiętać, że mamy dostęp tylko do wersji samodzielnej TFS 2012 w profesjonalnej wersji VS.Kontrola wersji TFS 2012 vs Mercurial

Dzięki

Odpowiedz

0

Wstęp:

nie jestem związany w jakikolwiek sposób z TFS i nigdy go stosować

nominalna:

Najnowszy 'tfs2012' pytanie, na najmniej niektóre (How to set up TFS to cater multiple projects to multiple clients, TFS 2012: Correllating binaries to builds and source code, TFS 2012 Disable Multiple Check-out not working), zademonstrować nam problemy, którego nie uważam nawet za pytanie w Mercurial (czasami z dodanymi narzędziami zewnętrznymi). Ale możesz też zrozumieć, że TFS jest pozycjonowane jako pełne narzędzie ALM, a nie jako czysty SCM, który jest Mercurial.

"Team Foundation Server is the Lotus Notes of version control tools" z James McKay nie jest najświeższym artykułem (luty 2011), ale przynajmniej niektóre stwierdzenia są nadal aktualne, tak myślę.

Kwota rozgałęzienia-łączących się korelować współpracować wymiar jedynie częściowo, zależy głównie od stylu rozwoju, zwyczaje programistów

+0

Nie mogę teraz znaleźć bloga, ale był tam blog MS, który zawierał nowe funkcje na rok 2012. Wygląda na to, że próbują naśladować DVCS, ale nie radzą sobie z bardzo dobrą robotą. Komentarze na blogu zgrywały je jak szalone i nie bez powodu. Używam TFS 2010 już teraz i jest to o wiele mniej korzystne od Hg (którego używam już od jakiegoś czasu). Jeśli masz wybór w tym, czego używasz, zdecydowanie sugerowałbym Hg. Istnieje mnóstwo problemów z 2010 r. I pamiętam, że naprawiali tylko niektóre w 2012 r. – Mario

+1

TFS 2012 nie próbowało naśladować DVCS, tylko zaimplementowały lokalne obszary robocze, które już posiadały większość innych VCS. Bardzo wątpię, że funkcje DVCS przejdą na TFS, ponieważ wymagają pełnego serwera SQL do hostowania. Mogą jednak dodać wiele lokalnych kontroli checkin, co wydaje się naturalną kontynuacją funkcji lokalnego obszaru roboczego. Lokalne obszary robocze rozwiązały wiele problemów związanych z "tfs jest lotosowymi nutami narzędzi kontroli wersji", szczególnie w odniesieniu do SVN. – Betty

+0

@Mario: TFS 2012 nie próbuje naśladować DVCS. Myślę, że mylisz nasze ogłoszenia o "lokalnych obszarach roboczych" (które udostępniają model edycji/scalania/zatwierdzania, w przeciwieństwie do poprzedniego modelu kasowania/edycji/sprawdzania). –

0

Jeśli jesteś w małym zespole, iść z Mercurial bez wątpienia.

Mercurial jest lekki i elastyczny w odniesieniu do specyficznego przepływu pracy, z którego będziesz korzystać. Pasuje on do mniejszych zespołów o wiele lepiej, w rzeczywistości pasuje nawet do samodzielnego dewelopera, ponieważ nie nakłada żadnych kosztów administracyjnych.

O potrzebie łączenia, to naprawdę nie jest zaawansowana funkcja, jak sugerujesz: jest to bardzo podstawowa cecha, że ​​większość (wszystkie?) Nierozdzielone VCS po prostu nie może się naprawić. Może nie potrzebujesz tego teraz, ale jeśli kiedykolwiek to zrobisz, znajdziesz to właśnie w Mercurial i po prostu działa.

+0

Jeśli uważasz, że TFS ma teraz wbudowaną obsługę repozytoriów GIT (http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx), myślę, że można powiedzieć istnieje bardzo mały powód, dla którego małe zespoły programistów preferują scentralizowane rozwiązanie za pośrednictwem DVCS. Centralizacja wciąż może mieć swoje miejsce w niektórych dużych organizacjach. – gnz

2

Poprzednie "odpowiedzi" są trochę dziwne. Rozgałęzianie i łączenie w TFS 2012 działa dokładnie tak, jak byś tego oczekiwał, zarówno z GUI, jak iz implementacją linii poleceń. Oto dobry dokument, który obejmuje ten temat dość całkowicie:

ALM Ranger Guideaktualizowane

+0

Jestem zainteresowany tą "odpowiedzią". Czy kiedykolwiek używałeś obu, a jeśli tak, to w jaki sposób są podobne lub różne? Nigdy nie słyszałem o kimś, kto używa obu i kochających TFS. Słyszałem od wielu ludzi, którzy nigdy nie używali czegoś innego, mówią, że jest dobrze. Również link nie wydaje się być rzeczywisty przewodnik (przycisk pobierania na dole idzie do "określonej wersji nie znaleziono") – Mario

+1

Link zaktualizowany. Nigdy nie używałem Mercurial, ale użyłem Gita. Istnieją pewne oczywiste różnice, ponieważ TFS nie jest rozprowadzany, więc porównanie jabłek z jabłkami jest naprawdę niemożliwe. Ale rozgałęzienie/scalanie robi to, co chcesz zrobić. Utwórz oddział, pracuj w oddziale, połącz kod z rodzicem. –

7

Mercurial rozgałęzienia różni się od TFS w jeden sposób krytyczny. Podczas gdy TFS przechowuje twoje gałęzie w innej części przestrzeni, Mercurial przechowuje je w samej historii. To znacznie zmniejsza tarcie związane z rozgałęzianiem i łączeniem. Oznacza to na przykład, że:

  • Oddziały są tworzone niejawnie, po prostu przez aktualizację do wersji innej niż najnowsza, a następnie zatwierdzanie.
  • Oddziały są również niejawnie zamknięte, ponownie, po prostu przez scalenie.
  • Gałęzie można ponownie otworzyć niejawnie, w taki sam sposób, w jaki zostały utworzone.
  • Mercurial umożliwia bardzo łatwe przełączanie między gałęziami. Nie trzeba konfigurować oddzielnych mapowań obszaru roboczego i nie trzeba zmieniać z jednego katalogu na inny.
  • Oddziały mogą być anonimowe.
  • Podczas gdy TFS ma "bezpodstawne scalenie" (co zasadniczo oznacza, że ​​ma ogromne problemy z gałęziami, które nie są w bezpośredniej relacji rodzic/dziecko), nie ma czegoś takiego w Mercurial. Zawsze można znaleźć wspólne pochodzenie między dwiema zmianami, niezależnie od tego, jak daleko od siebie rozstają się ich poszczególne gałęzie.
  • Graficzny widok twoich oddziałów w TortoiseHg jest zintegrowany z twoją historią projektu, dzięki czemu łatwiej zrozumieć, jak działa rozgałęzianie i scalanie.

Istnieje kilka zalet rozgałęziania i łączenia, które dotyczą nawet małych zespołów lub twórców solo. Jednym z takich przykładów jest możliwość naprawiania błędów w systemie produkcyjnym, nawet jeśli masz inne funkcje w fazie rozwoju. Innym przykładem jest rozwój eksploracyjny lub eksperymentalny: jeśli jedno podejście nie działa, możesz łatwo wrócić na początek i spróbować drugiego, odmiennego podejścia, zachowując przy tym pierwotne podejście, na wypadek gdybyś musiał się do niego odnieść.

+0

To świetny napis, dzięki za jasność –