Чем концепция git "local-repository" отличается от "ветвей разработчика"? - PullRequest
1 голос
/ 29 апреля 2011

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

Эта ветвь перед выпуском названа так, потому что была другая ветвь (основная), из которой мы делали наши промежуточные и производственные выпуски.Ветви были настроены таким образом, чтобы в ветку выпуска можно было объединить только код из предварительной версии.Эти слияния были нашими контрольными точками проверки кода.Сборки CI также были сделаны из этой предварительной версии, и каждый разработчик должен был перейти от «предварительной версии» к своей собственной ветви к сложным проблемам слияния миграции, когда разработка этой части работы была завершена.

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

С помощью частых (1-2 раза в неделю) 30-минутных собраний по обновлению статуса мы, как команда, принимаем решение о том, что будет входить в QA, а что нет для этого конкретного выпуска QA.

Эта система работала, но я нахожу много обид за ветки разработчиков при поиске по этой теме.Кажется, есть большой энтузиазм по поводу функции локального репозитория git.Тем не менее, кажется, что это просто разные способы решения одних и тех же проблем.Не принимая во внимание кросс-сетевые проблемы, которые решаются локальными репозиториями, такие как задержка регистрации и т. Д.

Ответы [ 3 ]

3 голосов
/ 29 апреля 2011

Существует три основных различия:

  1. Локальный репозиторий означает только то, что он является локальным для вашей системы, и если вы когда-нибудь оказались на необитаемом острове без подключения к Интернету,вы все равно сможете зафиксировать свои изменения.Одна из лучших особенностей Git заключается в том, что вам не нужно подключаться к своему репозиторию, чтобы иметь возможность воспользоваться системой контроля версий.Разработчики иногда работают удаленно, не имея доступа к главному репозиторию, и это обычно может быть грязно, если у вас есть система, такая как Subversion , Perforce или другой тип централизованной системы управления версиями репозитория.С Git и BitKeeper вы можете легко работать в автономном режиме.

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

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

2 голосов
/ 29 апреля 2011

DVCS, такой как Git или Mercurial, представляет рабочий процесс публикации (push / pull), который ортогонален ветвлению .

Это означает, что:

  • , хотя все разработчики работают в одной и той же ветке, они могут делать это "в частном порядке" в своем собственном репо: до тех пор, пока онине публиковать, что они работают (т. е. подтолкнуть к вышестоящему репо), что общая ветвь на самом деле их собственная.Они могут регулярно извлекать (извлекать + объединять), чтобы не слишком сильно отклоняться от работы других по той же теме, но они будут настаивать, когда будут готовы.

  • разработчик, возможно, даже никогда не продвинет свою работу, но интегратор может получить из вышестоящего репозитория «интеграция» столько веток (с тем же именем), сколько у разработчиковрепозитории, которые необходимы интегратору: каждая ветвь будет храниться в репозитории интеграции в своем собственном пространстве имен (dev1/branch, dev2/branch, dev3/branch, ...)
    Оттуда интегратор может просматривать коммиты каждыйВетка разработчика представляет и решает объединить или нет эти изменения в репозитории интеграции.
    Примечание: в Mercurial это немного отличается, поскольку именованные ветви имеют имена в глобальном пространстве имен (см. Jakub Narębski 's ответ на вопрос " Git и Mercurial - сравните и сопоставьте ", взглянув на "Личное мнение: лично я считаю, что" именованные ветви "..." часть)

Таким образом, git "local repo" преобразует любую ветку в ветке разработчика (что не мешает разработчику создать свою собственную частную ветку поверх тех, что приходят изmmon repo).
Эти ветки доступны для активной публикации (push от разработчика) или пассивной публикации (извлечение или извлечение из репозитория upstream, без прямого вмешательства указанного разработчика)


Что David W s answer (upvoted) проясняет разницу между:

  • , работающими из ветви в новой ветви (которая может быть связана сразработчик, хотя я и предпочитаю ветви, связанные с задачей или набором задач, чтобы изолировать усилия по разработке: см. « Когда следует ветвиться »)
  • , работающий от ветви, клонированной изрепо в вашем собственном репо: вы можете работать с той же веткой , за исключением того, что это клонированная (копия) указанной ветки из репо вышестоящего репозитория.
    Если репозиторий разработчика не доступенинтегратор, тогда да, как говорит Дэвид: «В Git изменения разработчика недоступны до тех пор, пока разработчик не предоставит свои изменения».
    Если репозиторий разработчика доступен (даже с помощью простого " локальный протокол"как сетевой ресурс), тогда изменения разработчика могут быть перенесены из нижестоящего репо в интегрированное репозиторий восходящего потока)

См. Также" Опишите ваш рабочий процессиспользование контроля версий (VCS или DVCS)"для другого способа противопоставить централизованный способ VCS использования ветвей и способ децентрализованного VCS использования репозиториев.

0 голосов
/ 29 апреля 2011

Если это сработало для вас, отлично.Я думаю, вы обнаружите, что с DVCS это будет работать еще лучше, потому что они могут поддерживать все, что вы делаете сейчас, и даже больше.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...