Example #1
0
def specified_worktree_state_dict(head='HEAD', p=git.git_dir, update_index=False):
    """Return a dict of files in various states of being

    :rtype: dict, keys are staged, unstaged, untracked, unmerged,
            changed_upstream, and submodule.

    """
    if update_index:
        git.update_index(refresh=True)

    staged, unmerged, submodules = specified_diff_index(head, p)
    modified, more_submods = specified_diff_worktree(p)

    # Remove unmerged paths from the modified list
    unmerged_set = set(unmerged)
    modified_set = set(modified)
    modified_unmerged = modified_set.intersection(unmerged_set)
    for path in modified_unmerged:
        modified.remove(path)

    submodules = submodules.union(more_submods)
    untracked = specified_untracked_files(p)

    # Look for upstream modified files if this is a tracking branch
    upstream_changed = specified_diff_upstream(head, p)

    # Keep stuff sorted
    staged.sort()
    modified.sort()
    unmerged.sort()
    untracked.sort()
    upstream_changed.sort()

    return {'staged': staged,
            'modified': modified,
            'unmerged': unmerged,
            'untracked': untracked,
            'upstream_changed': upstream_changed,
            'submodules': submodules}
Example #2
0
def untrack_paths(args, head='HEAD'):
    if not args:
        return (-1, 'Nothing to do')
    return git.update_index('--', force_remove=True,
                            with_status=True, *set(args))