在 svn 中查找锁定的文件而无需签出

在 svn 中查找锁定的文件而无需签出

我如何才能找到我在 svn 树中锁定的文件,这个 svn 树非常大(数以万计的文件),以至于我想避免检查所有内容:
我可以做一些事情svn <magic arguments> | grep <MyUserName>来找到被我锁定的文件吗?

替代问题:我可以一次删除 svn 树中的所有锁(解锁所有文件)吗?

svn status仅当检查完所有内容后才有效,并且
svnadmin lslocks仅在服务器上有用,而我无法访问该服务器。

答案1

虽然 rrirower 在技术上是正确的svnadmin lslocks,但你可以考虑其他可能的替代方法

  1. 一次性操作“获取完整 WC”(可以在服务器的本地 FS 上获取,即相对较快,并作为文件树移动到最终目的地)将让您svn st -u(全部锁定在 repo 文件中)

  2. svn ls -R -v /REPO/ROOT

使用 --verbose 后,每个项目将显示以下字段:

Revision number of the last commit
Author of the last commit
If locked, the letter 'O'.  (Use 'svn info URL' to see details)
Size (in bytes)
Date and time of the last commit

使用这两种方法你只会得到指示锁定(锁定文件名),您必须使用哪个符号来扩展svn info URL/TO/LOCKED/FILE并从输出中提取Lock Owner: XXX字符串(可能使用命令的 XML 输出和 XML 感知工具)

替代问题的答案

是的,你可以(在一定程度上)

解锁前

准备厕所稀疏目录(仅包含带有锁的文件的目录)

解锁

修改工作表中的单个锁定文件并提交整个工作表。根据SVN 书籍

成功提交后,所有提到的存储库锁定都会被释放 — 即使是未提交的文件。这是为了阻止用户在锁定方面马虎或长时间持有锁定。如果 Harry 随意锁定了名为 images 的目录中的 30 个文件,因为他不确定需要更改哪些文件,但只更改了其中的 4 个文件,那么当他运行 svn commit images 时,该过程仍将释放所有 30 个锁定。

我预计所有文件都会被解锁

另一种解锁方式是使用svn unlock --target ARG,ARG 保存了锁的所有 URL(每行一个 URL),即使没有 WC 也可以工作

答案2

您应该能够使用以下命令获取锁定文件的列表: svnadmin lslocks

我认为: svn 清理将会移除你的锁。

相关内容