| « | July 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:11 评论数量:53 留言数量:0 访问次数:153393 建立时间:2006年4月11日 |

| |
|
[编程语言]用Python自动化操作Visual SourceSafe版本数据库 原创空间
wdx04 发表于 2008/11/18 20:11:36 |
|
最近需要编写一个向VSS服务器自动查找本地Checkout的文件、并且自动Checkin的工具。研究了一下它的API,写下来供参考。
预备工具 Python 版本2.3以上(www.python.org) ctypes 版本1.0以上(Python 2.5以上自带) comtypes最新版(comtypes.sf.net)
第一步,创建VSS Database对象 from comtypes.client import CreateObject vssDb = CreateObject(u"SourceSafe.0")所有字符串必须使用Unicode字符集,否则可能出现Win32内存访问异常(下同)。
第二步,打开VSS连接 vssDb.Open(ur'C:\Program Files\Microsoft Visual Studio\VSS\srcsafe.ini', u'username', u'password')第1个参数是srcsafe.ini的完整路径,后两个是用户名和密码。
第三步,定位VSS数据库中的项 item = vssDb.VSSItem(u'$/', False)第1个参数是该项的完整路径(以$/开头),可以指向项目(目录)或文件。第2个参数是指明该项是否已被删除,默认值为False可以省略。
第四步,操作目录项(SubProjects) 添加文件:item.Add(ur'C:\Local_File.txt', u'comments') 创建子目录:item.NewSubproject(u"project_name", u'comments') 取子项: item.Items()[u'child_name'] child_name为子项名称 删除目录: item.Deleted = True 恢复删除: item.Deleted = False 永久删除: item.Destroy() 获取所有文件版本(非递归):item.Get(u'local_directory') 参数local_directory指定把文件存放在哪个本地目录
第五步,操作文件项 签出(Check out): item.Checkout() 签入(Check in): item.Checkin(u'comments') 撤销签出(Undo Check out): item.UndoCheckout() 判断是否已被签出: item.IsCheckedOut (返回值 0:无人Checkout, 1:其他人Checkout, 2:自己Checkout了这个文件) 判断是否被更改: item.IsDifferent() 删除: item.Deleted = True 恢复删除: item.Deleted = False 永久删除: item.Destroy() 判断是否已被删除:item.Deleted 获取版本:item.Get() (仅当该文件在本地不存在或只读时有效)
|
|
|
回复:用Python自动化操作Visual SourceSafe版本数据库 原创空间
dancetime(游客)发表评论于2009/8/29 0:33:36 |
| 您好,通过这个方式可以进行获取及改变VSS用户权限的操作吗? |
|
» 1 »
|