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}
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))