如何确定谁使用SVN锁定文件?

时间:2009-05-12 15:18:02

标签: svn tortoisesvn

我们正在使用SVN服务器1.4(我认为),客户端是命令行客户端或TortoiseSVN。

8 个答案:

答案 0 :(得分:27)

使用svn status --show-updates发现文件锁定。在下面的例子中,Sally发现raisin.jpg上有一个锁。

$ whoami
sally

$ svn status --show-updates
M              23   bar.c
M    O         32   raisin.jpg
       *       72   foo.h
Status against revision:     105

一旦知道锁定,就可以使用svn -info来发现设置锁定的人。请注意下面的“锁定所有者”:

$ svn info http://svn.example.com/repos/project/raisin.jpg
Path: raisin.jpg
Name: raisin.jpg
URL: http://svn.example.com/repos/project/raisin.jpg
Repository UUID: edb2f264-5ef2-0310-a47a-87b0ce17a8ec
Revision: 105
Node Kind: file
Last Changed Author: sally
Last Changed Rev: 32
Last Changed Date: 2005-01-25 12:43:04 -0600 (Tue, 25 Jan 2005)
Lock Token: opaquelocktoken:fc2b4dee-98f9-0310-abf3-653ff3226e6b
Lock Owner: harry
Lock Created: 2005-02-16 13:29:18 -0500 (Wed, 16 Feb 2005)
Lock Comment (1 line):
Need to make a quick tweak to this image.

答案 1 :(得分:16)

命令行客户端使用命令“svn info”显示锁所有者。

在TortoiseSVN中,您可以在“属性”上下文菜单中看到锁所有者(“subversion”选项卡)。

答案 2 :(得分:13)

使用TortoiseSVN的repo-browser功能,有一个锁定列,显示锁定文件的用户。

右键单击本地工作副本 - > TortoiseSVN->库浏览器。

答案 3 :(得分:5)

检查步骤:

  1. 右键单击要确定锁定的文件/文件夹

  2. 转到TortoiseSVN选项>>库浏览器

  3. 将打开一个新窗口,您将获得一个表格视图

  4. 表格中的锁定列将显示谁拥有锁定

答案 4 :(得分:4)

  1. 右键单击该文件,选择TortoiseSVN,然后选择检查修改
  2. 点击检查存储库
  3. 向右滚动以查看锁定列

答案 5 :(得分:2)

以下Python脚本显示了所有锁和谁拥有它们:

#!/usr/bin/python
# coding=UTF-8

# This tool shows who owns the locks in a subversion repository

import sys
import subprocess

if len(sys.argv) > 1:
    p = subprocess.Popen(['svn', 'status', '-u', sys.argv[1]], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
    p = subprocess.Popen(['svn', 'status', '-u'], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

(so, se) = p.communicate() # start command

lines = [x[21:].strip() for x in so.split('\n') if len(x) > 5 and x[5] == 'K']

for line in lines:
    p = subprocess.Popen(['svn', 'info', line], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (so, se) = p.communicate()
    details = [x[12:].strip() for x in so.split('\n') if x.startswith('Lock Owner')][0]
    print '[%s] (%s)' % (details, line)

答案 6 :(得分:0)

检查red book部分'发现锁'。我相信它包含了答案。

答案 7 :(得分:0)

我还有关于 .aux文件的问题。 在我的案例中的解决方案/问题是没有子目录允许比允许的深度更大的子目录。如果要使用此项,则tmp文件夹中的子目录必须存在。 例如 - > SRC - >引入 - > introduction.tex 要求 - > TMP - >引入 - > introduction.aux            的 ** * ** *

带下划线的目录必须存在。 所以在subversion管理的情况下,也提交tmp文件夹中的目录结构(不带* .aux)文件。