2010-02-26 39 views
3

我試圖找到一種方法來刪除使用Subversion命令行工具的殭屍鎖。最終的目標是通過鉤子腳本完成此任務,但是當您只有物理存儲庫路徑時,我無法解決命令行的問題。 (使用svnadmin rmlocks似乎只適用於存在於HEAD版本中的鎖。)在Subversion中刪除殭屍鎖

理想情況下,我想通過使用命令行工具的提交後腳本腳本來執行此操作。 (爲此目的,我知道python腳本,但我們不希望在該服務器上安裝python以供單次使用)。我們是一個.NET商店,因此使用SharpSVN庫創建工具也是一個可能性,但唯一的解鎖能力似乎在SVNClient類。

所以這真的是兩個問題:有沒有辦法使用命令行工具來做到這一點?如果沒有,有沒有辦法從SharpSVN做到這一點? (或者另一個庫?)

==更新2012年12月3日==

我不得不重新審視最近這個問題,並發現了這個問題仍然是繪畫的流量。在原始問題中提到的python腳本和Don的答案已經轉移到:http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/remove-zombie-locks.py(我認爲這是大多數人都在尋找的。)

具有諷刺意味的是,即使存儲庫已轉移到Linux,我們使用的是C解。

回答

1

看起來答案是「你不能從這裏到達那裏。」

  • Svnadmin提供了一個用於刪除存儲庫路徑鎖的命令行,但它似乎不適用於殭屍鎖。
  • SharpSVN主要是客戶端;它有一些連接存儲庫路徑的方法,但這些(每個文檔)主要用於庫的單元測試。

因此,使用Subversion API庫在C中重寫python腳本。

+0

**,但它似乎不適用於殭屍鎖**不,它的工作原理,如果你知道過時的鎖的路徑。 – bahrep 2014-10-27 12:21:11

+0

@bahrep - 我在寫這個答案之前測試了它。據我記得(它*爲* 4 1/2年前),svnadmin對當前修訂版本中存在的文件工作正常,但如果該文件已被標記爲已刪除,則失敗。從那時起事情就有可能發生變化。這個問題仍然會產生一定的流量,所以如果你可以提供一個使用svnadmin來完成任務的鉤子腳本,它可能會對其他人有用,我會很樂意改變我接受的答案。 – ThatBlairGuy 2014-11-18 18:51:30

2

有一個Python腳本(在這裏引用:http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2369399)。我要麼使用它,要麼將它翻譯成.NET。

+0

這是我在我的問題中提到的腳本。我一直無法找到與svn_repos_fs_unlock方法等效的命令行。 (svnadmin rmlocks似乎只能用於鎖定HEAD版本。)同樣,在SharpSVN中,唯一可用的解鎖方法在客戶端。 – ThatBlairGuy 2010-03-01 15:10:37

+0

對不起,不知道我是如何跳過你提到Python腳本的。我基本上回答了你自己的問題... SharpSVN是一個圍繞客戶端API的.NET包裝,因此如果開發者已經實現了相同的調用應該是可用的。我搜索了源代碼中的svn_repos_fs_unlock方法,但沒有找到它。你可能想問一下SharpSVN論壇,http://sharpsvn.open.collab.net/ds/viewForumSummary.do?dsForumId=728,只是爲了確保。如果您對C感到滿意,可以直接調用API。 – Don 2010-03-01 17:18:46

+0

謝謝。如果涉及到這一點,調用API是一種可能性,我認爲如果合適的輪子已經存在,我會盡快避免。 – ThatBlairGuy 2010-03-01 17:32:24