| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 4964350b274285e3dad3883ecd84fefeca45080e..76871fa0e90d48fcf4c6a5c6806a640dc8163072 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -2873,7 +2873,16 @@ def CMDland(parser, args):
|
| return SendUpstream(parser, args, 'land')
|
|
|
|
|
| -@subcommand.usage('<patch url or issue id>')
|
| +def ParseIssueNum(arg):
|
| + """Parses the issue number from args if present otherwise returns None."""
|
| + if re.match(r'\d+', arg):
|
| + return arg
|
| + if arg.startswith('http'):
|
| + return re.sub(r'.*/(\d+)/?', r'\1', arg)
|
| + return None
|
| +
|
| +
|
| +@subcommand.usage('<patch url or issue id or issue url>')
|
| def CMDpatch(parser, args):
|
| """Patches in a code review."""
|
| parser.add_option('-b', dest='newbranch',
|
| @@ -2895,7 +2904,13 @@ def CMDpatch(parser, args):
|
| if len(args) != 1:
|
| parser.print_help()
|
| return 1
|
| - issue_arg = args[0]
|
| +
|
| + issue_arg = ParseIssueNum(args[0])
|
| + # The patch URL works because ParseIssueNum won't do any substitution
|
| + # as the re.sub pattern fails to match and just returns it.
|
| + if issue_arg == None:
|
| + parser.print_help()
|
| + return 1
|
|
|
| # We don't want uncommitted changes mixed up with the patch.
|
| if git_common.is_dirty_git_tree('patch'):
|
| @@ -3550,11 +3565,8 @@ def CMDcheckout(parser, args):
|
| parser.print_help()
|
| return 1
|
|
|
| - if re.match(r'\d+', args[0]):
|
| - target_issue = args[0]
|
| - elif args[0].startswith('http'):
|
| - target_issue = re.sub(r'.*/(\d+)/?', r'\1', args[0])
|
| - else:
|
| + target_issue = ParseIssueNum(args[0])
|
| + if target_issue == None:
|
| parser.print_help()
|
| return 1
|
|
|
|
|