使用GitPython,我想在本地文件进行了拉取操作后仅在更改后调用某个函数。例如,如果我在另一台计算机上进行推送,然后在第一台计算机上进行拉取操作,则可以按预期工作,但不提供任何输出。理想的输出是更改的文件列表。或者,仅告诉我如果拉取出现错误,因为分支已经是最新的,或者一个布尔值表示是否发生了更改。我相信我可以爬取repo.git.status(),但这似乎很粗糙。在查找时,看起来我也可以比较分支以获取更改,但这似乎需要大量额外的代码和远程调用。是否有正确的方法只使用pull调用?
更新:这确实可以用于检查是否进行了更改,但没有额外的远程调用,无法提供文件更改信息。
while True:
repo = git.Repo()
o = repo.remotes.origin
o.pull()
changed = NOT_SURE
if changed:
do_something()
print(repo.git.status())
time.sleep(POLLING_RATE)
更新:这确实可以用于检查是否进行了更改,但没有额外的远程调用,无法提供文件更改信息。
while True:
print(str(time.ctime())+": Checking for updates")
repo = git.Repo()
current_hash = repo.head.object.hexsha
o = repo.remotes.origin
o.pull()
pull_hash = repo.head.object.hexsha
if current_hash != pull_hash:
print("files have changed")
else:
print("no changes")
time.sleep(config.GIT_POLL_RATE)
git diff
。但是,我无法告诉您如何在 GitPython 中执行此操作。 - mkrieger1