pysvn,如何测试文件是否受版本控制?测试pysvn中的版本控制下的文件(python subversion)
4
A
回答
7
使用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)
+0
'文件“
+0
@MattHickford与标准svn命令一样,它的意思是用于内部文件一个工作副本。如果您还想处理工作副本以外的文件,请将'.status'调用放在'try/except'块中。将以示例更新。 –
相关问题
- 1. Subversion中的版本控制docx文件
- 2. pysvn文件复制功能版本号
- 3. MySQL版本控制 - Subversion
- 4. 版本控制下的Gettext .po文件
- 5. Xcode4和SCM(Subversion) - 不受版本控制的组/文件夹
- 6. 自动删除Subversion未版本控制的文件
- 7. iPhone版本控制工具(subversion)
- 8. 版本控制测试用例
- 9. 版本控制和测试网站
- 10. 版本控制下的xcodeproj
- 11. Subversion:获取当前目录中版本控制文件的列表
- 12. 在Subversion控制下使用Xcode构建失败(使用版本)
- 13. 版本控制文件
- 14. 如何取回已被Subversion删除的未版本控制的文件夹
- 15. 简单的版本控制系统或版本控制文件系统或版本控制数据库
- 16. Python版本的PHP测试脚本
- 17. Subversion作为PhpStorm中的版本控制选项丢失
- 18. C++ Builder中的Subversion版本控制集成
- 19. Git版本分别控制版本库中的文件
- 20. 文件版本控制与版本控制
- 21. Python中的文件测试?
- 22. 散文的版本控制
- 23. BusinessObjects的版本控制
- 24. 版本控制(即Subversion)是否适用于文档跟踪?
- 25. git:忽略*版本控制的文件
- 26. 对大文件的版本控制
- 27. MDF文件的版本控制
- 28. Emacs的备份版本控制文件
- 29. Capistrano:共享文件的版本控制/
- 30. 资源文件的版本控制
这里有两种情况。该文件不在任何工作副本中,或该文件在工作副本中但未添加。 –