Как я отправляю патч другому разработчику и избегаю конфликтов слияния?

Окончательно решено, включая 5-секундный сон после чистого использования и до GetFiles () :

System.Threading.Thread.Sleep(5000)

Спасибо за ваше время и надежду это помогает любому с подобной проблемой.

12
задан Spoike 16 November 2008 в 10:52
поделиться

4 ответа

В мерзавце можно передать вывод по каналу git-diff между двумя фиксациями как это:

git diff fa1afe1 deadbeef > patch.diff

Отправьте patch.diff разработчику и позволяют ему git-apply это к его рабочей области как это:

git apply patch.diff

Если другой разработчик уже имеет фиксации в наличии в своем репозитории, он мог бы всегда передавать его по каналу в себе, не объединяясь как это:

git apply < git diff fa1afe1 deadbeef

Можно затем добавить и фиксировать изменения в разности обычный путь.


Теперь здесь прибывает интересная часть, когда необходимо объединить патч назад к основному ответвлению (который общедоступен). Рассмотрите следующее дерево пересмотра где C* применяемый патч от C в основном ответвлении:

A---B---C---D          master, public/master
     \
      E---C*---F       feature_foo

Можно использовать git-rebase обновить ответвление темы (в этом названном примере feature_foo) с он - восходящая голова. То, что это означает, - когда Вы вводите в следующем:

git rebase master feature_foo

Мерзавец перестроит дерево пересмотра как это и также применит сам патч:

A---B---C---D          master, public/master
             \
              E*---F*  feature_foo

Слияние с восходящим ответвлением теперь будет легким слиянием ускоренной перемотки вперед. Также проверьте что новые фиксации E* и F* работайте предыдущим E и F соответственно.

Можно сделать то же самое против ответвления другого разработчика с помощью тех же шагов, но вместо того, чтобы делать его на общественности repo, Вы будете выбирать изменения из репозитория разработчика. Таким образом, Вы не должны будете просить у другого разработчика патч, если это уже доступно от того, что он опубликовал в своем repo.

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

20
ответ дан 2 December 2019 в 05:56
поделиться

Дескрипторы Bzr, отправляющие "директиву слияния", означая это, отправляют патч за Вами так, чтобы другая сторона могла просто нажать "OK" для слияния и существует меньше futzing вокруг с, исправляют/применяют и т.д.

просто: $ bzr отправляют-o mycode.patch

2
ответ дан 2 December 2019 в 05:56
поделиться

В SVN можно просто внести изменения затем перед фиксированием, передать вывод по каналу svn разности в файл как таковой

svn diff > mypatch.diff

можно затем вернуться изменения и применить патч позднее с помощью

patch -p0 -i mypatch.diff

Как всегда вслепую не применяют патчи к Вашему коду и всегда осматривают их сначала.

Можно также найти, что патч повредит исходный код, если исходные файлы изменились достаточно значительно, так как патч был взят.

Вы также не можете гарантировать, что не будет конфликтов слияния, когда Вы попытаетесь зарегистрироваться в коде.

2
ответ дан 2 December 2019 в 05:56
поделиться

В Подверсии нет никакого хорошего способа сделать это. Да, можно использовать svn разность + патч, но это только отложит проблемы, пока Вы не соберетесь объединиться, и к тому времени возможности состоят в том, что Вы забыли об этом.

Путем Вы сделали бы это в Подверсии, должен будет создать ответвление, сделать фиксацию на ответвлении и попросить, чтобы получатель патча переключился на ответвление. Затем можно объединить ответвление назад для транкинга обычным способом.

2
ответ дан 2 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

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