2008-11-12 48 views
37

我終於讓我的團隊從SourceSafe切換到Subversion。不幸的是,我的經理仍然希望在每個文件上使用獨佔鎖。所以我在每個文件上設置了svn:needs-lock屬性,並創建了一個預先提交鉤子以確保該屬性保持設置。什麼是最好的方式來查看哪些文件被鎖定在Subversion中?

我們在Linux服務器上運行Subversion。我們大多數人使用Windows機器和一些使用Mac。我們正在使用各種SVN客戶端(TortoiseSVN,SmartSVN,Subclipse等)。

我們現在需要的是一個很好/簡單的方法來查看當前鎖定在整個存儲庫中的所有文件(以及誰鎖定了它們)。我在Tortoise和Subclipse中探索了一下,但還沒有找到我在尋找的東西。我們的項目有很多級別很深的子目錄,所以查看每個單獨的目錄會耗費太多時間。

我想要的是我可以運行的單個報告,列出當前被鎖定的所有內容以及鎖定的對象。獲取這類信息的最佳方式是什麼?

+5

我知道你知道這一點,但這些鎖將要在代碼共享領域的生產力殺手。合併工具現在相當不錯,將變更合併在一起比您的老闆想象的要容易。 – 2008-11-12 19:07:26

+0

@TomLeys對於源代碼或任何可以合併的好文件類型,您都有權利。但並不總是如此,例如,有時SVN用於管理數據文件或辦公文檔,它們都不容易獲得,而且廣泛使用的合併工具。 – peterh 2016-04-26 14:56:21

+0

*賞金是爲了一個新的答案,它解釋了我們如何從命令行客戶端獲取來自遠程存儲庫2)的鎖定文件列表。* – peterh 2016-05-02 16:09:54

回答

32

你在找什麼是svnadmin lslocks命令。

我在工作中設置了這個設置,因爲我們在Subversion版本庫中保留了一些Word文檔(使用svn:needs-lock)。我有一個cron任務,每天都要檢查鎖的列表,並將整個團隊7天以上所有鎖的報告發送給我們。這樣我們就可以分辨出誰長期懶惰並坐在一份文件的鎖定副本上。

+1

現在Office 2003已經內置了Word文檔的合併。我不知道何時引入此功能,但這可能意味着您不再需要鎖定Word文檔。 – 2008-11-12 19:06:10

21

這可能不是您正在尋找的答案,但您應該嘗試說服經理人員,鎖實際上不是最佳的開發實踐。這裏有很多關於這個主題的文章,所以我不會在這裏重複一遍。

當你從一個鎖定環境轉到一個沒有強制檢出鎖的環境時,起初你認爲它會導致混亂,但實際上並不是這樣。當兩個人在同一個文件上工作時,SVN善於合併更改,即使最終發生衝突,修復它們也不是很糟糕。

比等待周圍的人吃了一個關鍵文件午餐,或更糟的是,去度假。

21

要查看您和其他人持有的鎖,可以使用TortoiseSVN→檢查修改....本地保留的鎖定令牌立即顯示。要檢查他人持有的鎖(並查看是否有任何鎖被破壞或被盜),您需要點擊檢查存儲庫。

19

您可以使用svn status --show-updates從本地結帳中發現鎖,這將在所有鎖定在服務器上的文件之前放置O

例如

$ svn status --show-updates 
    O  279532 LockedFile 
?     UncommittedFile 
M   279532 ModifiedFile 

看到the svnbook更多細節

相關問題