Лучшие практики Рабочего процесса мерзавца

Глупый вопрос и рассматривает меня как полностью новичок к управлению версиями.

Я плохо знаком с Мерзавцем (я использовал подрывную деятельность прежде, но просто основы) я понимаю основы Мерзавца и ее переходящих команд, у меня есть мнимая ситуация, которым нужен Ваш совет.

Предположим, что мое программное обеспечение в настоящее время в v1.2, стабильном и выпущенном.

My Software
       v1.0
       v1.1
       v1.1.1
       v1.2 <- Current, Compilable and Released

Сценарий:

У меня есть два разработчика, John и Eric.

  • John ответственен за исправления ошибок, о которых сообщают клиенты.
  • Eric ответственен за новые возможности, эксперимент с ними, и разработайте петли.

Это - январь прямо сейчас.

John работает над большим количеством исправлений ошибок на основе выпуска v1.2. Каждый день он обязан передавать свой код назад репозиторию (GitHub), программное обеспечение не могло бы скомпилировать в зависимости от его состояния.

Eric экспериментирует, этой новой функции Wiki от основных характеристик нравится, добавляет WYSIWYG-редактор к расширенным функциям как управление diffing/version, снова, он обязан передавать свой код назад репозиторию, программное обеспечение не могло бы скомпилировать ни одного в зависимости от того, где он в.

Цель

  1. В любое время я могу вытащить стабильный, компилируемый выпуск v1.2
  2. Февраль, я хочу, чтобы v1.3 был выставлен с исправлениями ошибок всего John's и в зависимости от того, если Eric сделан (по крайней мере, сделали основную характеристику), выпуск это также.

С МЕРЗАВЦЕМ, каков рабочий процесс?

Если я понимаю МЕРЗАВЦА правильно, и Eric и John должны создать их собственное ответвление и в феврале, сделать, чтобы они объединились что работы с ведущим устройством?

Спасибо

13
задан Brian Campbell 28 December 2009 в 23:07
поделиться

5 ответов

Я бы установил две ветки интеграции в основном репозитории:

  1. master: ветку интеграции для новых возможностей (поддерживается Эриком)
  2. 1.2-stable: ветку интеграции для исправлений ошибок (поддерживается Джоном)

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

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

То же самое относится и к Джону. Если, например, Джону придётся исправлять два выпуска (например, выпуск 1 и выпуск 2), то у него должны быть ветки fix-issue1 и fix-issue2. Эти ответвления должны начинаться с кончика 1,2-ой ветви. После исправления одной из проблем, скажем issue1, Джон может объединить ответвление fix-issue1 обратно в 1.2-стабильное. Если коды в ведущей и 1.2-стабильной ветках не сильно расходятся, то Эрику, вероятно, было бы неплохо иногда производить слияние ветки 1.2-стабильной с ведущей, чтобы включить накопленные исправления в следующий релиз продукта.

Когда придёт время выпуска 1.3, Эрик должен убедиться, что все накопленные исправления в 1.2-стабильной ветке и готовые ветки функций были слиты в ведущей. Тогда он может просто пометить v1.3 и создать новую ветку 1.3-stable.

.
8
ответ дан 2 December 2019 в 00:18
поделиться

GIT очень гибкий, и вы можете приспособить его использование к вашему конкретному сценарию. Тем не менее, мне нравится подход branch-per-feature, и я также предпочитаю "перебазинг" слиянию.

Branch-per-feature означает, что вы создаёте ветку для каждой функции или дефекта, над которым вы работаете. Обычно ответвление живёт только до тех пор, пока разрабатывается и удаляется после слияния/переслияния с ведущим.

Переследование означает, что вместо того, чтобы произвести слияние ответвления с ведущим, вы на самом деле вытаскиваете изменения из ведущего вниз и помещаете их перед всеми изменениями, которые вы сделали в своём ответвлении. В сущности, это слияние приводит к слиянию "ГОЛОВА" с началом изменений в вашем ответвлении. В результате создаётся впечатление, что все изменения, которые вы сливаете, начались после последней ревизии HEAD.

Хорошей практикой также является перемещение ваших ответвлений в удалённое хранилище, в случае, если кому-то другому понадобится посмотреть или поработать с ответвлением, он также предоставляет резервную копию вашей работы. Опять же, когда вы закончили с ответвлением, я предлагаю почистить после и удалить старое ветки.

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

.
2
ответ дан 2 December 2019 в 00:18
поделиться

Джон должен работать над master, Эрик должен работать над веткой с именем WYSIWYG или какой-нибудь веткой с соответствующим именем.

Если вы хотите проверить, какой может быть версия 1.3, вы должны подтолкнуть master-ветку Джона к новой ветке с именем stable, если у вас её ещё нет, если у вас уже есть стабильная ветка, просто снова слить master в stable, это будет делаться каждый раз, когда вы захотите выпустить исправления ошибок.

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

.
1
ответ дан 2 December 2019 в 00:18
поделиться

Противоположные рекомендации для того, кто поддерживает мастер-ветку от Вопросительного Марка и Кайтани-Question Mark, рекомендуя Джону работу над мастером, в то время как Кайтани, рекомендуя Эрику работу над мастером-демонстрациями, обеспечивает гибкость рабочего процесса Git'а.

Что касается Криса Никола, рекомендующего ребейзинг вместо слияния, то я бы проявил ту же осторожность, что и в Pro Git Скотта Чакона , который доступен для бесплатного онлайн-чтения , и я настоятельно рекомендую: "Не делайте ребейзинг коммитов, которые вы перенесли в публичный репозиторий". Так как "каждый день [Джон] должен коммитировать свой код обратно в репозиторий (GitHub)", я бы, вероятно, держался подальше от ребейзинга, за исключением тех случаев, когда он используется локально Джоном и Эриком.

Я бы порекомендовал вам прочитать раздел "Рабочие процессы разветвления" в Pro Git, в котором описаны давно работающие ветки и тематические ветки. Вероятно, вам также стоит взглянуть на раздел "Распределенные рабочие процессы", в котором описывается централизованный рабочий процесс, рабочий процесс интегратора-менеджера, а также рабочий процесс диктатора и лейтенанта.

.
3
ответ дан 2 December 2019 в 00:18
поделиться

Если я правильно понимаю GIT, то и Эрик, и Джон должны создать свою собственную ветку, и в феврале, пусть они сливают то, что работает с мастером?

да

.
1
ответ дан 2 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: