| Index: git_nav_downstream.py
|
| diff --git a/git_nav_downstream.py b/git_nav_downstream.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..d3f4a6315d05c48a15575f981c7ae4d526365e3d
|
| --- /dev/null
|
| +++ b/git_nav_downstream.py
|
| @@ -0,0 +1,35 @@
|
| +#!/usr/bin/env python
|
| +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))
|
|
|