我們有相當數量的使用Mercurial的ASP.Net(C#)網站。偶爾,合併時出現「某些東西」出錯,並且少量的行被複制到結果文件中;然而,合併期間並未發現合併衝突。Mercurial合併過程中的重複代碼
重複的行通常非常「通用」,如塊關閉(大括號,結束標記等)。在某些情況下,它們會導致編譯器錯誤;在其他情況下,他們造成JS失敗;在其他情況下,只是導致瀏覽器兼容性問題的無效標記。
我們有很多人在項目上合作,他們經常在分支之間分支,合併分支機構等等,然後再合併回「主要」分支之一(一個用於測試站點,另一個用於生產現場)。
當兩個分支獨立啓動,在某個點合併,然後兩個獨立合併回到測試站點主分支時,問題似乎最常發生。我們推測,由於合併到測試中的第二個分支沒有被合併到測試中的歷史記錄,因此它包含了已經由第一次分支合併合併的所有更改集合,並且在某些情況下,由於上下文是不檢測重複的過於籠統,無法正確放置,只包含它。
這個問題有一個名字嗎?這是一個已知的問題嗎?是否有避免它的程序?看來這將是一個普遍問題,但我似乎無法找到任何信息。
考慮到項目的規模和涉及的分支數量,我們考慮添加鉤子以禁止合併,如果祖先具有已經合併到目標分支的後代,但這可能會非常慢。
我們還考慮添加鉤子來強制執行某種「深度和血統」控制,以便合併只能發回到父分支,而不發生在兄弟分支,表兄弟或祖父分支上,但這會嚴重破壞幾個人的協作和工作流程。
想法?
您可以製作一個自包含的示例來演示您遇到的問題嗎?一個簡短的shell腳本可以創建一個展示問題的回購站。 – ngoldbaum
我不確定。我們的大多數問題都是由非常複雜的文件和分支模式造成的。我不確定我是否能用一個簡單的例子來實現它。但是,我會放棄它。 – nhansen
人們是否使用不同的行結尾? – planetmaker