diff options
| author | Russ Cox <rsc@golang.org> | 2010-01-07 18:23:30 -0800 | 
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2010-01-07 18:23:30 -0800 | 
| commit | 1adf5b266f513f1702fc5631bf63df25a015713d (patch) | |
| tree | d3e4cfe6237bdc83531ebc3bfba0ce94c7401c41 | |
| parent | 4898c74a0dde5e470d2413dbdf7e291795b42df1 (diff) | |
| download | golang-1adf5b266f513f1702fc5631bf63df25a015713d.tar.gz | |
codereview: repeated hg mail sends "PTAL"
also send out hg mail for TBR submits
R=r
CC=golang-dev
http://codereview.appspot.com/183137
| -rw-r--r-- | lib/codereview/codereview.py | 38 | 
1 files changed, 29 insertions, 9 deletions
| diff --git a/lib/codereview/codereview.py b/lib/codereview/codereview.py index 78eb6c63f..e260c5e84 100644 --- a/lib/codereview/codereview.py +++ b/lib/codereview/codereview.py @@ -123,12 +123,14 @@ class CL(object):  		self.local = False  		self.web = False  		self.original_author = None	# None means current user +		self.mailed = False  	def DiskText(self):  		cl = self  		s = ""  		if cl.original_author:  			s += "Author: " + cl.original_author + "\n\n" +		s += "Mailed: " + str(self.mailed) + "\n"  		s += "Description:\n"  		s += Indent(cl.desc, "\t")  		s += "Files:\n" @@ -260,6 +262,20 @@ class CL(object):  		self.Flush(ui, repo)  		return +	def Mail(self, ui,repo): +		pmsg = "Hello " + JoinComma(self.reviewer) +		if self.cc: +			pmsg += " (cc: %s)" % (', '.join(self.cc),) +		pmsg += ",\n" +		pmsg += "\n" +		if not self.mailed: +			pmsg += "I'd like you to review this change.\n" +		else: +			pmsg += "Please take another look.\n" +		PostMessage(ui, self.name, pmsg, subject=self.Subject()) +		self.mailed = True +		self.Flush(ui, repo) +  def GoodCLName(name):  	return re.match("^[0-9]+$", name) @@ -273,6 +289,7 @@ def ParseCL(text, name):  		'URL': '',  		'Reviewer': '',  		'CC': '', +		'Mailed': '',  	}  	for line in text.split('\n'):  		lineno += 1 @@ -312,8 +329,14 @@ def ParseCL(text, name):  	cl.reviewer = SplitCommaSpace(sections['Reviewer'])  	cl.cc = SplitCommaSpace(sections['CC'])  	cl.url = sections['URL'] +	if sections['Mailed'] != 'False': +		# Odd default, but avoids spurious mailings when +		# reading old CLs that do not have a Mailed: line. +		# CLs created with this update will always have  +		# Mailed: False on disk. +		cl.mailed = True  	if cl.desc == '<enter description here>': -		cl.desc = ''; +		cl.desc = ''  	return cl, 0, ''  def SplitCommaSpace(s): @@ -928,13 +951,7 @@ def mail(ui, repo, *pats, **opts):  	cl.Upload(ui, repo, gofmt_just_warn=True)  	if not cl.reviewer and not cl.cc:  		return "no reviewers listed in CL" -	pmsg = "Hello " + JoinComma(cl.reviewer) -	if cl.cc: -		pmsg += " (cc: %s)" % (', '.join(cl.cc),) -	pmsg += ",\n" -	pmsg += "\n" -	pmsg += "I'd like you to review the following change.\n" -	PostMessage(ui, cl.name, pmsg, subject=cl.Subject()) +	cl.Mail(ui, repo)  def nocommit(ui, repo, *pats, **opts):  	"""(disabled when using this extension)""" @@ -1004,7 +1021,7 @@ def submit(ui, repo, *pats, **opts):  	if not opts["no_incoming"] and Incoming(ui, repo, opts):  		return "local repository out of date; must sync before submit" -	cl, err = CommandLineCL(ui, repo, pats, opts) +	cl, err = CommandLineCL(ui, repo, pats, opts, defaultcc=defaultcc)  	if err != "":  		return err @@ -1042,6 +1059,9 @@ def submit(ui, repo, *pats, **opts):  	if cl.original_author:  		about += "\nCommitter: " + CheckContributor(ui, repo, None) + "\n" +	if not cl.mailed:		# in case this is TBR +		cl.Mail(ui, repo) +  	# submit changes locally  	date = opts.get('date')  	if date: | 
