Aaron Bentley <[EMAIL PROTECTED]> writes:
> Matthieu Moy wrote:
>> [ I'm Cc-ing bzr's mailing list to get more opinions. ]
>>
>> "Daniel 'NebuchadnezzaR' Dehennin" <[EMAIL PROTECTED]>
>> writes:
>>
>> Perhaps just the branch nick could be in the subject line, and the URL
>> in the body. I'd see something like that:
>
> If the branch nick goes in, perhaps it should be near the revno, since
> it helps give context to the revno. It might also be useful for
> alphabetic sorting:
>
> Subject: dvc.moy rev 37: Updated .bzrignore (new bzr have no default
> ignore).
The problem of having the branch nick in the beginning is that it
might be long, and the mailer might truncate the summary itself, which
is the important bit.
I propose this:
,----
| Subject: some commit message [Rev 23 in foo test branch]
|
| New revision in http://some.fake/url/
| ------------------------------------------------------------
| revno: 23
| revision-id: [EMAIL PROTECTED]
| parent: [EMAIL PROTECTED]
| committer: Matthieu Moy <[EMAIL PROTECTED]>
| branch nick: foo test branch
| timestamp: Sat 2006-07-08 21:21:53 +0200
| message:
| some commit message
`----
which is implemented in the attached bundle, with testcase updated (it
also contains the other improvements I sent not long ago, which
haven't been merged yet).
# Bazaar revision bundle v0.8
#
# message:
# Changed the output format.
#
# committer: Matthieu Moy <[EMAIL PROTECTED]>
# date: Sat 2006-07-08 21:18:27.906470060 +0200
=== added file .bzrignore // file-id:bzrignore-20060707090355-9zooetuf9x7rgfne-
... 1 // last-changed:[EMAIL PROTECTED]
--- /dev/null
+++ .bzrignore
@@ -0,0 +1,4 @@
+*.pyc
+*~
+.*.sw[nop]
+.sw[nop]
=== modified file README // last-changed:[EMAIL PROTECTED]
... 80fca24d865bf9
--- README
+++ README
@@ -3,7 +3,12 @@
address is set, and should allow format specifiers too.
Until then, it is activated by setting
-post_commit=bzrlib.plugins.email.post_commit in bazaar.conf or branches.conf.
+post_commit=bzrlib.plugins.email.post_commit in bazaar.conf or locations.conf.
+The plugin must be installed as "email" (i.e. ~/.bazaar/plugins/email/).
The address to sent to is read from 'post_commit_to' and the address to send
from from 'post_commit_sender'.
+
+If 'post_commit_url' is set, it is used instead of the branch URL
+(useful since in most cases, you commit to a private url, and you want
+the public HTTP url in the commit message).
=== modified file __init__.py
--- __init__.py
+++ __init__.py
@@ -54,7 +54,8 @@
end_revision=rev2,
verbose=True
)
- return outf.getvalue()
+ return "New revision in " + self.url() + "\n" \
+ + outf.getvalue()
def _command_line(self):
return ['mail', '-s', self.subject(), '-a', "From: " + self.from_address(),
@@ -64,6 +65,14 @@
"""What is the address the mail should go to."""
return self.config.get_user_option('post_commit_to')
+ def url(self):
+ """What URL to display in the subject of the mail"""
+ url = self.config.get_user_option('post_commit_url')
+ if url is None:
+ url = self.branch.base
+ return url
+
+
def from_address(self):
"""What address should I send from."""
result = self.config.get_user_option('post_commit_sender')
@@ -101,15 +110,19 @@
def should_send(self):
return self.to() is not None and self.from_address() is not None
+ def send_maybe(self):
+ if self.should_send():
+ self.send()
+
def subject(self):
- return ("Rev %d: %s in %s" %
- (self.revno,
- self.revision.message.split('\n')[0].split('\r')[0],
- self.branch.base))
+ return ("%s [Rev %s in %s]" %
+ (self.revision.get_summary(),
+ self.revno,
+ self.config.get_nickname()))
def post_commit(branch, revision_id):
- EmailSender(branch, revision_id, config.BranchConfig(branch)).send()
+ EmailSender(branch, revision_id, config.BranchConfig(branch)).send_maybe()
def test_suite():
=== modified file tests/testemail.py
--- tests/testemail.py
+++ tests/testemail.py
@@ -35,12 +35,24 @@
unconfigured_config=("[DEFAULT]\n"
"email=Robert <[EMAIL PROTECTED]>\n")
+sender_configured_config=("[DEFAULT]\n"
+ "post_commit_sender=Sample <[EMAIL PROTECTED]>\n")
+
+to_configured_config=("[DEFAULT]\n"
+ "post_commit_to=Sample <[EMAIL PROTECTED]>\n")
+
+with_url_config=("[DEFAULT]\n"
+ "post_commit_url=http://some.fake/url/\n"
+ "[EMAIL PROTECTED]"
+ "post_commit_sender=Sample <[EMAIL PROTECTED]>\n")
+
class TestGetTo(TestCaseInTempDir):
def test_body(self):
- sender = self.get_sender()
+ sender = self.get_sender(with_url_config)
# FIXME: this should not use a literal log, rather grab one from bzrlib.log
self.assertEqual(
+ 'New revision in http://some.fake/url/\n'
'------------------------------------------------------------\n'
'revno: 1\n'
'revision-id: A\n'
@@ -78,10 +90,25 @@
sender = self.get_sender(unconfigured_config)
self.assertEqual(False, sender.should_send())
+ def test_should_not_send_sender_configured(self):
+ sender = self.get_sender(sender_configured_config)
+ self.assertEqual(False, sender.should_send())
+
+ def test_should_not_send_to_configured(self):
+ sender = self.get_sender(to_configured_config)
+ self.assertEqual(True, sender.should_send())
+
+ def test_url_set(self):
+ sender = self.get_sender(with_url_config)
+ self.assertEqual(sender.url(), 'http://some.fake/url/')
+
+ def test_url_unset(self):
+ sender = self.get_sender()
+ self.assertEqual(sender.url(), sender.branch.base)
+
def test_subject(self):
sender = self.get_sender()
- self.assertEqual("Rev 1: foo bar baz in %s" %
- sender.branch.base,
+ self.assertEqual("foo bar baz [Rev 1 in bzrlib.plugins.email.tests.testemail.TestGetTo.test_subject]",
sender.subject())
def get_sender(self, text=sample_config):
# revision id: [EMAIL PROTECTED]
# sha1: 3dfb9b9709cf7c5ad991b4c4229fcac3f70b64be
# inventory sha1: d1d32a09e78da9ae44c224ae44a05a7271df1631
# parent ids:
# [EMAIL PROTECTED]
# base id: [EMAIL PROTECTED]
# properties:
# branch-nick: email
# message:
# Created .bzrignore
# committer: Matthieu Moy <[EMAIL PROTECTED]>
# date: Fri 2006-07-07 11:04:00.389287949 +0200
=== added file .bzrignore // file-id:bzrignore-20060707090355-9zooetuf9x7rgfne-
... 1 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgLmJ6cmlnbm9yZQpAQCAtMCwwICsxLDQgQEAKKyoucHljCisqfgor
Liouc3dbbm9wXQorLnN3W25vcF0KCg==
# revision id: [EMAIL PROTECTED]
# sha1: c9298f01e8b8392f509391f98781453f3acaece0
# inventory sha1: 5cf9ed930cbfda0b34f901d4d3455f523c68e5a8
# parent ids:
# [EMAIL PROTECTED]
# properties:
# branch-nick: email
# message:
# More tests
#
# committer: Matthieu Moy <[EMAIL PROTECTED]>
# date: Fri 2006-07-07 10:59:51.583190918 +0200
=== modified file tests/testemail.py // encoding:base64
LS0tIHRlc3RzL3Rlc3RlbWFpbC5weQorKysgdGVzdHMvdGVzdGVtYWlsLnB5CkBAIC0zNSw2ICsz
NSwxNyBAQAogdW5jb25maWd1cmVkX2NvbmZpZz0oIltERUZBVUxUXVxuIgogICAgICAgICAgICAg
ICAgICAgICAgImVtYWlsPVJvYmVydCA8Zm9vQGV4YW1wbGUuY29tPlxuIikKIAorc2VuZGVyX2Nv
bmZpZ3VyZWRfY29uZmlnPSgiW0RFRkFVTFRdXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwb3N0X2NvbW1pdF9zZW5kZXI9U2FtcGxlIDxmb29AZXhhbXBsZS5jb20+XG4iKQorCit0b19j
b25maWd1cmVkX2NvbmZpZz0oIltERUZBVUxUXVxuIgorICAgICAgICAgICAgICAgICAgICAgICJw
b3N0X2NvbW1pdF90bz1TYW1wbGUgPGZvb0BleGFtcGxlLmNvbT5cbiIpCisKK3dpdGhfdXJsX2Nv
bmZpZz0oIltERUZBVUxUXVxuIgorICAgICAgICAgICAgICAgICAicG9zdF9jb21taXRfdXJsPWh0
dHA6Ly9zb21lLmZha2UvdXJsL1xuIgorICAgICAgICAgICAgICAgICAicG9zdF9jb21taXRfdG89
ZGVtb0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgICAgICAicG9zdF9jb21taXRfc2VuZGVy
PVNhbXBsZSA8Zm9vQGV4YW1wbGUuY29tPlxuIikKKwogY2xhc3MgVGVzdEdldFRvKFRlc3RDYXNl
SW5UZW1wRGlyKToKIAogICAgIGRlZiB0ZXN0X2JvZHkoc2VsZik6CkBAIC03OCw2ICs4OSwyMiBA
QAogICAgICAgICBzZW5kZXIgPSBzZWxmLmdldF9zZW5kZXIodW5jb25maWd1cmVkX2NvbmZpZykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgc2VuZGVyLnNob3VsZF9zZW5kKCkpCiAK
KyAgICBkZWYgdGVzdF9zaG91bGRfbm90X3NlbmRfc2VuZGVyX2NvbmZpZ3VyZWQoc2VsZik6Cisg
ICAgICAgIHNlbmRlciA9IHNlbGYuZ2V0X3NlbmRlcihzZW5kZXJfY29uZmlndXJlZF9jb25maWcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIHNlbmRlci5zaG91bGRfc2VuZCgpKQor
CisgICAgZGVmIHRlc3Rfc2hvdWxkX25vdF9zZW5kX3RvX2NvbmZpZ3VyZWQoc2VsZik6CisgICAg
ICAgIHNlbmRlciA9IHNlbGYuZ2V0X3NlbmRlcih0b19jb25maWd1cmVkX2NvbmZpZykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBzZW5kZXIuc2hvdWxkX3NlbmQoKSkKKworICAgIGRl
ZiB0ZXN0X3VybF9zZXQoc2VsZik6CisgICAgICAgIHNlbmRlciA9IHNlbGYuZ2V0X3NlbmRlcih3
aXRoX3VybF9jb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VuZGVyLnVybCgpLCAn
aHR0cDovL3NvbWUuZmFrZS91cmwvJykKKworICAgIGRlZiB0ZXN0X3VybF91bnNldChzZWxmKToK
KyAgICAgICAgc2VuZGVyID0gc2VsZi5nZXRfc2VuZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZW5kZXIudXJsKCksIHNlbmRlci5icmFuY2guYmFzZSkKKwogICAgIGRlZiB0ZXN0X3N1
YmplY3Qoc2VsZik6CiAgICAgICAgIHNlbmRlciA9IHNlbGYuZ2V0X3NlbmRlcigpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoIlJldiAxOiBmb28gYmFyIGJheiBpbiAlcyIgJSAKCg==
# revision id: [EMAIL PROTECTED]
# sha1: 03be6d49a595c3c67084fbc2399ac6512c7fb946
# inventory sha1: 94dff2bbdf8dcaeee725b1a7a314a57d30612d5e
# parent ids:
# [EMAIL PROTECTED]
# properties:
# branch-nick: email
# message:
# Allow post_commit_url user-option + minor improvements.
#
# * User-option 'post_commit_url' is used instead of actual URL if it exists.
#
# * Don't try to send the mail if the addresses have not been set
#
# * Use revision.get_summary() instead of spliting the message.
#
# committer: Matthieu Moy <[EMAIL PROTECTED]>
# date: Thu 2006-07-06 16:57:53.171215057 +0200
=== modified file __init__.py // encoding:base64
LS0tIF9faW5pdF9fLnB5CisrKyBfX2luaXRfXy5weQpAQCAtNjgsOSArNjgsOCBAQAogICAgICAg
ICAiIiJXaGF0IFVSTCB0byBkaXNwbGF5IGluIHRoZSBzdWJqZWN0IG9mIHRoZSBtYWlsIiIiCiAg
ICAgICAgIHVybCA9IHNlbGYuY29uZmlnLmdldF91c2VyX29wdGlvbigncG9zdF9jb21taXRfdXJs
JykKICAgICAgICAgaWYgdXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5icmFu
Y2guYmFzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHVybAorICAgICAgICAg
ICAgdXJsID0gc2VsZi5icmFuY2guYmFzZQorICAgICAgICByZXR1cm4gdXJsCiAgICAgCiAKICAg
ICBkZWYgZnJvbV9hZGRyZXNzKHNlbGYpOgpAQCAtMTEwLDE2ICsxMDksMTkgQEAKICAgICBkZWYg
c2hvdWxkX3NlbmQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRvKCkgaXMgbm90IE5vbmUg
YW5kIHNlbGYuZnJvbV9hZGRyZXNzKCkgaXMgbm90IE5vbmUKIAorICAgIGRlZiBzZW5kX21heWJl
KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNob3VsZF9zZW5kKCk6CisgICAgICAgICAgICBzZWxm
LnNlbmQoKQorCiAgICAgZGVmIHN1YmplY3Qoc2VsZik6Ci0gICAgICAgIHByaW50IHNlbGYudXJs
ICgpCiAgICAgICAgIHJldHVybiAoIlJldiAlZDogJXMgaW4gJXMiICUgCiAgICAgICAgICAgICAg
ICAgKHNlbGYucmV2bm8sCi0gICAgICAgICAgICAgICAgIHNlbGYucmV2aXNpb24ubWVzc2FnZS5z
cGxpdCgnXG4nKVswXS5zcGxpdCgnXHInKVswXSwKKyAgICAgICAgICAgICAgICAgc2VsZi5yZXZp
c2lvbi5nZXRfc3VtbWFyeSgpLAogICAgICAgICAgICAgICAgICBzZWxmLnVybCgpKSkKIAogCiBk
ZWYgcG9zdF9jb21taXQoYnJhbmNoLCByZXZpc2lvbl9pZCk6Ci0gICAgRW1haWxTZW5kZXIoYnJh
bmNoLCByZXZpc2lvbl9pZCwgY29uZmlnLkJyYW5jaENvbmZpZyhicmFuY2gpKS5zZW5kKCkKKyAg
ICBFbWFpbFNlbmRlcihicmFuY2gsIHJldmlzaW9uX2lkLCBjb25maWcuQnJhbmNoQ29uZmlnKGJy
YW5jaCkpLnNlbmRfbWF5YmUoKQogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6Cgo=
# revision id: [EMAIL PROTECTED]
# sha1: 72dd64924264e5820abb4c5cef5784a5b77bbde8
# inventory sha1: 1386afcf949486e521a830e738d4c7856bc91de3
# parent ids:
# [EMAIL PROTECTED]
# properties:
# branch-nick: email
# message:
# Allow post_commit_url user-option.
# committer: Matthieu Moy <[EMAIL PROTECTED]>
# date: Thu 2006-07-06 16:44:25.797893047 +0200
=== modified file README // encoding:base64
LS0tIFJFQURNRQorKysgUkVBRE1FCkBAIC00LDYgKzQsMTEgQEAKIAogVW50aWwgdGhlbiwgaXQg
aXMgYWN0aXZhdGVkIGJ5IHNldHRpbmcgCiBwb3N0X2NvbW1pdD1ienJsaWIucGx1Z2lucy5lbWFp
bC5wb3N0X2NvbW1pdCBpbiBiYXphYXIuY29uZiBvciBsb2NhdGlvbnMuY29uZi4KK1RoZSBwbHVn
aW4gbXVzdCBiZSBpbnN0YWxsZWQgYXMgImVtYWlsIiAoaS5lLiB+Ly5iYXphYXIvcGx1Z2lucy9l
bWFpbC8pLgogCiBUaGUgYWRkcmVzcyB0byBzZW50IHRvIGlzIHJlYWQgZnJvbSAncG9zdF9jb21t
aXRfdG8nIGFuZCB0aGUgYWRkcmVzcyB0byBzZW5kCiBmcm9tIGZyb20gJ3Bvc3RfY29tbWl0X3Nl
bmRlcicuCisKK0lmICdwb3N0X2NvbW1pdF91cmwnIGlzIHNldCwgaXQgaXMgdXNlZCBpbnN0ZWFk
IG9mIHRoZSBicmFuY2ggVVJMCisodXNlZnVsIHNpbmNlIGluIG1vc3QgY2FzZXMsIHlvdSBjb21t
aXQgdG8gYSBwcml2YXRlIHVybCwgYW5kIHlvdSB3YW50Cit0aGUgcHVibGljIEhUVFAgdXJsIGlu
IHRoZSBjb21taXQgbWVzc2FnZSkuCgo=
=== modified file __init__.py // encoding:base64
LS0tIF9faW5pdF9fLnB5CisrKyBfX2luaXRfXy5weQpAQCAtNjQsNiArNjQsMTUgQEAKICAgICAg
ICAgIiIiV2hhdCBpcyB0aGUgYWRkcmVzcyB0aGUgbWFpbCBzaG91bGQgZ28gdG8uIiIiCiAgICAg
ICAgIHJldHVybiBzZWxmLmNvbmZpZy5nZXRfdXNlcl9vcHRpb24oJ3Bvc3RfY29tbWl0X3RvJykK
IAorICAgIGRlZiB1cmwoc2VsZik6CisgICAgICAgICIiIldoYXQgVVJMIHRvIGRpc3BsYXkgaW4g
dGhlIHN1YmplY3Qgb2YgdGhlIG1haWwiIiIKKyAgICAgICAgdXJsID0gc2VsZi5jb25maWcuZ2V0
X3VzZXJfb3B0aW9uKCdwb3N0X2NvbW1pdF91cmwnKQorICAgICAgICBpZiB1cmwgaXMgTm9uZToK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLmJyYW5jaC5iYXNlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICByZXR1cm4gdXJsCisgICAgCisKICAgICBkZWYgZnJvbV9hZGRyZXNzKHNlbGYpOgog
ICAgICAgICAiIiJXaGF0IGFkZHJlc3Mgc2hvdWxkIEkgc2VuZCBmcm9tLiIiIgogICAgICAgICBy
ZXN1bHQgPSBzZWxmLmNvbmZpZy5nZXRfdXNlcl9vcHRpb24oJ3Bvc3RfY29tbWl0X3NlbmRlcicp
CkBAIC0xMDIsMTAgKzExMSwxMSBAQAogICAgICAgICByZXR1cm4gc2VsZi50bygpIGlzIG5vdCBO
b25lIGFuZCBzZWxmLmZyb21fYWRkcmVzcygpIGlzIG5vdCBOb25lCiAKICAgICBkZWYgc3ViamVj
dChzZWxmKToKKyAgICAgICAgcHJpbnQgc2VsZi51cmwgKCkKICAgICAgICAgcmV0dXJuICgiUmV2
ICVkOiAlcyBpbiAlcyIgJSAKICAgICAgICAgICAgICAgICAoc2VsZi5yZXZubywKICAgICAgICAg
ICAgICAgICAgc2VsZi5yZXZpc2lvbi5tZXNzYWdlLnNwbGl0KCdcbicpWzBdLnNwbGl0KCdccicp
WzBdLAotICAgICAgICAgICAgICAgICBzZWxmLmJyYW5jaC5iYXNlKSkKKyAgICAgICAgICAgICAg
ICAgc2VsZi51cmwoKSkpCiAKIAogZGVmIHBvc3RfY29tbWl0KGJyYW5jaCwgcmV2aXNpb25faWQp
OgoK
# revision id: [EMAIL PROTECTED]
# sha1: cfefab0aeb7d792e3d343d54328ba840fae16543
# inventory sha1: 3d96097182fedba1de5cd121b7e2ebaf01749af7
# parent ids:
# [EMAIL PROTECTED]
# properties:
# branch-nick: email
# message:
# branches.conf -> locations.conf in README.
#
# committer: Matthieu Moy <[EMAIL PROTECTED]>
# date: Thu 2006-07-06 16:33:48.881210089 +0200
=== modified file README // encoding:base64
LS0tIFJFQURNRQorKysgUkVBRE1FCkBAIC0zLDcgKzMsNyBAQAogYWRkcmVzcyBpcyBzZXQsIGFu
ZCBzaG91bGQgYWxsb3cgZm9ybWF0IHNwZWNpZmllcnMgdG9vLgogCiBVbnRpbCB0aGVuLCBpdCBp
cyBhY3RpdmF0ZWQgYnkgc2V0dGluZyAKLXBvc3RfY29tbWl0PWJ6cmxpYi5wbHVnaW5zLmVtYWls
LnBvc3RfY29tbWl0IGluIGJhemFhci5jb25mIG9yIGJyYW5jaGVzLmNvbmYuCitwb3N0X2NvbW1p
dD1ienJsaWIucGx1Z2lucy5lbWFpbC5wb3N0X2NvbW1pdCBpbiBiYXphYXIuY29uZiBvciBsb2Nh
dGlvbnMuY29uZi4KIAogVGhlIGFkZHJlc3MgdG8gc2VudCB0byBpcyByZWFkIGZyb20gJ3Bvc3Rf
Y29tbWl0X3RvJyBhbmQgdGhlIGFkZHJlc3MgdG8gc2VuZAogZnJvbSBmcm9tICdwb3N0X2NvbW1p
dF9zZW5kZXInLgoK
# revision id: [EMAIL PROTECTED]
# sha1: ec3928a872ce8450c3573d1f9f12b3ebead63d74
# inventory sha1: b4a684531f206a978a797c3925f451ca81b99545
# parent ids:
# [EMAIL PROTECTED]
# properties:
# branch-nick: email
--
Matthieu
_______________________________________________
Dvc-dev mailing list
[email protected]
https://mail.gna.org/listinfo/dvc-dev