@ -939,7 +939,11 @@ class Changelist(object):
with great care .
with great care .
"""
"""
def __init__ ( self , branchref = None , issue = None , codereview_host = None ) :
def __init__ ( self ,
branchref = None ,
issue = None ,
codereview_host = None ,
commit_date = None ) :
""" Create a new ChangeList instance.
""" Create a new ChangeList instance.
* * kwargs will be passed directly to Gerrit implementation .
* * kwargs will be passed directly to Gerrit implementation .
@ -956,6 +960,7 @@ class Changelist(object):
self . branch = scm . GIT . ShortBranchName ( self . branchref )
self . branch = scm . GIT . ShortBranchName ( self . branchref )
else :
else :
self . branch = None
self . branch = None
self . commit_date = commit_date
self . upstream_branch = None
self . upstream_branch = None
self . lookedup_issue = False
self . lookedup_issue = False
self . issue = issue or None
self . issue = issue or None
@ -994,6 +999,10 @@ class Changelist(object):
""" Extends the list of users to cc on this CL based on the changed files. """
""" Extends the list of users to cc on this CL based on the changed files. """
self . more_cc . extend ( more_cc )
self . more_cc . extend ( more_cc )
def GetCommitDate ( self ) :
""" Returns the commit date as provided in the constructor """
return self . commit_date
def GetBranch ( self ) :
def GetBranch ( self ) :
""" Returns the short branch name, e.g. ' main ' . """
""" Returns the short branch name, e.g. ' main ' . """
if not self . branch :
if not self . branch :
@ -2680,6 +2689,7 @@ class ChangeDescription(object):
fixed_regexp = re . compile ( self . FIXED_LINE )
fixed_regexp = re . compile ( self . FIXED_LINE )
prefix = settings . GetBugPrefix ( )
prefix = settings . GetBugPrefix ( )
has_issue = lambda l : bug_regexp . match ( l ) or fixed_regexp . match ( l )
has_issue = lambda l : bug_regexp . match ( l ) or fixed_regexp . match ( l )
if not any ( ( has_issue ( line ) for line in self . _description_lines ) ) :
if not any ( ( has_issue ( line ) for line in self . _description_lines ) ) :
self . append_footer ( ' Bug: %s ' % prefix )
self . append_footer ( ' Bug: %s ' % prefix )
@ -3495,6 +3505,10 @@ def CMDstatus(parser, args):
' -i ' , ' --issue ' , type = int ,
' -i ' , ' --issue ' , type = int ,
help = ' Operate on this issue instead of the current branch \' s implicit '
help = ' Operate on this issue instead of the current branch \' s implicit '
' issue. Requires --field to be set. ' )
' issue. Requires --field to be set. ' )
parser . add_option ( ' -d ' ,
' --date-order ' ,
action = ' store_true ' ,
help = ' Order branches by committer date. ' )
options , args = parser . parse_args ( args )
options , args = parser . parse_args ( args )
if args :
if args :
parser . error ( ' Unsupported args: %s ' % args )
parser . error ( ' Unsupported args: %s ' % args )
@ -3523,14 +3537,17 @@ def CMDstatus(parser, args):
print ( url )
print ( url )
return 0
return 0
branches = RunGit ( [ ' for-each-ref ' , ' --format= % (refname) ' , ' refs/heads ' ] )
branches = RunGit ( [
' for-each-ref ' , ' --format= %(refname) % (committerdate:unix) ' , ' refs/heads '
] )
if not branches :
if not branches :
print ( ' No local branch found. ' )
print ( ' No local branch found. ' )
return 0
return 0
changes = [
changes = [
Changelist ( branchref = b )
Changelist ( branchref = b , commit_date = ct )
for b in branches . splitlines ( ) ]
for b , ct in map ( lambda line : line . split ( ' ' ) , branches . splitlines ( ) )
]
print ( ' Branches associated with reviews: ' )
print ( ' Branches associated with reviews: ' )
output = get_cl_statuses ( changes ,
output = get_cl_statuses ( changes ,
fine_grained = not options . fast ,
fine_grained = not options . fast ,
@ -3556,7 +3573,13 @@ def CMDstatus(parser, args):
branch_statuses = { }
branch_statuses = { }
alignment = max ( 5 , max ( len ( FormatBranchName ( c . GetBranch ( ) ) ) for c in changes ) )
alignment = max ( 5 , max ( len ( FormatBranchName ( c . GetBranch ( ) ) ) for c in changes ) )
for cl in sorted ( changes , key = lambda c : c . GetBranch ( ) ) :
if options . date_order :
sorted_changes = sorted ( changes ,
key = lambda c : c . GetCommitDate ( ) ,
reverse = True )
else :
sorted_changes = sorted ( changes , key = lambda c : c . GetBranch ( ) )
for cl in sorted_changes :
branch = cl . GetBranch ( )
branch = cl . GetBranch ( )
while branch not in branch_statuses :
while branch not in branch_statuses :
c , status = next ( output )
c , status = next ( output )
@ -5197,6 +5220,7 @@ def CMDlol(parser, args):
class OptionParser ( optparse . OptionParser ) :
class OptionParser ( optparse . OptionParser ) :
""" Creates the option parse and add --verbose support. """
""" Creates the option parse and add --verbose support. """
def __init__ ( self , * args , * * kwargs ) :
def __init__ ( self , * args , * * kwargs ) :
optparse . OptionParser . __init__ (
optparse . OptionParser . __init__ (
self , * args , prog = ' git cl ' , version = __version__ , * * kwargs )
self , * args , prog = ' git cl ' , version = __version__ , * * kwargs )