SVN命令行导出某个时间段内某个用户所有提交过的文件列表

公司使用的是SVN来做代码的管理,经常出现的情况是每天提交代码,等开发周期结束后需要整理出所以已提交过的文件,然后同步系统一次性更新到外网去。

windows下使用tortoiseSVN

非常方便

  1. 直接右键
  2. TortoiseSVN
  3. Show log
  4. 然后选中指定的多条commit记录
  5. 下面就自动整理出所有去重后的文件列表了,然后全选复制即可。

    Mac下写个小python脚本自己导

    找了挺久,没找到符合要求的命令,只能写个小脚本(改自stackoverflow上的一个小脚本)来处理了
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import sys
from xml.etree.ElementTree import iterparse, dump
author = sys.argv[1]
iparse = iterparse(sys.stdin, ['start', 'end'])
logentries = (elem for event, elem in iparse if event == 'end' and elem.tag == 'logentry')
affected_files = []
for logentry in logentries:
if logentry.find('author').text == author:
current_path = logentry.find('paths').findall('path')
for path in current_path:
if path.text not in affected_files:
print path.text
affected_files.append(path.text)

以上脚本保存为svnlog.py,然后再使用chmod添加可执行权限

接着使用终端切到代码目录执行如下命令即可

svn log --xml -v -r {2016-05-01}:{2016-06-14} | /Users/H1ac0k/Documents/dev/helper/svnlog.py h1ac0k

然后就能导出下面这样的文件列表了

/trunk/code/default/views/pc/loupan/new_loupanlist.htm
/trunk/code/default/views/pc/loupan/new_hxlist.htm
/trunk/code/default/controllers/loupan.php
/trunk/code/default/views/pc/material/new_material.htm
/trunk/code/default/views/pc/material/resource.htm
/trunk/code/default/controllers/pc/material.php
/trunk/code/default/views/pc/loupan/hxlist.htm