Противоречит ли использование центрального репозитория целям GIT?

StackOverflow https://stackoverflow.com/questions/460502

  •  19-08-2019
  •  | 
  •  

Вопрос

Если вы находитесь в корпоративный если над одним приложением работает много людей, не противоречит ли это общему принципу? распределенный контроль версий системе иметь официальный центральный репозиторий?

Иногда мне трудно понять концепцию распределенной системы контроля версий, такой как ГИТ в корпоративной среде.Если бы у вас не было центрального репозитория, разве не было бы PITA, чтобы выяснить, у кого есть последняя обновленная версия, из которой можно извлечь, у кого есть функция x или исправление ошибок y, которые всем нужно получить, и т. д. и т. п.

Подрывает ли это цель ГИТ использовать его аналогично СВН, с центральным репозиторием, из которого все скачивают/извлекают?Каждый раз, когда я думаю об этом, мне кажется, что я упускаю суть всего.

Может ли кто-нибудь просветить меня?

Это было полезно?

Решение

Не совсем. DCVS просто дает больше свободы в том, как взаимодействовать между разработчиками, не задействуя центральный репозиторий. Официальный репозиторий является только официальным по общему согласию . В Linux также есть центральный репозиторий, из которого & Quot; официальный & Quot; Релизы ядра создаются, но между центральным, " официальным " ;, репозиторием и клиентским репозиторием нет никакой физической разницы, как в централизованном VCS.

Другие советы

Вы, вероятно, думаете в духе этой диаграммы:

alt text

Вероятно, это будет похоже на хаос, исходящий от CVCS.«Нам нужен порядок», — слышу я?

Если бы у вас не было центрального репозитория, разве не было бы PITA, чтобы выяснить, у кого есть последняя обновленная версия, из которой можно извлечь, у кого есть функция x или исправление ошибок y, которые всем нужно получить, и т. д. и т. п.

Да.В отличие от CVCS, на самом деле не существует «последней версии».Если нет центральной локации, вы не сразу будете знать, к кому обратиться за последней версией — к Сью, Джо или Еве.Центральное расположение помогает уточнить, что представляет собой последняя «стабильная» версия.

Что-то вроде этого:

alt text

Возможно, стоит также отметить, что может существовать более одного предполагаемого центрального хранилища в зависимости от полномочий групп людей внутри организации.

Представьте себе менеджера проекта, который управляет несколькими командами разработчиков. У каждой команды может быть «центральный» репозиторий, в который они отправляют данные.Каждую неделю руководитель проекта может извлекать изменения из каждой команды в свой «центральный» репозиторий, объединять их и отправлять обратно в «центральные» репозитории своих команд.

Вероятно, это не лучший пример (я тоже все еще разбираюсь в этом), но это всего лишь один менеджер проекта.Добавьте еще несколько проектов/менеджеров и команду контроля качества, и тогда вы поймете, откуда я родом.

--

С распределенным управлением исходным кодом, центральный " официальный " хранилище устанавливается политикой, а не архитектурой инструмента контроля версий.

Определенно не победить цель Git.

Преимущество использования Git или любой другой DVCS, даже если есть центральный официальный репозиторий, заключается в все еще в том, что система контроля версий децентрализована. То есть вы можете взять свою копию репозитория, поработать над своим кодом и делать локальный коммит каждые несколько минут, если вам нужно. Вам не нужно беспокоиться о том, что коммиты находятся на незавершенном коде, который нарушает сборку, все это локально. (И очень быстро.)

Затем, когда вся работа завершена, вы можете очистить историю и поместить завершенные изменения в центральный репозиторий в однородном, чистом состоянии.

Я не думаю, что вы можете недооценивать преимущество разделения идеи " private " фиксирует и " public " выталкивает. Это позволяет отслеживать изменения, даже если вы единственный, кто извлекает выгоду из такой небольшой степени детализации.

Если вы отметите эту презентацию Git (слайд 475 и далее), модель центрального хранилища прекрасно поддерживается Git.

Вы можете заставить любого, кто хочет git push его разработку, сначала сделать git fetch + git merge, а затем нажать.

Это вовсе не противоречит цели Git и гарантирует, что все «синхронизированы» друг с другом.

Разница с & официальным сообщением Линуса; Репозиторий , упомянутый JesperE , заключается в том, что он управляется другим рабочим процессом, а именно &, диктатором и лейтенантами Quot; модель, в которой доступ на запись (push) предоставляется только для Линуса, а чтение - для всех.

Теперь: " это побеждает точку DVC "

Нет, у вас все еще есть распределенные репозитории, по одному для каждого разработчика, и они могут извлекать / объединять свои собственные репозитории в соответствии со своим внутренним рабочим процессом команды.
Однако, если они хотят внести свой вклад в центральное репо, им необходимо быть в курсе самой последней истории этого репозитория.

Одним из основных преимуществ DVCS является то, что вы можете получить последнюю версию из «официального» репозитория, а затем позаботиться о ней. Вы можете зафиксировать изменения локально и выполнить откат по желанию. Это также означает, что вы даже можете работать даже без доступа к центральной репозитории и при этом пользоваться преимуществами контроля исходного кода.

Я думаю, что с некоторой дисциплиной модель работает очень хорошо. В этой статье хорошо объясняются различные модели, которые вы можете использовать

DVCS как Git don & # 8217; t заставляет вас использовать центральный репозиторий. Конечно, & # 8217; можно объявить один репозиторий & # 8220; центральный & # 8221; или & # 8220; официальный & # 8221; или что-то еще, и в контексте компании центральный репозиторий имеет некоторый смысл & # 8212, если не для разработки, то хотя бы для целей резервного копирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top