В нашем проекте мы стараемся держаться поближе к «официальному» рабочему процессу git, как это предлагается здесь: http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html
Мы используем ветки master
и next
, начните нашу ветку с темыначиная с master
, регулярно выполняйте тестовую интеграцию в next
, и если ветвь завершена, мы объединяем ее в master
.
Теперь иногда случается, что на topic-X
происходит какая-то разработка.Разработчик создает somefile.c
и добавляет туда код, который ему нужен для его темы.Через некоторое время другой разработчик работает над topic-Y
и узнает, что ему также необходимо создать somefile.c
и даже потребуется некоторые части этого файла из topic-X
- но не полный файл, поскольку он также содержит код, которыйотносится только к topic-X
.Возможно, ему также придется добавить другой код в этот файл.
Если бы topic-X
был бы завершен и объединен в master
, это было бы легко: мы могли бы изменить topic-Y
на master
, чтобы сделать этокод доступен.Но что, если обе темы все еще не завершены?
Поскольку topic-X
и topic-Y
действительно не связаны, за исключением этого второстепенного общего кода в somefile.c
, как мы можем избежать объединения их друг с другом ивсе же предоставим обоим разработчикам общие части из somefile.c
?
Если мы создадим свежую копию somefile.c
в topic-Y
только с соответствующими частями, мы обнаружили, что позже мы получим конфликты слияния, когда мысделать интеграцию теста в next
.Есть ли альтернатива?