Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: git_nav_downstream.py

Issue 184113002: Add git-map and git-short-map to depot_tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@new_branch
Patch Set: Make it work on windows Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « git_map_branches.py ('k') | git_number.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_nav_downstream.py
diff --git a/git_nav_downstream.py b/git_nav_downstream.py
new file mode 100755
index 0000000000000000000000000000000000000000..9c2a53780a9f288376c16c3ecefffa6f0ca948c8
--- /dev/null
+++ b/git_nav_downstream.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+"""
+Checks out a downstream branch from the currently checked out branch. If there
+is more than one downstream branch, then this script will prompt you to select
+which branch.
+"""
+import sys
+
+from git_common import current_branch, branches, upstream, run, hash_one
+
+
+def main(argv):
+ assert len(argv) == 1, "No arguments expected"
+ upfn = upstream
+ cur = current_branch()
+ if cur == 'HEAD':
+ upfn = lambda b: hash_one(upstream(b))
+ cur = hash_one(cur)
+ downstreams = [b for b in branches() if upfn(b) == cur]
+ if not downstreams:
+ return "No downstream branches"
+ elif len(downstreams) == 1:
+ run('checkout', downstreams[0])
+ else:
+ high = len(downstreams) - 1
+ print
+ while True:
+ print "Please select a downstream branch"
+ for i, b in enumerate(downstreams):
+ print " %d. %s" % (i, b)
+ r = raw_input("Selection (0-%d)[0]: " % high).strip() or '0'
+ if not r.isdigit() or (0 > int(r) > high):
+ print "Invalid choice."
+ else:
+ run('checkout', downstreams[int(r)])
+ break
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
« no previous file with comments | « git_map_branches.py ('k') | git_number.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698