def worktree_state_dict(head='HEAD', update_index=False, display_untracked=True, paths=None): """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, staged_submods = diff_index(head, paths=paths) modified, modified_submods = diff_worktree(paths) untracked = display_untracked and untracked_files(paths=paths) or [] # 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) # All submodules submodules = staged_submods.union(modified_submods) # Only include the submodule in the staged list once it has # been staged. Otherwise, we'll see the submodule as being # both modified and staged. modified_submods = modified_submods.difference(staged_submods) # Add submodules to the staged and unstaged lists staged.extend(list(staged_submods)) modified.extend(list(modified_submods)) # Look for upstream modified files if this is a tracking branch upstream_changed = diff_upstream(head) # 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 worktree_state_dict(head='HEAD', update_index=False, display_untracked=True, paths=None): """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, staged_submods = diff_index(head, paths=paths) modified, modified_submods = diff_worktree(paths) untracked = display_untracked and untracked_files(paths=paths) or [] # 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) # All submodules submodules = staged_submods.union(modified_submods) # Only include the submodule in the staged list once it has # been staged. Otherwise, we'll see the submodule as being # both modified and staged. modified_submods = modified_submods.difference(staged_submods) # Add submodules to the staged and unstaged lists staged.extend(list(staged_submods)) modified.extend(list(modified_submods)) # Look for upstream modified files if this is a tracking branch upstream_changed = diff_upstream(head) # 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, N_('Nothing to do')) return git.update_index('--', force_remove=True, with_status=True, *set(args))
def worktree_state_dict(head="HEAD", staged_only=False, 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) if staged_only: return _branch_status(head) staged, unmerged, submodules = diff_index(head) modified, more_submods = diff_worktree() # 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 = untracked_files() # Look for upstream modified files if this is a tracking branch upstream_changed = diff_upstream(head) # 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 worktree_state(head='HEAD', update_index=False, display_untracked=True, paths=None): """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, staged_deleted, staged_submods = diff_index(head, paths=paths) modified, unstaged_deleted, modified_submods = diff_worktree(paths) untracked = display_untracked and untracked_files(paths=paths) or [] # Remove unmerged paths from the modified list if unmerged: unmerged_set = set(unmerged) modified = [path for path in modified if path not in unmerged_set] # Look for upstream modified files if this is a tracking branch upstream_changed = diff_upstream(head) # 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, 'staged_deleted': staged_deleted, 'unstaged_deleted': unstaged_deleted, 'submodules': staged_submods | modified_submods }
def worktree_state(head='HEAD', update_index=False, display_untracked=True, paths=None): """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, staged_deleted, staged_submods = diff_index(head, paths=paths) modified, unstaged_deleted, modified_submods = diff_worktree(paths) untracked = display_untracked and untracked_files(paths=paths) or [] # Remove unmerged paths from the modified list if unmerged: unmerged_set = set(unmerged) modified = [path for path in modified if path not in unmerged_set] # Look for upstream modified files if this is a tracking branch upstream_changed = diff_upstream(head) # 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, 'staged_deleted': staged_deleted, 'unstaged_deleted': unstaged_deleted, 'submodules': staged_submods | modified_submods}
def worktree_state_dict(head='HEAD', 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 = diff_index(head) modified, more_submods = diff_worktree() # 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 = untracked_files() # Look for upstream modified files if this is a tracking branch upstream_changed = diff_upstream(head) # 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 unstage_paths(args, head='HEAD'): status, output = git.reset(head, '--', with_stderr=True, with_status=True, *set(args)) if status != 128: return (status, output) # handle git init: we have to use 'git rm --cached' # detect this condition by checking if the file is still staged status, output = git.update_index('--', force_remove=True, with_status=True, with_stderr=True, *set(args)) return (status, output)
def untrack_paths(args, head="HEAD"): if not args: return (-1, N_("Nothing to do"), "") return git.update_index("--", force_remove=True, *set(args))
def untrack_paths(args, head="HEAD"): if not args: return (-1, "Nothing to do") status, output = git.update_index("--", force_remove=True, with_status=True, with_stderr=True, *set(args)) return (status, output)