用python 脚本,从svn的某路径下获取5月到6月的所有提交记录,从记录取出rivision, author,message, time,path 这5个字段数据,当message的中需求id和用户id相同时,将他们的path合并到一块,最后将这5个字段导出到excel表格中,并且表格的表头是这5个字段
时间: 2024-03-25 20:36:47 浏览: 118
好的,我明白了。首先,你需要安装Python的Subversion库pysvn,在终端中使用以下命令安装:
```
pip install pysvn
```
然后,你可以使用以下Python代码来实现你的需求:
```python
import pysvn
import xlwt
import re
# 设置svn地址和本地目录
svn_url = 'http://svn.example.com/svn/project/path'
local_dir = '/path/to/local/dir'
# 设置时间范围
start_time = pysvn.Revision(pysvn.opt_revision_kind.date, '2021-05-01T00:00:00.000000Z')
end_time = pysvn.Revision(pysvn.opt_revision_kind.date, '2021-06-30T23:59:59.999999Z')
# 设置需求id和用户id
requirement_id = 'REQ123'
user_id = 'USER456'
# 创建Excel表格
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
# 设置表头
worksheet.write(0, 0, 'revision')
worksheet.write(0, 1, 'author')
worksheet.write(0, 2, 'message')
worksheet.write(0, 3, 'time')
worksheet.write(0, 4, 'path')
# 连接svn服务器
client = pysvn.Client()
client.checkout(svn_url, local_dir)
# 获取提交记录
log_entries = client.log(local_dir, revision_start=start_time, revision_end=end_time)
# 遍历提交记录
row_index = 1
for log_entry in log_entries:
revision = log_entry.revision.number
author = log_entry.author
message = log_entry.message
time = log_entry.date
paths = log_entry.changed_paths
# 合并相同需求id和用户id的路径
merged_paths = {}
for path in paths:
path_info = paths[path]
if requirement_id in message and user_id in message:
match = re.search(r'\b%s\b' % requirement_id, message)
match_start = match.start()
match_end = match.end()
if user_id in message[match_end:]:
merged_path = merged_paths.get(message[match_end:], [])
merged_path.append(path)
merged_paths[message[match_end:]] = merged_path
# 将数据写入Excel表格
for path in merged_paths:
worksheet.write(row_index, 0, revision)
worksheet.write(row_index, 1, author)
worksheet.write(row_index, 2, message)
worksheet.write(row_index, 3, time)
worksheet.write(row_index, 4, ';'.join(merged_paths[path]))
row_index += 1
# 保存Excel表格
workbook.save('output.xls')
```
这段代码会从svn服务器上获取5月到6月的提交记录,然后遍历每个提交记录,筛选出message中包含需求id和用户id的记录,并将这些记录的path合并到一起。最后,将这些记录的revision,author,message,time和path导出到Excel表格中。
注意,你需要将代码中的svn_url和local_dir替换成你自己的svn地址和本地目录,将start_time和end_time替换成你需要的时间范围,将requirement_id和user_id替换成你需要的需求id和用户id。另外,你需要安装xlwt库来处理Excel表格,可以使用以下命令安装:
```
pip install xlwt
```
阅读全文