| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index bcd4a6252b018978cc860b3ebebf75dd6f197d54..021b1eb1ca17c1d283fafffbcc0979f31f669d82 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -1473,17 +1473,38 @@ def CMDissue(parser, args):
|
|
|
| Pass issue number 0 to clear the current issue.
|
| """
|
| - _, args = parser.parse_args(args)
|
| + parser.add_option('-r', '--reverse', action='store_true',
|
| + help='Lookup the branch(es) for the specified issues. If '
|
| + 'no issues are specified, all branches with mapped '
|
| + 'issues will be listed.')
|
| + options, args = parser.parse_args(args)
|
|
|
| - cl = Changelist()
|
| - if len(args) > 0:
|
| - try:
|
| - issue = int(args[0])
|
| - except ValueError:
|
| - DieWithError('Pass a number to set the issue or none to list it.\n'
|
| - 'Maybe you want to run git cl status?')
|
| - cl.SetIssue(issue)
|
| - print 'Issue number: %s (%s)' % (cl.GetIssue(), cl.GetIssueURL())
|
| + if options.reverse:
|
| + branches = RunGit(['for-each-ref', 'refs/heads',
|
| + '--format=%(refname:short)']).splitlines()
|
| +
|
| + # Reverse issue lookup.
|
| + issue_branch_map = {}
|
| + for branch in branches:
|
| + cl = Changelist(branchref=branch)
|
| + issue_branch_map.setdefault(cl.GetIssue(), []).append(branch)
|
| + if not args:
|
| + args = sorted(issue_branch_map.iterkeys())
|
| + for issue in args:
|
| + if not issue:
|
| + continue
|
| + print 'Branch for issue number %s: %s' % (
|
| + issue, ', '.join(issue_branch_map.get(int(issue)) or ('None',)))
|
| + else:
|
| + cl = Changelist()
|
| + if len(args) > 0:
|
| + try:
|
| + issue = int(args[0])
|
| + except ValueError:
|
| + DieWithError('Pass a number to set the issue or none to list it.\n'
|
| + 'Maybe you want to run git cl status?')
|
| + cl.SetIssue(issue)
|
| + print 'Issue number: %s (%s)' % (cl.GetIssue(), cl.GetIssueURL())
|
| return 0
|
|
|
|
|
|
|