Esempio n. 1
0
def diff_worktree(paths=None):
    modified = []
    submodules = set()

    if paths is None:
        paths = []
    filter_paths = ['--'] + paths
    status, out, err = git.diff_files(z=True, *filter_paths)
    if status != 0:
        # handle git init
        out = git.ls_files(modified=True, z=True)[STDOUT]
        if out:
            modified = out[:-1].split('\0')
        return modified, submodules

    while out:
        rest, out = out.split('\0', 1)
        name, out = out.split('\0', 1)
        status = rest[-1]
        if '160000' in rest[1:14]:
            submodules.add(name)
        elif status in 'DAMT':
            modified.append(name)

    return modified, submodules
Esempio n. 2
0
def diff_worktree(paths=None):
    modified = []
    submodules = set()

    if paths is None:
        paths = []
    filter_paths = ['--'] + paths
    status, out, err = git.diff_files(z=True, *filter_paths)
    if status != 0:
        # handle git init
        out = git.ls_files(modified=True, z=True)[STDOUT]
        if out:
            modified = out[:-1].split('\0')
        return modified, submodules

    while out:
        rest, out = out.split('\0', 1)
        name, out = out.split('\0', 1)
        status = rest[-1]
        if '160000' in rest[1:14]:
            submodules.add(name)
        elif status in 'DAMT':
            modified.append(name)

    return modified, submodules
Esempio n. 3
0
def diff_worktree(paths=None):
    modified = []
    deleted = set()
    submodules = set()

    if paths is None:
        paths = []
    args = ['--'] + paths
    status, out, err = git.diff_files(z=True, *args)
    for path, status, is_submodule in _parse_raw_diff(out):
        if is_submodule:
            submodules.add(path)
        if status in 'DAMT':
            modified.append(path)
            if status == 'D':
                deleted.add(path)

    return modified, deleted, submodules
Esempio n. 4
0
def diff_worktree(paths=None):
    modified = []
    deleted = set()
    submodules = set()

    if paths is None:
        paths = []
    args = ['--'] + paths
    status, out, err = git.diff_files(z=True, *args)
    for path, status, is_submodule in _parse_raw_diff(out):
        if is_submodule:
            submodules.add(path)
        if status in 'DAMT':
            modified.append(path)
            if status == 'D':
                deleted.add(path)

    return modified, deleted, submodules
Esempio n. 5
0
def diff_worktree():
    modified = []
    submodules = set()

    status, out, err = git.diff_files(z=True)
    if status != 0:
        # handle git init
        out = git.ls_files(modified=True, z=True)[STDOUT]
        if out:
            modified = out[:-1].split("\0")
        return modified, submodules

    while out:
        rest, out = out.split("\0", 1)
        name, out = out.split("\0", 1)
        status = rest[-1]
        if "160000" in rest[1:14]:
            submodules.add(name)
        elif status in "DAMT":
            modified.append(name)

    return modified, submodules
Esempio n. 6
0
def diff_worktree():
    modified = []
    submodules = set()

    status, output = git.diff_files(z=True, with_status=True)
    if status != 0:
        # handle git init
        ls_files = core.decode(git.ls_files(modified=True, z=True))
        if ls_files:
            modified = ls_files[:-1].split('\0')
        return modified, submodules

    while output:
        rest, output = output.split('\0', 1)
        name, output = output.split('\0', 1)
        status = rest[-1]
        name = core.decode(name)
        if '160000' in rest[1:14]:
            submodules.add(name)
        elif status in 'DAMT':
            modified.append(name)

    return modified, submodules
Esempio n. 7
0
def diff_worktree():
    modified = []
    submodules = set()

    status, output = git.diff_files(z=True, with_status=True)
    if status != 0:
        # handle git init
        ls_files = core.decode(git.ls_files(modified=True, z=True))
        if ls_files:
            modified = ls_files[:-1].split('\0')
        return modified, submodules

    while output:
        rest, output = output.split('\0', 1)
        name, output = output.split('\0', 1)
        status = rest[-1]
        name = core.decode(name)
        if '160000' in rest[1:14]:
            submodules.add(name)
        elif status in 'DAMT':
            modified.append(name)

    return modified, submodules
Esempio n. 8
0
def diff_worktree():
    modified = []
    submodules = set()

    output = git.diff_files(z=True, with_stderr=True)
    if output.startswith("fatal:"):
        # handle git init
        ls_files = core.decode(git.ls_files(modified=True, z=True))
        if ls_files:
            modified = ls_files[:-1].split("\0")
        return modified, submodules

    while output:
        rest, output = output.split("\0", 1)
        name, output = output.split("\0", 1)
        status = rest[-1]
        name = core.decode(name)
        if "160000" in rest[1:14]:
            submodules.add(name)
        elif status in "DAMT":
            modified.append(name)

    return modified, submodules