CVS是否允許將文件提交到與檢出的文件不同的分支?該手冊頁和some sites建議,我們可以做一個cvs ci -r branch-1 file.c
,但它提供了以下錯誤:承諾與提交不同的分支-r
cvs commit: Up-to-date check failed for `file.c'
cvs [commit aborted]: correct above errors first!
我做了一個cvs diff -r branch-1 file.c
,以確保在我BASE
和branch-1
file.c的內容確實是相同的。
我知道我們可以使用cvs co -r branch-1
手動檢出,將主分支合併到它(並修復任何合併問題),然後進行檢查。問題是有很多分支,我想使用腳本自動化事物。 This thread似乎暗示-r
已被刪除。有人可以證實嗎?
如果ci -r
不支持,我想到做這樣的事情的:
- 確保分支版本和基本版本是帶有
cvs diff
- 檢查同樣在當前分支
- 將文件的副本保存在臨時文件中
- 對於每個分支:
- 從b檢出牧場與
-r
- 與臨時文件替換該文件
- 入住(它會去分支爲
-r
粘性)
- 從b檢出牧場與
- 刪除臨時文件
替換部分聽起來像是在欺騙我 - 你能想到可能發生的任何潛在問題嗎?任何我應該小心的事情?有沒有其他的方法來自動化這個過程?
如果存在編輯撤消操作,即使在強制提交後,修訂歷史記錄仍然會反映該內容。我只是想確保我不承諾版本的內容不同於我正在編輯的基本版本的內容(並因此失去對該分支的任何更改)。而且,人類干預似乎是解決合併衝突的唯一實用方法。 – Amarghosh 2010-05-06 06:26:34