Search code examples
pythongitpygit2

how to interpret pygit2 status info


I am using pygit2 to access that status of the repo

status = repo.status()

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

I dont seem to be able to find any documentation on how to interpret the flags

Could someone point me in the rigth direction please


Solution

  • The documentation seems to be pretty clear on this:

    Repository.status(untracked_files: str = 'all', ignored: bool = False) → dict[str, enums.FileStatus]

    Reads the status of the repository and returns a dictionary with file paths as keys and FileStatus flags as values.

    The status values are in a bitmask enum:

    >>> from pygit2.enums import FileStatus
    >>> FileStatus.__members__
    mappingproxy({
        'CURRENT': <FileStatus.CURRENT: 0>,
        'INDEX_NEW': <FileStatus.INDEX_NEW: 1>,
        'INDEX_MODIFIED': <FileStatus.INDEX_MODIFIED: 2>,
        'INDEX_DELETED': <FileStatus.INDEX_DELETED: 4>,
        'INDEX_RENAMED': <FileStatus.INDEX_RENAMED: 8>,
        'INDEX_TYPECHANGE': <FileStatus.INDEX_TYPECHANGE: 16>,
        'WT_NEW': <FileStatus.WT_NEW: 128>,
        'WT_MODIFIED': <FileStatus.WT_MODIFIED: 256>,
        'WT_DELETED': <FileStatus.WT_DELETED: 512>,
        'WT_TYPECHANGE': <FileStatus.WT_TYPECHANGE: 1024>,
        'WT_RENAMED': <FileStatus.WT_RENAMED: 2048>,
        'WT_UNREADABLE': <FileStatus.WT_UNREADABLE: 4096>,
        'IGNORED': <FileStatus.IGNORED: 16384>,
        'CONFLICTED': <FileStatus.CONFLICTED: 32768>
    })
    

    Note that actual status values may be combinations of this mask, for example a file which has both staged (index) and unstaged (worktree) changes would report a status value of:

    <FileStatus.INDEX_MODIFIED|WT_MODIFIED: 258>