2014-01-28 42 views
-1

我正在尋找一個非常常見但被忽視的腳本,直到最後一分鐘的行動,SVN合併。SVN快速合併

理想情況下,它應該爲當前用戶運行,並讓我們說最後2天以您的名義提交。因此,在您處理分支的情況下,運行此腳本會將您的更改合併到中繼並啓動提交對話框,以便在提交之前進行驗證。

我們的分支策略允許一個trunk-branch1-branch1.1,所以你會從最後開始併合併到trunk。

鑑於我們有很多開發人員,我不是在尋找銀彈,而是能夠促進這一過程的東西。

我看了一下svn命令(mergeinfo),但不知道如何應用'按用戶'過濾器。

非常感謝

+0

爲什麼不在普通的'svn merge'中使用cherry-pick或'complete'形式?你已經試過了什麼? –

回答

1

我不明白你爲什麼試圖按用戶合併。老實說,你似乎讓你的生活看起來更加困難。合併一個用戶像這樣合併的一件事很可能會產生衝突,在我看來,這種衝突擊敗了合併腳本的全部目的。

但是,您可以使用svn mergeinfo --show-revs eligible ^/branches/mybranch ^/trunk來查找符合您的分支的合併回到主幹的資格。然後在每個修訂版上運行svn log -r $REV,並忽略不在適當日期範圍或用戶中的修訂。然後合併這些提交。當1.9出來時mergeinfo將有--xml--log選項。所以,你可以在兩個步驟合併成一個單一的命令,並使用XSLT做類似我給出的答案爲您篩選:List all files which are changed b/w two revision by a user

所有這一切說,你應該只使用svn merge --reintegrate ^/branches/mybranch在您的當前目錄的更新日期和未修改的主幹工作副本,它將合併來自分支的所有更改。如果您使用的是1.8,您可以從1.8 detects if a merge is a reintegration automatically開始刪除--reintegrate選項。這樣做會最大限度地減少衝突。

如果你有嵌套分支,你必須通過所有分支合併到樹幹。所以如果你有一個分支叫做branch1 off trunk和branch1.1 off branch1,那麼你需要從branch1.1重新集成到branch1,然後從trunk中合併回去。