From 4f028a568013583d15ab6b7c6b0b0540d9c6beed Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Fri, 30 May 2014 14:24:35 -0700 Subject: [PATCH] Add git-branch-check script --- home/.vimrc | 4 ++++ home/bin/git-branch-check | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100755 home/bin/git-branch-check diff --git a/home/.vimrc b/home/.vimrc index 3fc2699..9232944 100644 --- a/home/.vimrc +++ b/home/.vimrc @@ -106,8 +106,12 @@ autocmd BufEnter * :syntax sync fromstart noremap :syntax sync fromstart inoremap :syntax sync fromstart +" Markdown syntax autocmd BufRead,BufNewFile *.md set ft=markdown +" Show tab characters +set list listchars=tab:\|\ + """""""""""""" """ Perl stuff """""""""""""" diff --git a/home/bin/git-branch-check b/home/bin/git-branch-check new file mode 100755 index 0000000..1f1ce06 --- /dev/null +++ b/home/bin/git-branch-check @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +# git-branch-check: Compare your local git branches with the remote. +# +# Usage: git-branch-check [remote] +# +# Default remote name is "origin", provide [remote] to change that. +# +# --Kirsle +# https://www.kirsle.net/ + +import sys +import subprocess + +remote = "origin" +if len(sys.argv) >= 2: + remote = sys.argv[1] + +local_branch = set() +remote_branch = set() + +data = subprocess.check_output(["git", "branch", "-a"]) +for line in data.split("\n"): + # Remove the currently active branch indicator and extra spaces. + line = line.strip("*").strip() + if not len(line): continue + + # Remote branch? + if line.startswith("remotes/{}/".format(remote)): + line = line.replace("remotes/{}/".format(remote), "") + remote_branch.add(line) + elif line.startswith("remotes/"): + # A different remote? + pass + else: + local_branch.add(line) + +# Show comparisons. +print "Local branches that are not on the remote:" +for branch in sorted(local_branch): + if not branch in remote_branch: + print "*", branch + +# vim:expandtab