aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-01-07 18:23:30 -0800
committerRuss Cox <rsc@golang.org>2010-01-07 18:23:30 -0800
commit1594730461e95e51624e16b74c07ca46bc243ba5 (patch)
treee87b46314634a84744163d0039f4f02b869774c7
parentfe56e2cc3587a9e507b9d73ebe77eb9af5cb9c39 (diff)
downloadgo-1594730461e95e51624e16b74c07ca46bc243ba5.tar.gz
go-1594730461e95e51624e16b74c07ca46bc243ba5.zip
codereview: repeated hg mail sends "PTAL"
also send out hg mail for TBR submits R=r CC=golang-dev https://golang.org/cl/183137
-rw-r--r--lib/codereview/codereview.py38
1 files changed, 29 insertions, 9 deletions
diff --git a/lib/codereview/codereview.py b/lib/codereview/codereview.py
index 78eb6c63f5..e260c5e84c 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: