2010-11-24 48 views
1

在我的主人結帳我可以做一個git svn info,網址爲svn://myrepo.com/trunķ 當我new_feature結賬svn的網址是svn://myrepo.com/branches/new_feature爲什麼會的Git合併設置我的svn網址分支

在我的主結帳上運行git merge new_feature後,主網址更改爲svn://myrepo.com/branches/new_feature。這使我的主人和new_feature指向某個地方,我不能再git svn dcommit中繼。

注意:這是上週工作,我唯一能想到的可能是不同的是我需要更新分支到主幹。我在我的分支上跑了git merge trunk。也許它會不會讓我現在把我的分支合併回主幹?

我想知道這是爲什麼,以及如何防止發生或發生後修復它。

回答

3

git svn沒有認真地嘗試在svn數據模型中表示git合併(可能是因爲它不能正確完成)。 svn分支信息從git日誌消息中獲取;不知何故,new_feature首先出現在日誌中。在第一次合併後,父母本來會更好(編輯:git-svn可能做到了,見下文)。

無論如何,推薦的處理方法不是記錄合併(改用git merge --squash),或者完全切換到git。

看到你的編輯:你合併回樹幹肯定是快進的。所以git-svn跟着它看到的第一個合併的第一個父節點,這是合併中繼到new_feature,直到它找到一個帶有git-svn元數據的日誌消息。通過使用git merge --no-ff feature_branch防止git快速轉發合併到主幹。

+0

謝謝,我能解決它。通過創建一個新的本地/樹幹分支並運行git merge --squash。看起來,沒有--squash的第一個從trunk到new_feature的合併做了真正的損害。感謝您的幫助。除了企業政治之外,我很樂意全力配合。 – 2010-11-24 21:37:08

0

git documentation

If you do merge, note the following rule: git svn dcommit will 

attempt to commit on top of the SVN commit named in 

git log --grep=^git-svn-id: --first-parent -1 

......所以,當你合併的new-feature分支(經過了dcommitted並具有git的日誌與git-svn-id指向它的分支)到您的master分支(這之前在合併了git-svn-id日誌指着樹幹)你給master一個--first-parent日誌,git-svn-id指向了錯誤的分支new-feature

這就是爲什麼有警告遍佈解放軍在合併由svn支持的東西時要小心(或者根本不要這樣做)。

相關問題