前言
目前我們這邊的內網程式碼是透過 TortoiseSVN 進行版本管理的,平時用著也挺好的,沒碰到什麼大問題。
但是,今天碰到了一個比較棘手的問題,在這裡做一下記錄,以方便自己和有需要的朋友在之後碰到該類問題時有個參考。
現象
具體的錯誤現象如下圖所示:
原因
導致上述現象的步驟如下:
從最外層目錄點選的更新,由於檔案數量巨多,導致長時間處於檢查狀態;
點選了取消更新按鈕;
取消響應太慢,直接從工作管理員關閉 TortoiseSVN 程式;
經過以上步驟後,再次更新就出現了該現象,不管從哪一級目錄更新都是一樣的錯誤。
嘗試一
根據錯誤現象中的提示資訊,手動執行清理操作,結果彈出下圖所示的錯誤:
不管從哪一級目錄開始,都是一樣的報錯,看來這條路是走不通的,只能另尋他法。
圖中報錯資訊 Failed to run the WC DB work queue associate with xxx
的大意是:啟動與 xxx 相關聯的 WC DB 工作佇列失敗。
嘗試二
透過查詢資料,發現碰到這種現象的人還是蠻多的,但是,現在網上找出來的資料中,絕大部分都是建議使用 sqlite3 進行資料庫清理,資料庫位於時選擇的那個本地目錄下的 .svn
資料夾中,名稱為 wc.db
,如下圖這樣的:
.svn
裡的內容當時忘了截圖了,借用一下網上找到的:
吐槽一下,這個資料庫檔名稱 wc 讓我有了不好的聯想。
注意:.svn
資料夾一般是隱藏資料夾,需要設定顯示。
所以,我就根據網上的教程,在外網下載了 sqlite3 的安裝包,申請了匯入內網。
在等待匯入的過程中,我突然想到,能修改資料庫檔案(.db
)的不僅僅只有 sqlite3,我內網機上安裝的 Navicat Premium
也是能解析資料庫檔案的,那為什麼不試一下呢?因為之前只用它連線資料庫,一時沒反應過來。
終解
嘗試使用 Navicat Premium
開啟 wc.db
檔案,果然是可以正常解析的。
接下來就是按照圖上標出來的步驟:
- 找到
WORK_QUEUE
表; - 右鍵該表,選擇“清空”;
- 儲存
wc.db
用上面修改過的 wc.db
替換 .svn
下的 同名檔案,然後再次執行清理指令。在稍等十幾秒後,提示資訊變為如下所示:
最後的請理結果如下:
可以看到,最終是清理 SVN 成功。
總結
透過今天這個事,我的總結如下:
- 在 SVN 更新過程中,儘量避免點選取消更新;
- 如果確實點了取消,那麼就要耐心等待 SVN 執行完取消操作,不要強制關閉 SVN 程式;
- 網上的資料一般只適合用來做參考,且同質化太嚴重;
- 解決今天這個報錯的方法肯定不止我寫的這一種。
~
~ 本文完,感謝閱讀!
~
學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!
本作品採用《CC 協議》,轉載必須註明作者和本文連結