差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:subversion_fix [2008/02/01 12:45] – jonathan | tech:subversion_fix [2021/01/16 14:51] (目前版本) – 更換 Plugin jonathan | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Subversion 備份匯入後與實際工作版本整合作法 ====== | ||
+ | <style box background> | ||
+ | 當 Subversion 的主機掛了之後,在找出之前定期匯出的備份檔案匯入重建的 Subversion Server 後,發現在工作版本執行更新時出現 **No such revision xxxx** 的錯誤訊息時所執行的解決作法. | ||
+ | </ | ||
+ | \\ | ||
+ | <style box float-left> | ||
+ | <ditaa name=exp> | ||
+ | +------+ | ||
+ | |{s} | ||
+ | | SVN | | SVN | | ||
+ | | |< | ||
+ | |Server| | ||
+ | |(2247)| | ||
+ | +------+ | ||
+ | ^ | ||
+ | \ +-------+ | ||
+ | | ||
+ | | SVN | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | * 主要的問題在於匯入的備份資料少了實際工作版本的部份資料 Exp. 匯入的版本是 2247 但是實際工作的版本已經是 2332 | ||
+ | * 目標是將工作區的資料改成 2247 然後將現在的 2332 版本與之後異動過的資料加入 commit 成為 2248 | ||
+ | * 在工作資料區針對 svn update 或 commit 出現這錯誤的目錄進行以下的程序 ++Exp. / | ||
+ | [root@www webdav]# pwd | ||
+ | / | ||
+ | [root@www webdav]# svn update | ||
+ | svn: REPORT 要求於 '/ | ||
+ | svn: | ||
+ | No such revision 2285 | ||
+ | |||
+ | [root@www webdav]# svn info | ||
+ | 路徑: . | ||
+ | URL: http:// | ||
+ | 修訂版: 848 | ||
+ | 節點種類: | ||
+ | 排程: 正常 | ||
+ | 最後更新作者: | ||
+ | 最後修改修訂版: | ||
+ | 最後修改日期: | ||
+ | |||
+ | </ | ||
+ | - 執行 svn checkout 到工作暫存目錄 /tmp/webdav ++語法|< | ||
+ | svn co http:// | ||
+ | </ | ||
+ | - 執行 svn export 強制匯出現有工作版本到工作暫存目錄 /tmp/webdav ++語法|< | ||
+ | svn export --force / | ||
+ | </ | ||
+ | - 執行 cp -a 將 .svn 相關版本控制檔案與最新版檔案蓋回現有目錄 ++語法|< | ||
+ | cp -a /tmp/webdav /data/ | ||
+ | </ | ||
+ | - 如果需要要將權限改正 Exp. 檔案所有者應該為 apache 就要改回 apache ++語法|< | ||
+ | chown -R apache: | ||
+ | </ | ||
+ | - 執行 svn commit 將整合修正版本上傳 ++語法|< | ||
+ | svn ci -m "Fix SVN version" | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== 參考資料 ===== | ||
+ | * http:// | ||
+ | |||
+ | {{tag> |