pysvn给出错误:不是工作副本

时间:2012-12-17 16:47:18

标签: python svn pysvn

我正在尝试在svn中获取一组文件的最后修改过的作者名称。

我已在我的机器上签出了代码。

在我的脚本中,所有文件的绝对路径都在列表中读取。我正在尝试使用以下代码为每个文件提取最后编辑的作者。

for file in all_files:
    dir = os.path.dirname(file)
    entry = client.info(dir)
    print "Folder:"+dir+" And author:"+entry['commit_author']

但是我收到以下错误:

File "test_main.py", line 110, in main
entry = client.info(dir)
pysvn._pysvn.ClientError: '.' is not a working copy

我尝试将整个文件名作为client.info()的参数得到相同的结果。

这可能是一个非常简单的问题,但我是python中的新手,所以无法弄明白。

编辑:

我尝试将文件夹路径编码为:

  temp = "/home/gajananh/scripts/test/repo/test_proj/src";
  entry = client.info(temp)
  print "Folder:"+dir+" And author:"+entry['commit_author']

它有效!

在我的第一个脚本中,当我尝试在循环中打印dir变量时,它会打印正确的路径。当我尝试在shell上运行svn info命令输出时,我得到了正确的结果。

我无法理解这个谜。请帮忙。

2 个答案:

答案 0 :(得分:0)

我认为for file in all_files:会返回包含./file.txt

等相对路径的文件

当您运行os.path.dirname(file)时,返回的路径将只是'。' (点)作为svn的参数给出。

在调用函数时尝试使用完整路径。

答案 1 :(得分:0)

您需要使用info2。

path="http://svn/svn/foo/trunk/baz.c"
name_info_list = client.info2(path)
assert len(name_info_list) == 1

name, info = name_info_list[0]
for k, v in info.items():
    print "%s: %s" % (k, v)

http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_client_info2