Чем концепция «местного репозиции» GIT отличается от «ветвей разработчиков»?

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

Вопрос

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

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

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

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

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

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

Решение

Есть три основных различия:

  1. Местный репозиторий означает именно это: он локальный для вашей системы, и если вы когда -нибудь оказались на необитаемом острове без подключения к Интернету, вы все равно сможете совершить свои изменения. Одна из лучших вещей в GIT - это то, что вам не нужно подключаться к своему репозиторию, чтобы иметь возможность воспользоваться системой управления версиями. Разработчики иногда работают удаленно, не имея возможности получить доступ к основному репозиторию, и это обычно может быть грязным, когда у вас есть такая система, как Подрывная деятельность, Перфороз, или другой тип централизованной системы управления версиями репозитория. С Git а также Bitkeeper, вы можете легко работать в автономном режиме.

  2. В Разработчик филиал Ситуация, как правило, разветвляетесь от интеграция ветвь на ваш разработчик ветвь и слияние обратно в интеграция ответвляться. В GIT вы не слияете, но отправляете исправления, и вы можете отправить свои изменения не только на Мастер репозиторий, но другим разработчикам, не отправляя свой патч Мастер репозиторий. Анкет Это позволяет разработчикам работать вместе, не касаясь Мастер репозиторий.

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

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

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

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

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

  • Разработчик может даже никогда не подтолкнуть свою работу, но интегратор может получить из репозитория «Интеграция» вверх по течению, как много филиалов (с тем же названием) из столько репозиторов разработчика, которые необходимо интегратору: каждый филиал будет хранить в Интеграционная репо в своем собственном пространстве имен (dev1/branch, dev2/branch, dev3/branch, ...)
    Оттуда интегратор может посмотреть на коммиты филиала каждого разработчика, и принять решение об объединении или нет этих изменений в репо интеграции.
    Примечание: это немного отличается от Mercurial, так как с именем Branch есть имена в глобальном пространстве имен (см. Джакуб НардбкиОтвет на "Git и mercurial - сравните и сопоставьте", глядя на "Личное мнение: я лично думаю, что" названные ветви "..." часть)

Таким образом, git "Local Repo" преобразует любую филиал в филиале разработчика (что не мешает разработчику сделать свою собственную частную филиал поверх тех, кто поступает из общего репо).
Эти филиалы доступны для активной публикации (толчок разработчиком) или пассивной публикации (тяга или извлечение из восходящего репо, без прямого вмешательства со стороны указанного разработчика)


какая Дэвид В.S. отвечать (uptoted) делает яснее разницу между:

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

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

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

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

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