TortoiseSVN 執行清理( cleanUp )失敗的解決方案

程式設計三昧發表於2022-01-26

前言

目前我們這邊的內網程式碼是透過 TortoiseSVN 進行版本管理的,平時用著也挺好的,沒碰到什麼大問題。

但是,今天碰到了一個比較棘手的問題,在這裡做一下記錄,以方便自己和有需要的朋友在之後碰到該類問題時有個參考。

現象

具體的錯誤現象如下圖所示:

image-20220126215234477

原因

導致上述現象的步驟如下:

  1. 從最外層目錄點選的更新,由於檔案數量巨多,導致長時間處於檢查狀態;

  2. 點選了取消更新按鈕;

  3. 取消響應太慢,直接從工作管理員關閉 TortoiseSVN 程式;

經過以上步驟後,再次更新就出現了該現象,不管從哪一級目錄更新都是一樣的錯誤。

嘗試一

根據錯誤現象中的提示資訊,手動執行清理操作,結果彈出下圖所示的錯誤:

image-20220126215625456

不管從哪一級目錄開始,都是一樣的報錯,看來這條路是走不通的,只能另尋他法。

圖中報錯資訊 Failed to run the WC DB work queue associate with xxx 的大意是:啟動與 xxx 相關聯的 WC DB 工作佇列失敗。

嘗試二

透過查詢資料,發現碰到這種現象的人還是蠻多的,但是,現在網上找出來的資料中,絕大部分都是建議使用 sqlite3 進行資料庫清理,資料庫位於時選擇的那個本地目錄下的 .svn 資料夾中,名稱為 wc.db,如下圖這樣的:

image-20220126215920104

.svn 裡的內容當時忘了截圖了,借用一下網上找到的:

img

吐槽一下,這個資料庫檔名稱 wc 讓我有了不好的聯想。

注意:.svn 資料夾一般是隱藏資料夾,需要設定顯示。

所以,我就根據網上的教程,在外網下載了 sqlite3 的安裝包,申請了匯入內網。

在等待匯入的過程中,我突然想到,能修改資料庫檔案(.db)的不僅僅只有 sqlite3,我內網機上安裝的 Navicat Premium 也是能解析資料庫檔案的,那為什麼不試一下呢?因為之前只用它連線資料庫,一時沒反應過來。

終解

嘗試使用 Navicat Premium 開啟 wc.db 檔案,果然是可以正常解析的。

接下來就是按照圖上標出來的步驟:

  1. 找到 WORK_QUEUE 表;
  2. 右鍵該表,選擇“清空”;
  3. 儲存 wc.db

image-20220126215825877

用上面修改過的 wc.db 替換 .svn 下的 同名檔案,然後再次執行清理指令。在稍等十幾秒後,提示資訊變為如下所示:

image-20220126215709305

最後的請理結果如下:

image-20220126215439953

可以看到,最終是清理 SVN 成功。

總結

透過今天這個事,我的總結如下:

  1. 在 SVN 更新過程中,儘量避免點選取消更新;
  2. 如果確實點了取消,那麼就要耐心等待 SVN 執行完取消操作,不要強制關閉 SVN 程式;
  3. 網上的資料一般只適合用來做參考,且同質化太嚴重;
  4. 解決今天這個報錯的方法肯定不止我寫的這一種。

~

~ 本文完,感謝閱讀!

~

學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!

大家好,我是〖程式設計三昧〗的作者 隱逸王,我的公眾號是『程式設計三昧』,歡迎關注,希望大家多多指教!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章