Если вы находитесь в режиме корпоративный, когда над определенным приложением работает много людей, не противоречит ли структуре распределенный контроль версий наличие официального центрального репозитория?
Иногда мне сложно понять концепцию распределенной системы контроля версий, такой как GIT, в корпоративной среде. Если бы у вас не было центрального репозитория, разве не было бы PITA, чтобы выяснить, у кого есть последняя обновленная версия, из которой можно извлечь, у кого есть функция x или исправление ошибки y, которое все должны получить, и т. д. И т. Д.
Разве это противоречит цели GIT использовать его аналогично SVN, с центральным репозиторием, из которого все толкают / извлекают? Каждый раз, когда я думаю об этом, мне кажется, что я все упускаю из виду.
Может ли кто-нибудь просветить меня?
Не совсем. DCVS просто дает больше свободы в том, как взаимодействовать между разработчиками, не задействуя центральный репозиторий. Официальный репозиторий - это только официальный консенсусом. В Linux также есть центральный репозиторий, из которого создаются «официальные» релизы ядра, но нет никакой физической разницы между центральным, «официальным» репозиторием и клиентскими репозиториями, как в централизованной VCS.
Если вы отметите этот Презентация Git (слайд 475 и последующие), Git отлично поддерживает модель центрального репозитория.
Вы можете заставить любого, кто желает разработать git push
, сначала сделать git fetch + git merge
, а затем продвигаться.
Это нисколько не противоречит цели Git и гарантирует, что все «синхронизированы» друг с другом.
Отличие от «официального» репозитория Линуса упоминается JesperE состоит в том, что им управляет другой рабочий процесс, а именно модель «Диктатор и лейтенанты», где доступ на запись (push) предоставляется только Линусу, а чтение - для всех.
Теперь: «Это побеждает точку зрения DVC»?
Нет, у вас все еще есть распределенные репозитории, по одному для каждого разработчика, и они могут извлекать / объединять свои репозитории в соответствии с их собственным внутренним рабочим процессом команды. Однако, если они хотят внести свой вклад в центральное репозиторий, они должны быть в первую очередь обновлены с последней историей этого репозитория.
При распределенном управлении исходным кодом центральный «официальный» репозиторий создается политикой, а не архитектурой инструмента управления исходным кодом.
DVCS, такие как Git, не заставляют вас использовать центральный репозиторий. Конечно, можно объявить один репозиторий «центральным», «официальным» или чем-то еще, и в контексте компании центральный репозиторий имеет определенный смысл - если не для разработки, то, по крайней мере, для целей резервного копирования.
Определенно не победить цель Git.
Преимущество использования Git или любого другого DVCS, даже если есть центральный официальный репозиторий, - это по-прежнему, что система управления версиями децентрализована. То есть вы можете взять свою копию репозитория, поработать над своим кодом и при необходимости делать локальную фиксацию каждые несколько минут. Вам не нужно беспокоиться о том, что коммиты находятся на полузаконченном коде, который нарушает сборку, это все локально. (И очень быстро.)
Затем, когда вся работа будет сделана, вы можете очистить историю и отправить завершенные изменения в центральный репозиторий в однородном, чистом состоянии.
Я не думаю, что вы можете недооценивать преимущество разделения идеи «приватных» коммитов и «публичных» пушей. Это позволяет отслеживать изменения, даже если вы единственный, кто извлекает выгоду из такой небольшой детализации.
Вы, вероятно, думаете в соответствии с этой схемой:
Это, вероятно, будет выглядеть как хаос, исходящий от CVCS. "Нам нужен какой-то порядок", я слышу, вы говорите?
If you didn't have a central repository, wouldn't it be a PITA to figure out who had the latest updated version to pull from, who has feature x or bug fix y that everyone needs to grab, etc, etc.
Да. В отличие от CVCS «последней версии» на самом деле не существует. Если нет централизованного местоположения, вы не сразу узнаете, где увидеть последнюю версию - Сью, Джо или Еву. Центральное расположение помогает понять, какая последняя «стабильная» версия.
Что-то вроде этого:
Также стоит отметить, что может быть несколько воспринимаемых центральных репозиториев в зависимости от состава групп людей внутри организации.
Представьте себе менеджера проекта, который управляет несколькими командами разработчиков, у каждой команды может быть «центральный» репозиторий, в который они отправляются. Каждую неделю менеджер проекта может извлекать изменения из каждой команды в свой «центральный» репозиторий, объединять их и отправлять обратно в «центральные» репозитории своих команд.
Вероятно, это не лучший пример (я тоже все еще думаю об этом), но это всего лишь один менеджер проекта. Добавьте еще несколько проектов / менеджеров и команду QA, и тогда вы увидите, откуда я.
-
Одним из основных преимуществ DVCS является то, что вы можете получить последнюю версию из «официального» репозитория, а затем заняться с ней приключениями. Вы можете зафиксировать изменения локально и откатиться по желанию. Это также означает, что вы можете работать даже без доступа к центральному репозиторию и при этом пользоваться преимуществами контроля исходного кода.
Я думаю, что при некоторой дисциплине модель работает очень хорошо. эта статья хорошо объясняет различные модели, которые вы могли бы принять