gitworkflows - как именно закончить ветку? - PullRequest
3 голосов
/ 05 сентября 2011

У меня есть git-модель ветвления, очень похожая на ту, что описана в gitworkflows http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html и здесь http://members.cox.net/junkio/git/MaintNotes.html

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

В частности, у меня есть следующие ветки:

  • production: точно так же, как развернуто на нашем производственном сервере.

  • исправления: разветвленные от вершины «производства», где я исправляю ошибки и позже перенесу «добычу» в нее (и повторно развертываю)

  • несколько ветвей функций: каждая новая функция создается изолированно

  • тест: где я объединяю каждую ветвь функций, которая достаточно зрелая

  • all: где я объединяю каждую функцию, независимо от того, насколько новой или непроверенной она является

Скажем, я объединяю ветви функций F1 и F2 в этом порядке в «тест».Оказывается, они не очень хорошо играют вместе, поэтому я фиксирую исправления C1 и C2 (прямо в 'test');Позже я объединяю третью ветку F3 и продолжаю исправлять ошибки, возникающие из-за того, что эти ветви не взаимодействуют должным образом (если я обнаружил ошибку в одной конкретной функции, я бы исправил ее в своей собственной ветви, а затем заново объединил).Позже я хочу закончить только F2, потому что F1 и F3 еще не готовы (или потому что клиент находится на прихоти), поэтому я объединяю эту ветку непосредственно в «production».

Что делать дальше?

  • Что делать с исправленными ошибками, которые были в «тесте» и включали взаимодействие F2 с F1 или F3 (например, C1 и C2)?Должен ли я выбрать их в соответствующую еще не законченную ветвь?Не слишком ли много ручного труда?

  • А как насчет «теста»?Должен ли я отказаться от него и построить его заново из нового совета «производства»?Если это так, как избежать потери исправлений для веток, которые еще не находятся в «производстве»?снова вишня?Есть ли способ обновить «тест», который не требует сброса / перебазирования?

  • Было бы лучше вернуть слияние (я) F1 и F3 в «тест» икак только у меня будет только F2, объединить «тест» в производство?Обратите внимание, что эта модель также требует от меня исправления ошибок, связанных с веткой, которую я возвращаю.

1 Ответ

0 голосов
/ 05 сентября 2011

Сложность этой модели проистекает из общей ветви 'test', где выполняется слишком много операций.

Я бы предпочел:

  • изолировать текущую "интеграцию"Выполняется "F1 + F2 + F3 в своей собственной ветке 'integ'
  • сброс test на prod (при условии, что всем ясно о последствиях сброса, иготов сбросить его / ее собственную локальную клонированную ветвь test).
  • объединить integ на test (вернуть всю работу, выполненную с этими тремя функциями, но на основе prod)
...