def _get_data_text(self, h): all_branches_text = runext.run_get_cmd(["git", "branch", "-vv"], default="") h.update(all_branches_text.encode()) merged_branches_text = runext.run_get_cmd( ["git", "branch", "--merged"], default="") h.update(merged_branches_text.encode()) return (all_branches_text, merged_branches_text)
def get_author_name_and_email(): import email.utils email_addr = runext.run_get_cmd(["git", "config", "user.email"], default=None) if not email_addr: email_addr = os.environ.get("GIT_AUTHOR_EMAIL", None) if not email_addr: return None name = runext.run_get_cmd(["git", "config", "user.name"], default=None) if not name: name = utils.get_first_in_envar( ["GIT_AUTHOR_NAME", "LOGNAME", "GECOS"], default=_("unknown")) return email.utils.formataddr((name, email_addr))
def index_is_empty(): stdout = runext.run_get_cmd( ["git", "status", "--porcelain", "--untracked-files=no"]) for line in stdout.splitlines(): if line[0] != " ": return False return True
def copy_clean_version_to(filepath, target_name): contents = runext.run_get_cmd( ["git", "cat-file", "blob", "HEAD:{}".format(filepath)]) if contents: utils.ensure_file_dir_exists(target_name) with open(target_name, "w") as fobj: fobj.write(contents)
def get_revision(filepath=None): cmd = [ "git", "show", ] if filepath: cmd.append(filepath) return runext.run_get_cmd(cmd).stdout.splitlines()[0][7:]
def __init__(self): Gtk.ComboBoxText.__init__(self) count = 0 for line in runext.run_get_cmd(["git", "remote"], default="").splitlines(): self.append_text(line) count += 1 if count == 1: self.set_active(0)
def get_files_with_uncommitted_changes(files=None): cmd = [ "git", "status", "--porcelain", "--untracked-files=no", ] if files: cmd += files return [line[3:] for line in runext.run_get_cmd(cmd).splitlines()]
def __init__(self): Gtk.ComboBoxText.__init__(self) current_branch_index = None for i, line in enumerate( runext.run_get_cmd(["git", "branch"], default="").splitlines()): if line.startswith("*"): current_branch_index = i self.append_text(line[2:]) self.set_active(current_branch_index)
def _get_diff_text(self): # TODO: think about making -M a selectable option cmd = ["git", "diff", "--no-ext-diff", "-M"] if self.mode_button["git diff --staged"].get_active(): cmd.append("--staged") elif self.mode_button["git diff HEAD"].get_active(): cmd.append("HEAD") try: return runext.run_get_cmd(cmd, do_rstrip=False) except CmdFailure as failure: dialogue.main_window.report_failure(failure) return failure.result.stdout
def _extract_file_status_snapshot(file_data_text): related_file_path_data = [] fsd = { file_path: (status, related_file_data) for file_path, status, related_file_data in iter_git_file_data_text(file_data_text, related_file_path_data) } for file_path, related_file_path in related_file_path_data: data = fsd.get(related_file_path, None) if data is not None: # don't overwrite git's opinion on related file data if it had one if data[1] is not None: continue status = data[0] else: stdout = runext.run_get_cmd( ["git", "status", "--porcelain", "--", related_file_path], default="") status = stdout[:2] if stdout else None fsd[related_file_path] = (status, fsdb.RFD(path=file_path, relation="<-")) return fsdb.Snapshot(fsd)
def get_stash_diff(stash=None): return runext.run_get_cmd(["git", "stash", "show", "-p"] + runext.OPTNL_ARG(stash), default="", do_rstrip=False)
def get_commit_template(): file_path = runext.run_get_cmd(["git", "config", "commit.template"], default="") return open(file_path).read() if os.path.exists(file_path) else ""
def get_signing_key(): return runext.run_get_cmd(["git", "config", "user.signingkey"], default="")
def _get_data_text(self, h): text = runext.run_get_cmd( ["git", "log", "--pretty=format:%H%n%h%n%an%n%cr%n%s"], default="") h.update(text.encode()) return text
def get_clean_contents(file_path): return runext.run_get_cmd( ["git", "cat-file", "blob", "HEAD:{}".format(file_path)], do_rstrip=False, default=None, decode_stdout=False)
def _get_file_data_text(self, h): file_data_text = runext.run_get_cmd( ["git", "status", "--porcelain", "--ignored", "--untracked=all"]) h.update(file_data_text.encode()) return file_data_text
def get_diff(*args): return runext.run_get_cmd(["git", "diff", "--no-ext-diff"] + list(args), do_rstrip=False)
def _get_patch_data_text(self, h): patch_status_text = runext.run_get_cmd( ["git", "status", "--porcelain", "--untracked-files=no"], default="") h.update(patch_status_text.encode()) return (patch_status_text)
def get_file_status_digest(): stdout = runext.run_get_cmd( ["git", "status", "--porcelain", "--ignored", "--untracked=all"], default=None) return None if stdout is None else hashlib.sha1(stdout).digest()
def _get_data_text(self, h): text = runext.run_get_cmd(["git", "remote", "-v"], default="") h.update(text.encode()) return text
def _get_data_text(self, h): text = runext.run_get_cmd(["git", "stash", "list"], default="") h.update(text.encode()) return text