Czytając kilka odpowiedzi „Dlaczego DVCS jest lepszy” na kilka pytań na Programmers.SE wszyscy wydają się twierdzić, że ogólnie rzecz biorąc, DVCS jest lepszy, ponieważ nie masz wyścigu zatwierdzania w dużych projektach, IE commit, nieaktualny, więc aktualizuj, zatwierdzaj, ponownie nieaktualny, zatwierdzaj, nadal nieaktualny itp.
DVCS ogranicza to dzięki koncepcji push. Czy jednak w bardzo dużych projektach nie byłoby „wyścigu wypychającego”, szczególnie pod koniec dnia? Wiem, że w Git można temu zaradzić poprzez ciągłe rozgałęzianie wszystkiego, ale w Mercurial nie rozgałęziasz się, tworzysz nową głowę.
Problem, który widzę
- Użytkownik próbuje pchać
- Nieaktualne (mercurial nie pozwoli Ci wypchnąć, jeśli Twoje lokalne repozytorium jest nieaktualne), więc wyciągasz i scalasz lokalne zmiany
- Użytkownik próbuje powtórzyć, ale podczas łączenia ktoś naciskał, więc znów są nieaktualne
- Pociągnij i połącz ponownie
- Wciąż nieaktualne
- Powtarzać
Brzmi znajomo?
Czy to rzeczywisty problem z bardzo dużymi i popularnymi repozytoriami rtęci? Co powiesz na to w firmie, kiedy wszyscy podejmą ostatni dzień?
--close-branch
podczas zatwierdzania - a mercurial nazwał gałęzie, nie musisz klonować do nowego katalogu
hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch