Избегайте конфликта слияния, когда фиксация зависит от другой фиксации при проверке кода - PullRequest
1 голос
/ 28 сентября 2019

У меня есть следующее дерево в Git:

      A new_branch
     /
B---C---D---E master

A использует изменения от C.C находится на удаленном ведущем устройстве на Gerrit, ожидая проверки кода.

Какой теперь будет идеальный способ передать A на удаленное ведущее устройство на Gerrit без каких-либо конфликтов слияния?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Это зависит от того, как вы привыкли работать с рецензентами.

Нередко бывает несколько коммитов для рецензирования в цепочке отношений.Единственное, что вам нужно иметь в виду, это правильно выделить цепочку отношений .Например, в сообщении о фиксации [<commit-ID>] (<child-ID>) <message>.

ИМХО это лучший способ обработки сценариев, таких как:

  • фиксация B: обычная функция
  • commit C: библиотека удобных плагинов
  • commit A: функция, использующая удобный плагин
  • commit D: другая функция, использующая удобный плагин
0 голосов
/ 29 сентября 2019

ИДЕАЛЬНЫЙ способ - не основывать коммит А в коммите С, потому что он все еще ожидает проверки кода.Вы должны основывать свою работу только на объединенных (отправленных) коммитах.Итак, в вашем примере вы должны работать параллельно с C следующим образом:

  A new_branch
 /
B---C---D---E master

На самом деле, если вы говорите, что commit C все еще ожидает проверки кода, так что это правильный способ рисовать схему:

  A new_branch
 /
B master
 \
  C---D---E waiting for review

Если вам действительно нужно работать на основе коммита C, тогда вы будете настаивать на Геррите так же, как и раньше:

$ git push origin HEAD:refs/for/master

Но вы должны иметь в виду, чтоесли во время процесса рецензирования коммит C был изменен, вам нужно будет перебазировать коммит A для нового коммита C ', прежде чем он может быть объединен с master.

...