2014-02-18 39 views
11

我有一個SVN倉庫(在Dreamhost上託管),需要在二進制文件上設置鎖定。它有時會發生,而提交文件鎖定,由我修改,提交失敗,出現錯誤:SVN經常說我的文件被另一個工作副本鎖住了

Error: Commit failed (details follow): 
Error: File '/my/file.bin' is locked in 
Error: another working copy 

如果我試圖讓在該文件上的鎖(沒有偷),它說:

Error: Path '/my/file.bin' is already locked by user 
Error: 'my_username' in filesystem '/home/user1/svn/repo1/db' 

清理並沒有幫助,所以解決此問題的唯一方法是盜取鎖,然後提交成功。

這不是一個關鍵問題,但它真的很煩人,特別是當它發生在一個長期的承諾中。 我傾向於認爲這是由客戶端或服務器的錯誤引起的,因爲我確信我沒有使用其他工作副本,並且問題發生得相當頻繁(在過去兩天中爲3次),我和我的同事使用存儲庫。

我們使用的是TortoiseSVN 1.8.4,而Dreamhost的svn服務器是1.6.12。

感謝您的任何幫助。

更新:我注意到,如果我在提交之前更新我的工作副本(這不會產生錯誤,當然不會修改鎖定的文件),則會發生錯誤。通過檢查文件的狀態,在更新烏龜說它被我鎖定(只在本地檢查)之前,而在本地更新檢查後,它會給出「????」作爲鎖定狀態,並通過檢查服務器,然後說它被我鎖定。更新後,文件被設置爲只讀(因爲需要鎖定),即使它仍被標記爲已修改。因此,操作順序是:鎖定file.bin - >修改file.bin - >更新整個工作副本 - >提交 - >提交失敗錯誤。更新之後,工作副本似乎忘記了鎖的狀態,並且當它詢問服務器時,它認爲它鎖定在另一個工作副本上。

回答

21

在Windows上,我通過以下步驟解決了該問題: 1.通過單擊菜單中的「Repo-browser」來啓動Repository Browser。 2.找到鎖定的文件。 3.在鎖定的文件上右鍵單擊鼠標。 4.點擊「中斷鎖定」。

+2

完美地工作。 – as9876

3

清理不起作用。這用於工作副本鎖定,而您遇到的問題是文件被鎖定在存儲庫本身中,作爲在用戶之間實現互斥的手段。請參閱The Three Meanings of "Lock"

您可能有一個客戶端在不知情的情況下(在本地或在服務器上的WC中)將文件鎖定在不同的工作副本中,或者您可能擁有WebDAV共享你已經安裝並正在打開導致鎖創建的文件。

+0

謝謝你的快速回答,我會檢查你指出的可能的問題。但是,我想澄清一下,只有在我成功獲取文件鎖定後纔會發生此問題。導致錯誤的典型操作順序是,例如:lock file.bin - >修改file.bin - >提交file.bin - >提交失敗錯誤 – cmant

+0

我會懷疑你的工作副本是否正確記錄了鎖。當你在鎖後運行'svn status'時會發生什麼?獲取鎖定時是否收到任何錯誤消息? – alroc

+0

除了提交時的「已鎖定」以外,我沒有收到任何錯誤。在服務器上,我們只有使用存儲庫的trac,我們將嘗試禁用它。無論如何,我發現錯誤似乎只發生在更新後(請參閱原始問題更新)。 – cmant

2

我也遇到了同樣的問題,發現在三臺機器中,在一臺機器上我鎖定了文件,由於這個問題我也面臨這個問題。我所做的是從該機器釋放鎖並繼續進行。

OR

偷鎖,然後再開始工作,因爲這是由SVN提供了最好的選擇。

相關問題