def specified_diff_index(head, p, cached=True): decode = core.decode submodules = set() staged = [] unmerged = [] status, output = git.diff_index(head, p, cached=cached, z=True, with_status=True) if status != 0: # handle git init return all_files(), unmerged, submodules while output: rest, output = output.split('\0', 1) name, output = output.split('\0', 1) status = rest[-1] name = decode(name) if '160000' in rest[1:14]: submodules.add(name) elif status in 'DAMT': staged.append(name) elif status == 'U': unmerged.append(name) return staged, unmerged, submodules
def diff_index_filenames(ref): """Return a of filenames that have been modified relative to the index""" diff_zstr = git.diff_index(ref, name_only=True, z=True) return _parse_diff_filenames(diff_zstr)