@ -2885,7 +2885,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 ' ,
@ -2907,7 +2916,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 ' ) :
@ -3565,11 +3580,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