GitPython не показывает последний коммит - PullRequest
1 голос
/ 27 апреля 2020

Я работаю над системой автоматизации документации. Часть этого требует, чтобы я проверил последние два коммита репо и проверил различия, и тогда это вызовет несколько событий, основанных на результатах. Я на Ма c, Каталина, с Python 3.7.7.

У меня есть тестовое репо на BitBucket. Я только что сделал некоторые изменения в файле readme, редактируя и фиксируя его непосредственно в BitBucket. Я вижу изменения в BitBucket:

BitBucket Repo

Если я прыгаю на Терминал, перейдите к репозиторию и проверьте статус, я получу ожидаемые результаты:

Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.

Мой сценарий Python продолжает возвращать предыдущий коммит. (Следует отметить, что я немного программировал, но я новичок в Python)

Вот соответствующий код:

import os, sys, git, time
from pathlib import Path

...

#get the repo
from git import Repo
thisRepo = Repo(thisRepoPath)

#fetch the repo first to make sure we capture any changes
for remote in thisRepo.remotes:
    remote.fetch()

#check the diffs
getGitDiff(thisRepo, thisRepoPath)

getGitDiff

def getGitDiff(thisRepo, thisRepoPath):
    printInCyan("Checking:\n" + thisRepoPath)

    #give us read only access to the repo
    thisRepo.config_reader()

    #check to see if files have been changed in the repo and that change was a modification
    print(getStatus(thisRepo, thisRepoPath))

getStatus

def getStatus(thisRepo, path):

    printInRed(thisRepo.head.commit.message)
    printInYellow(time.strftime("%a, %d %b %Y %H:%M", time.gmtime(thisRepo.head.commit.committed_date)))

    changed = [ item.a_path for item in thisRepo.index.diff(None) ]
    result = {}
    if path in changed:
         result['status'] = 'modified'
         result['hasChange'] = True
         result['item'] = changed
    else:
        result['status'] = 'up-to-date'
        result['hasChange'] = False
        result['item'] = changed

    return result

Распечатка сообщения о коммите и дата подтверждения подтверждают, что он читает неправильный коммит. Я уже создал нечто похожее на настольное приложение Ma c, и столкнулся с подобной проблемой и решил ее, вызвав git fetch. Я предполагаю (надеюсь, правильно), что это аналогичная проблема, и я просто не делаю правильный или неправильный вызов. :)

Любая помощь будет оценена. (Я запускаю скрипт в Терминале).

...