我正在尝试在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
命令输出时,我得到了正确的结果。
我无法理解这个谜。请帮忙。
答案 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