在pysvn中,如何测试文件是否受版本控制?
问问题
3894 次
1 回答
8
使用client.status()
并检查text_status
返回的状态对象的属性。例子:
>>> import pysvn
>>> c = pysvn.Client()
>>> out = c.status("versioned.cpp")[0] # .status() returns a list
>>> out.text_status
<wc_status_kind.normal>
这表明该文件已版本化且未修改。
>>> c.status("added.cpp")[0].text_status # added file
<wc_status_kind.added>
>>> c.status("unversioned.cpp")[0].text_status # unversioned file
<wc_status_kind.unversioned>
您可以使用探索其他可能的状态dir (pysvn.wc_status_kind)
因此,您可以将其包装为:
def under_version_control(filename):
"returns true if file is unversioned"
c = pysvn.Client()
s = c.status(filename)[0].text_status
return s not in (
pysvn.wc_status_kind.added,
pysvn.wc_status_kind.unversioned,
pysvn.wc_status_kind.ignored)
如果您还希望处理 svn 工作目录之外的文件,则需要捕获和处理ClientError
. 例如
def under_version_control(filename):
"returns true if file is unversioned"
c = pysvn.Client()
try:
s = c.status(filename)[0].text_status
catch pysvn.ClientError:
return False
else:
return s not in (
pysvn.wc_status_kind.added,
pysvn.wc_status_kind.unversioned,
pysvn.wc_status_kind.ignored)
于 2012-05-28T10:01:01.550 回答