Как пересаживать патчи в свн - PullRequest
2 голосов
/ 02 февраля 2011

Я использовал git для переноса функций между различными ветками, rebase, rebase --onto, cherry-pick - типичные инструменты, которые я использовал. Но теперь я должен работать с SVN. Мне не нравится использовать встроенную команду svn merge, потому что она объединит все коммиты в один "коммит слияния", хотя и с некоторой прослеживаемостью истории после 1.5. Скажем, если у меня есть диапазон коммитов от r100 до r110 в branchA, теперь я хочу перенести эту функцию на branchB и branchC, воспроизводя эти коммиты один за другим с одним и тем же комментарием к фиксации (разрешайте любые конфликты между ). Есть ли какой-нибудь автоматический инструмент, который может сделать это для меня?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Я не знаю ни одного автоматизированного инструмента для этого, но вы могли бы реализовать его по тем же принципам, что и git rebase.Все, что он делает - это создает временный каталог и использует git format-patch для извлечения изменений, которые вы хотите перебазировать, а затем git am, чтобы применить их обратно к целевому корню.Если вы наберете locate git-rebase в своей системе, вы можете прочитать его - это сценарий оболочки.Вероятно, это /usr/local/libexec/git-core/git-rebase.

В эквиваленте svn будут использоваться svn diff и svn log для сохранения исходной информации о фиксации, за которыми следуют patch и svn commit.

0 голосов
/ 02 февраля 2011

Если можете, используйте git-svn.Удивительная история git не будет в центральном репо, но вам будет намного удобнее управлять работой с вашей стороны.

...