我正在使用svn。我有兩個分支,他們都進行了很多變化。 此外,其中一個分支很多文件被重命名,所以現在svn不能幫助我合併這些文件中的更改(衆所周知的svn限制)。git-svn merge 2 svn分支
- 是否有可能使用git-svn來執行分支合併?
- 請問git-svn也會重命名文件嗎?
感謝
我正在使用svn。我有兩個分支,他們都進行了很多變化。 此外,其中一個分支很多文件被重命名,所以現在svn不能幫助我合併這些文件中的更改(衆所周知的svn限制)。git-svn merge 2 svn分支
感謝
git merge
應該能夠檢測(達到一定點)重命名。
recursive
這隻能使用3路合併算法解決兩個頭。
此外,這可以檢測並處理涉及重命名的合併。
這是拉動或合併一個分支時的默認合併策略。
但是git-svn
只能從/導入/導出到SVN,而不是合併。
並且合併是棘手:
CAVEATS
爲了簡單起見,用一個能力較少的系統(SVN)互操作,則建議所有
git svn
用戶克隆,提取和dcommit直接從SVN服務器,並避免git存儲庫和分支機構之間的所有git克隆/拉/合併/推操作。
在git分支和用戶之間交換代碼的推薦方法是git format-patch和git am,或者只是向SVN存儲庫傳送代碼。運行git merge或git pull不建議在您計劃從中提交的分支上。 Subversion不代表任何合理或有用的合併方式;因此使用Subversion的用戶無法看到您所做的任何合併。此外,如果您從SVN分支的鏡像git分支合併或拉出,dcommit可能會提交到錯誤的分支。
如果合併,請注意以下規則:混帳SVN dcommit將嘗試在SVN的頂部犯
git log --grep=^git-svn-id: --first-parent -1
提交名爲因此,您必須確保最近提交您想要提交的分支是合併的第一個父代。否則就會出現混亂,尤其是如果第一個父代在同一個SVN分支上是較舊的提交。
我曾經在大學的一個項目中遇到同樣的問題。我所做的是以下幾點:
git svn clone -s https://…
)git checkout master; git merge branch
)svn co https://…/trunk
)svn rm
)svn ci
)感謝您的有益總結。 git合併是否容易,通過svn執行它更容易嗎? (我試圖找到這個答案:http://stackoverflow.com/questions/2945842/using-git-svn-or-similar-just-to-help-out-with-svn-merge) – inger 2010-06-05 19:37:32
還有一件事,你是否試圖提交給svn?如果是這樣,你得到/期待什麼問題? – inger 2010-06-05 20:21:32
@inger,沒有我與svn合作,以確保我不會推動只有git才能理解的半合併。 – knittl 2010-06-06 17:51:18
使用SVN合併功能合併SVN分支,它會更加快速。 這些問題使用Git是相當複雜的,它創造了太多的衝突...
看到這個答案:http://stackoverflow.com/questions/2945842/using-git-svn-or-similar-just-to -help-out-with-svn-merge/3585702#3585702 – 2010-08-27 15:29:01
查看http://stackoverflow.com/questions/714589/can-git-svn-correctly-populate-svnmergeinfo-properties ...「編輯:」部分第二個答案(不是接受的答案)是特別好的 – 2012-01-12 13:13:19