GitPython проверяет, изменил ли git pull локальные файлы - PullRequest
0 голосов
/ 01 июня 2018

Используя GitPython, я хочу вызывать функцию только в том случае, если после вытягивания происходят изменения в локальных файлах.Например, если я делаю push на отдельном компьютере.Затем включите первый компьютер, он работает, как и ожидалось, но не дает никакого вывода.Идеальный вывод - это список файлов, которые были изменены.Или, в качестве альтернативы, просто что-то, что сообщало мне о том, что при извлечении произошла ошибка, ничего не вытащено, потому что ветка была обновлена, или логическое значение, в котором произошли изменения.Я полагаю, что мог бы очистить repo.git.status (), но это кажется грубым.Оглядываясь по сторонам, я могу сравнить ветви на предмет изменений, но мне кажется, что это лишний код и удаленные вызовы.Есть ли правильный способ, используя только вызов по запросу?

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)
...