2013-05-09 100 views
0

我們一直在工作中使用工作流幾個月,其中SVN開發人員創建SVN修復分支,這些分支使用git合併到一個集成分支中,並提交回SVN,與dcommit一次合併。在這個工作流程中,有一個git-svn回購協議完成所有合併工作。git-svn:保留兩個不同的git-svn回購合併

這個工作流程工作得很好,git合併通常忠實地保存在原始的git-svn回購中。

但是,現在我們決定將合併工作負載分散到許多用戶,每個用戶都有自己的git-svn repo。不幸的是,我們現在發現由一個git-svn用戶執行的合併有時(但並非總是)在另一個用戶的git-svn repo中顯示爲單個父提交,而不像兩個父合併。

合併歷史記錄的損失對歷史分析造成嚴重破壞,並導致不必要的合併衝突,因爲git無法再識別正確的合併基礎,如果在所有存儲庫中保留合併父項,它可以執行的操作。

有沒有人有任何幫助避免導致合併歷史記錄在一個或多個git-svn回購中與常見的SVN回購同步的情況下損壞的做法?

+0

我一直在使用git-svn一段時間,並沒有遇到這個問題。也許是由於我遵循了一個簡單的工作流程。你提到的所有git分支都是「分支」嗎?您可以提供您工作流程的更多細節。 – 2013-05-09 13:50:27

+0

分支是SVN分支。 git合併總是在對應於兩個SVN分支的提示的兩個git提交之間,並且在成功合併之後,總是立即dcommit'd到SVN。 正如我所說,這一直工作得很好,當時我正在做所有的整合合併。然而,現在一個同事已經開始承擔一些合併工作量,有時我失去了他合併的第二個父母,反之亦然 - 他有時會失去我所做合併的第二個父母。 – jonseymour 2013-05-09 13:59:19

+0

BTW:我們有341個SVN標籤和560個SVN分支。因此,集成分支尖端的svn:mergeinfo屬性值非常複雜和龐大。 – jonseymour 2013-05-09 14:05:08

回答

0

我並不確切知道是什麼原因導致這個問題,但我發現一個可接受的解決方法是通過使用移植重建中的git的合併按照技術說明如下:

Fixing SVN Merge History in Git Repositories

雖然我還沒有爲filter分支感到困擾,因爲我並不完全相信它與git-svn用於跟蹤SVN和git提交之間的映射的svn rev映射很好。