2011-02-01 59 views
2

我曾經使用git來移植不同分支之間的功能,rebase,rebase --onto,cherry-pick是我用過的典型工具。但現在我必須與svn合作。我不喜歡使用merge命令中內置的svn,因爲它將所有提交合併爲一個「合併提交」,儘管在1.5之後有一些歷史追蹤能力。 ,說,如果我在branchA有一個範圍的提交,從R100到R110現在我想將這個功能branchBbranchC用相同提交評論重放一個這些提交一個(解決之間的任何衝突)。有沒有可以爲我做這個的自動工具?如何在svn中移植補丁

回答

2

我不知道任何自動化的工具來做到這一點的,但你可以實現沿git rebase同樣的思路之一。它所做的只是創建一個臨時目錄並使用git format-patch來提取想要變更的更改,然後使用git am將它們應用回目標根目錄。如果你在你的系統上輸入locate git-rebase,你可以閱讀它 - 這是一個shell腳本。這可能是/usr/local/libexec/git-core/git-rebase

svn相當於將使用svn diffsvn log保存原始提交信息之後patchsvn commit

0

如果可以,請使用git-svn。令人敬畏的git歷史不會在中央回購中,但您將有更好的時間來管理您的工作。

+0

在git-svn中合併的缺點是svn`mergeinfo`不知道你的惡意軟件,未來的合併不好(或者更糟 - svn merge在我的經驗中做了一些真正愚蠢的事情)。 – 2011-02-01 22:12:25