Попытка реплицировать статус git с помощью gitpython - PullRequest
0 голосов
/ 24 марта 2020

Я пишу большую программу с gitpython. Я борюсь с некоторыми аспектами его API, поэтому я решил повторить git status, с этим у меня должно быть достаточно знаний о API, чтобы сделать то, что мне нужно.

Чтобы дублировать это

On branch D3CSMerge
Your branch is up to date with 'origin/D3CSMerge'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   MyappApi/Startup.cs
        modified:   MyappApiApi/MyappApi.csproj
        deleted:    MyappApiSvc.sln

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        test

Пока у меня есть

        local_repo_folder = master_config.get_local_repo_path(project_definition)
        print(local_repo_folder)
        repo = Repo(local_repo_folder)

        if repo.is_dirty():
            print("Branch - " + str(repo.head.ref))
            print(repo.index.diff(repo.head.commit))

            for item in repo.index.diff(None):
                print(item.change_type + " - " + item.a_path)

            for item in repo.untracked_files:
                print("U - " + item)

, который печатает это

/root/source/repos/MyappSvc
Branch - D3CSMerge
[]
M - MyappApi/Startup.cs
M - MyappApi/MyappApi.csproj
D - MyappSvc.sln
U - test

В настоящее время я не могу понять, как повторить строку Your branch is up to date with 'origin/D3CSMerge'..

проблемы

  • Я не могу понять, как получить справочное имя origin/D3CSMerge из головного объекта
  • Мне нужно сравнить это с удаленным, чтобы определить, синхронизирован ли мой локальный c с пультом
  • Что на самом деле печатает строка print(repo.index.diff(repo.head.commit))? Я не могу понять, что это за список на самом деле.
...