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

Reply via email to