我在Subversion中遇到版本控制問題。我從存儲庫中檢出了一個工作副本,並鎖定了所有文件。然後,在不釋放鎖的情況下,我從磁盤中刪除了該文件夾。如何遞歸地在Subversion中釋放鎖?
- 我無法從庫中刪除文件夾,因爲它有一個鎖
- 如果我和嘗試遞歸釋放鎖,它說有沒有鎖釋放。
- 在Browse Repository視圖中,我只能遞歸地打破特定的文件夾,而不是文件夾。
如何破解存儲在存儲庫中的鎖?我在Windows上使用TortoiseSVN。 是否有一個命令爲文件夾遞歸地分解鎖定?
我在Subversion中遇到版本控制問題。我從存儲庫中檢出了一個工作副本,並鎖定了所有文件。然後,在不釋放鎖的情況下,我從磁盤中刪除了該文件夾。如何遞歸地在Subversion中釋放鎖?
如何破解存儲在存儲庫中的鎖?我在Windows上使用TortoiseSVN。 是否有一個命令爲文件夾遞歸地分解鎖定?
好吧,我明白了。
問候
我認爲這隻會在你的用戶鎖定文件時才起作用。如果你偷了鎖,那麼我認爲命令行是你唯一的選擇。 – karmasponge 2011-08-04 03:43:28
這對我有用 - 我能夠打破別人的鎖。 – Keith 2012-07-26 21:40:36
只有SVN會採取數據庫功能(鎖),並強制您使本地工作副本打破它們... – whitey04 2012-10-09 02:26:49
$ svn status -u
M 23 bar.c
M O 32 raisin.jpg
* 72 foo.h
Status against revision: 105
$ svn unlock raisin.jpg
svn: 'raisin.jpg' is not locked in this working copy
這只是意味着該文件沒有鎖定在當前工作目錄 ,但如果是在庫水平仍處於鎖定狀態,你可以強制解鎖(「打破鎖定」)
$ svn unlock http://svn.example.com/repos/project/raisin.jpg
svn: Unlock request failed: 403 Forbidden (http://svn.example.com)
$ svn unlock --force http://svn.example.com/repos/project/raisin.jpg
'raisin.jpg' unlocked.
(這就是你的di通過TortoiseSVN的GUI d)
我也做了你在倉庫中告訴的,但如果我必須做一個文件每個,它會花費我很多年。由於我對cli的有限知識不允許我找到遞歸命令,這就是爲什麼我花了更多時間。 :) – vikmalhotra 2010-07-01 06:53:02
@ShiVik:true沒有遞歸選項,但你可以找到一些腳本來編寫腳本:http://old.nabble.com/recursive-find-locks-unlock-in-repository-td25010776.html'svnadmin lslocks
做一個SVN清理將釋放鎖,以及:
$ svn cleanup
當烏龜(或任何客戶端)沒有意義時,此功能特別有效。我試圖犯下,烏龜墜毀。在隨後的嘗試中,Tortoise告訴我一些文件被鎖定。檢查回購,沒有任何文件成功,所以這是一個本地的事情,但沒有上述答案適用於我的情況。這樣做(通過右鍵單擊資源管理器中的文件夾 - > TortoiseSVN - >清理...並使用選項「清理工作副本狀態」運行它。之後,一切正常。 – 2013-08-01 16:35:07
當Xcode鎖定文件時工作得很好,因爲它無法完全提交(不管是什麼原因) – Daniel 2014-12-02 14:03:38
沒有爲我工作我試圖刪除一個文件夾,其中有別人的鎖,甚至在我檢出有問題的文件夾並運行'svn cleanup'然後'svn刪除',我仍然無法提交,因爲鎖仍在服務器上。 – Apteryx 2016-09-02 01:23:52
對我來說,刪除裏面的.svn鎖文件,因爲我得到了壞的校驗和味精試圖更新後沒有工作文件。
我得到了以下味精執行目錄內的清理命令後:
的svn:在目錄「」 的svn:無法複製「的.svn/tmp /文基/ file_name.svn基」到'filename.3.tmp':沒有這樣的文件或目錄
因此,我將我的文件複製到.svn/tmp/text-base並將其名稱更改爲file_name.svn-base。然後清理和更新工作正常。
如果其他人已經遠程鎖定文件,我發現使用TortoiseSVN 1.7.11在我的工作副本中成功解鎖了它們。(類似於vikkun的答案)
工作副本中的文件現在應該被解鎖。
存儲庫管理員可以刪除鎖(遞歸),在有問題的目錄內的數百個文件上操作 - 但只能通過腳本編寫,因爲svnadmin rmlocks沒有--recursive選項。
$repopath=/var/svn/repos/myproject/;
$problemdirectory=trunk/bikeshed/
IFS=$'\n'; for f in $(sudo svnadmin lslocks $repopath $problemdirectory \
| grep 'Path: ' \
| sed "s/Path: \///") ; \
do sudo svnadmin rmlocks $repopath "$f" ; done
此解決方案適用於文件名中有空格的文件名。
當我嘗試從最初提供的腳本上面運行腳本時,我在嘗試設置變量時出現錯誤: ./scriptname:line1:=/svn/repo/path /:沒有這樣的文件或目錄 ./scriptname:line2:=目錄/:沒有這樣的文件或目錄
我從前兩行刪除'$',並在此之後完美運行。
repopath=/var/svn/repos/myproject/;
problemdirectory=trunk/bikeshed/
IFS=$'\n'; for f in $(sudo svnadmin lslocks $repopath $problemdirectory \
| grep 'Path: ' \
| sed "s/Path: \///") ; \
do sudo svnadmin rmlocks $repopath "$f" ; done
除非你的svn機管理員權限,可以使用「svnadmin的」工具,你最好的選擇似乎是這樣的:
svn checkout --ignore-externals *your_repo*
svn status --show-updates
有問題的目錄在檢出的存儲庫中找出哪些文件可能被鎖定(如果有人發現關於狀態碼含義的文檔,請發表評論)。svn unlock --force *some_file*
上在2我用下面的一行自動化2和3:
svn status -u | head -n -1 | awk '{ print $3 }' | xargs svn unlock --force
發現如果你有機會到svnadmin工具中的文件在回購服務器中,您可以使用此替代方法刪除所有鎖(基於VonC發佈的腳本)
svnadmin lslocks <path_to_repo> |grep -B2 Owner |grep Path |sed "s/Path: \///" | xargs svnadmin rmlocks <path_to_repo>
您是否嘗試對工作副本進行清理? – khmarbaise 2010-07-01 05:31:40
是的,我曾嘗試過。我原封不動地刪除了我的工作副本。現在,如果我簽出一份工作副本,它將不會有任何鎖定。 – vikmalhotra 2010-07-01 05:50:53
你的工作副本沒有鎖了......文件/文件夾在存儲庫中有鎖嗎? – khmarbaise 2010-07-01 06:08:03