Как интерпретировать информацию о статусе pygit2

Я использую pygit2 для доступа к этому состоянию репо

status = repo.status()

for filepath,flags in status.items():
    print ("path %s flags %d", filepath, flags)

Кажется, я не могу найти какую-либо документацию о том, как интерпретировать флаги

Может ли кто-нибудь указать мне в правильном направлении, пожалуйста

1 ответ

Решение

Документация, кажется, довольно ясно об этом:

Repository.status () → {str: int}

Считывает состояние хранилища и возвращает словарь с путями к файлам в качестве ключей и флагами состояния в качестве значений. Смотрите pygit2.GIT_STATUS_*.

И вот у вас их: https://github.com/libgit2/pygit2/blob/320ee5e733039d4a3cc952b287498dbc5737c353/src/pygit2.c#L312-L320

Вам нужно будет извлечь коды состояния pygit2. Вот пример.

Выход git status для некоторых неустановленных коммитов:

On branch master
Changes not staged for commit:
    deleted:    deleted.txt
    modified:   modified.txt
Untracked files:
    added.txt

вывод состояния pygit2

repo.status()
#{'added.txt': 128, 'deleted.txt': 512, 'modified.txt': 256}

Коды состояния из pygit2

from pygit2 import GIT_STATUS_WT_NEW, GIT_STATUS_WT_DELETED, GIT_STATUS_WT_MODIFIED
print("GIT_STATUS_WT_NEW", GIT_STATUS_WT_NEW)
print("GIT_STATUS_WT_DELETED", GIT_STATUS_WT_DELETED)
print("GIT_STATUS_WT_MODIFIED", GIT_STATUS_WT_MODIFIED)
#GIT_STATUS_WT_NEW 128
#GIT_STATUS_WT_DELETED 512
#GIT_STATUS_WT_MODIFIED 256

Для поэтапных коммитов соответствующие коды состояния: GIT_STATUS_INDEX_NEW, GIT_STATUS_INDEX_DELETED, GIT_STATUS_INDEX_MODIFIED, и так далее.

Другие вопросы по тегам