使用python 对比git 两个分支中commit的差异,并生成报告
时间: 2024-02-24 19:53:49 浏览: 138
可以使用Python的GitPython库来获取两个分支中commit的差异,并使用Python的difflib库生成差异报告。
以下是一个简单的代码示例:
```python
import git
import difflib
# 打开git仓库
repo = git.Repo('/path/to/repo')
# 获取两个分支
branch1 = repo.branches['branch1']
branch2 = repo.branches['branch2']
# 获取两个分支的commit列表
commits1 = list(branch1.commit_iter())
commits2 = list(branch2.commit_iter())
# 获取两个分支的commit差异
commit_diff = set(commits1) - set(commits2)
# 解析差异并生成报告
for commit in commit_diff:
# 获取commit的文件差异
diff_index = commit.diff(commit.parents[0])
# 打印commit信息
print('Commit:', commit.hexsha)
print('Author:', commit.author.name, '<' + commit.author.email + '>')
print('Date:', commit.authored_datetime)
# 打印文件差异报告
for diff_item in diff_index:
if diff_item.a_blob is None or diff_item.b_blob is None:
continue
# 只处理文件类型的差异
if not diff_item.a_blob.path.endswith('.py'):
continue
# 获取文件内容
old_content = diff_item.a_blob.data_stream.read().decode('utf-8')
new_content = diff_item.b_blob.data_stream.read().decode('utf-8')
# 生成差异报告
diff_report = difflib.unified_diff(old_content.splitlines(), new_content.splitlines(), lineterm='', fromfile=diff_item.a_blob.path, tofile=diff_item.b_blob.path)
# 打印差异报告
for line in diff_report:
print(line)
```
这个示例代码演示了如何使用GitPython库获取两个分支中commit的差异,并使用difflib库生成差异报告。您可以根据自己的需求修改代码来生成符合您需求的报告。
阅读全文