Nie wiem, jak definiujesz „wszyscy”, ale mój zespół ma „centralne repozytorium na serwerze”, a także od czasu do czasu korzystamy z repozytoriów innych kolegów, nie przechodząc przez centralne repozytorium. Kiedy to robimy, nadal przechodzimy przez serwer, ponieważ nie wysyłamy łatek na temat tego miejsca, ale nie przez centralne repozytorium. Zwykle dzieje się tak, gdy grupa współpracuje nad konkretną funkcją i chce być na bieżąco, ale jak dotąd nie jest zainteresowana publikowaniem tej funkcji dla wszystkich. Oczywiście, ponieważ nie jesteśmy tajnymi pracownikami silosu, takie sytuacje nie trwają długo, ale DVCS zapewnia elastyczność w robieniu tego, co jest najwygodniejsze. Możemy opublikować gałąź funkcji lub nie według gustu.
Ale w ponad 90% przypadków przechodzimy przez centralne repozytorium. Kiedy nie dbam o żadną konkretną zmianę lub pracę konkretnego kolegi, jest to wygodniejsze i lepiej skaluje się, aby wyciągnąć „wszystkie zmiany moich kolegów, które zostały sprawdzone w centralnym repozytorium”, zamiast osobno wyciągać zmiany z każdego z N koledzy. DVCS nie stara się zapobiegać najczęstszemu przepływowi pracy „ściągnij z głównego repozytorium”, ale stara się, aby nie był to jedyny dostępny przepływ pracy.
„Rozproszony” oznacza, że wszystkie repozytoria są technicznie równoważne, jeśli chodzi o git
oprogramowanie, ale nie oznacza to, że wszystkie mają jednakowe znaczenie, jeśli chodzi o programistów i nasze przepływy pracy. Kiedy udostępniamy klientom lub serwerom produkcyjnym, używane przez nas repozytorium ma inne znaczenie niż repo używane tylko przez jednego programistę na ich laptopie.
Jeśli „prawdziwie zdecentralizowana” oznacza „nie ma specjalnych repo”, a następnie nie sądzę, że to co Linus znaczy mistrz, biorąc pod uwagę, że w gruncie rzeczy on musi zachować specjalne repo, które są bardziej istotne w wielkim schemacie rzeczy, niż jest jakiś losowy klon Linuksa, który utworzyłem wczoraj i planuję użyć tylko do opracowania małej łatki, a następnie usunięcia jej po zaakceptowaniu łatki. git
nie uprzywilejowuje swojego repozytorium nad moim, ale Linus go uprzywilejowuje. Jego „to obecny stan Linuksa”, mój nie. Więc naturalnie zmiany mają tendencjęprzejść przez Linusa. Siła DVCS w stosunku do scentralizowanego VCS nie polega na tym, że nie może istnieć de facto centrum, chodzi o to, że zmiany nie muszą przechodzić przez żadne centrum, ponieważ (jeśli pozwalają na to konflikty) każdy może scalić wszystko.
Systemy DVCS są również zmuszane , ponieważ są zdecentralizowane, aby zapewnić pewne wygodne funkcje oparte na tym, że koniecznie musisz mieć pełną historię (tj. Repo) lokalnie, aby cokolwiek zrobić. Ale jeśli się nad tym zastanowić, nie ma fundamentalnego powodu, dla którego nie można skonfigurować scentralizowanego VCS z lokalną pamięcią podręczną, która przechowuje całą historię operacji tylko do odczytu, które mogą być nieaktualne (myślę, że Perforce ma opcję dla tego trybu, ale nigdy nie korzystałem z Perforce). Lub w zasadzie można skonfigurować za git
pomocą swojego.git/
katalog w zdalnie zamontowanym systemie plików w celu emulacji „funkcji” SVN, która nie działa, gdy nie masz połączenia sieciowego. W efekcie DVCS zmusza hydraulikę do większej niezawodności niż jest to możliwe w scentralizowanym VCS. Jest to (bardzo pożądany) efekt uboczny i pomógł zmotywować projekt DVCS, ale ten podział odpowiedzialności na poziomie technicznym nie jest tym samym, co w pełni decentralizacja całej ludzkiej odpowiedzialności.