像是 COMMITED:PREV 這些關鍵字的不存在(?)
svn merge -r COMMITED:PREV .
svn: Syntax error in revision argument 'COMMITED:PREV'
失敗了,所以回頭了解一下: svn merge 是什麼動作?
下面的指令可以查到說明:
svn help merge
像我是裝 ubuntu + 繁中的語言支援就可以看到:
svn merge: 將兩個來源之間的差異套用至工作複本路徑.
1. 第一種形式中, 來源 URL 各被指定到修訂版 N 與 M. 這兩個就是作為
比較的來源. 如果沒有指定修訂版的話, 預設為 HEAD.
2. 在第二種形式中, 對應到兩個來源的工作複本路徑的 URL 定義出用以
進行比較的來源. 這裡必須指定修訂版.
3. 第三種形式中, SOURCE 可為 URL 或工作複本項目, 後者會使用對應的
URL. 在修訂版 REV 的 URL 會以它存在於修訂版 N 與 M 的路徑來作
比較. 如果未指定 REV, 就會假設為 HEAD. '-c M' 選項等同於
'-r N:M', 其中 N = M-1. 使用 '-c -M' 則為相反: '-r M:N',
其中 N = M-1.
意即:
svn merge -c 和 -r 在某些條件下是一樣的動作。
假設現在是 rev1523
svn merge -r 1523:1521 .
就是把 1523(目前|新) 跟 1521(舊)的差異套用到現在的目錄底下。同樣的動作也可以寫作:
svn merge -c -1521 .
把(目前)的版本跟 1521 版之間的差異套用到現在的目錄底下。了解了這個動作的目的,就可以明白,在 svn 底下作 undo 的操作前, svn up|revert 的動作是一定要做的;至少讓目前的 rev 是在 svn repo 存在的,這樣才不會發生 Conflict 的情況。
沒有留言:
張貼留言