for commit in Repository("path_to_repo").traverse_commits():
for modified_file in commit.modified_files: # here you have the list of modified files
print(modified_file.diff)
# etc...
您也可以通过执行以下操作来分析单个提交:
for commit in RepositoryMining("path_to_repo", single="123213")
Breaking API: ```
from pydriller import Repository
for commit in Repository('https://github.com/ishepard/pydriller').traverse_commits():
print(commit.hash)
print(commit.msg)
print(commit.author.name)
for file in commit.modified_files:
print(file.filename, ' has changed')
import git
repo = git.Repo("path/of/repo/")
# the below gives us all commits
repo.commits()
# take the first and last commit
a_commit = repo.commits()[0]
b_commit = repo.commits()[1]
# now get the diff
repo.diff(a_commit,b_commit)
9条答案
按热度按时间iyfamqjs1#
如果你想访问diff的内容,试试这个:
这将打印每个文件的内容。
rjzwgtxy2#
你可以使用GitPython和git命令“diff”,只需要使用每个提交的“tree”对象或者你想要看到差异的分支,例如:
这将打印包含在本次提交中的所有文件的“所有”差异,所以如果你想要每个差异,你必须遍历它们。
对于实际的分支,它是:
希望对你有帮助,问候。
2skhul333#
Git不存储差异,正如你所注意到的。给定两个blob(更改之前和之后),您可以使用Python的
difflib
模块来比较数据。zhte4eai4#
我建议你使用PyDriller(它在内部使用GitPython)。更容易用途:
您也可以通过执行以下操作来分析单个提交:
kuhbmx9i5#
如果您希望重新创建与标准
git diff
显示的内容接近的内容,请尝试:0wi1tuuw6#
如果你想在两次提交之间对一个文件执行git diff,这是一种方法:
这将显示对指定文件执行的两次最新提交之间的差异。
g52tjvyc7#
vkc1a9a28#
PyDriller +1
但是使用新的API:
kuarbcqp9#
你是这样做的