python - 记录 pysvn 更新

标签 python logging pysvn

如果可能的话,在 pysvn 中运行 svn update 时,我如何获取有关已添加、删除、更新哪些文件等的信息?我想将此信息写入日志文件。

最佳答案

您可以保存原始版本和更新版本,然后使用 diff_summarize 获取更新文件。 (参见 pysvn Programmer's reference)

举个例子:

import time
import pysvn

work_path = '.'

client = pysvn.Client()

entry = client.info(work_path)
old_rev = entry.revision.number

revs = client.update(work_path)
new_rev = revs[-1].number
print 'updated from %s to %s.\n' % (old_rev, new_rev)

head = pysvn.Revision(pysvn.opt_revision_kind.number, old_rev)
end = pysvn.Revision(pysvn.opt_revision_kind.number, new_rev)

log_messages = client.log(work_path, revision_start=head, revision_end=end,
        limit=0)
for log in log_messages:
    timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(log.date))
    print '[%s]\t%s\t%s\n  %s\n' % (log.revision.number, timestamp,
            log.author, log.message)
print

FILE_CHANGE_INFO = {
        pysvn.diff_summarize_kind.normal: ' ',
        pysvn.diff_summarize_kind.modified: 'M',
        pysvn.diff_summarize_kind.delete: 'D',
        pysvn.diff_summarize_kind.added: 'A',
        }

print 'file changed:'
summary = client.diff_summarize(work_path, head, work_path, end)
for info in summary:
    path = info.path
    if info.node_kind == pysvn.node_kind.dir:
        path += '/'
    file_changed = FILE_CHANGE_INFO[info.summarize_kind]
    prop_changed = ' '
    if info.prop_changed:
        prop_changed = 'M'
    print file_changed + prop_changed, path
print

关于python - 记录 pysvn 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1754841/

相关文章:

python - 在 GTK 主循环中向用户请求信息

python - 尝试使用 pysvn 导出 SVN 时如何解决此错误?

python - 由于 pysvn 的动态导入,Eclipse PyDev 发现不存在的错误

javascript - html 在单击按钮时从 json 数据加载更多

python - 如何解决函数的问题,该函数应该只将 0 移动到列表末尾,但也会移动 False 值?

python - 解析谷歌图片搜索结果

tomcat - 我可以限制 tomcat7 中的应用程序日志大小吗?

java - 将 System.out 和 System.err 重定向到 slf4j

php - 如何从 PHPUnit 测试用例中登录?

python - 在同一数据库上同时使用 SQLAlchemy 和 Django ORM