/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.5.24 by John Arbash Meinel
Adding send-changeset from Johan Rydberg
1
#!/usr/bin/env python
2
"""\
3
Generate a changeset and send it by mail.
4
"""
5
6
import bzrlib, bzrlib.changeset
7
import common, smtplib
8
9
from email import Encoders
10
from email.Message import Message
11
from email.MIMEBase import MIMEBase
12
from email.MIMEMultipart import MIMEMultipart
13
from email.MIMEText import MIMEText
14
15
0.5.30 by John Arbash Meinel
Merging send-changeset updates from jrydberg
16
def send_changeset(b, revno, to_address, message, file, diff_options):
17
    from bzrlib import find_branch
18
    from bzrlib.commands import BzrCommandError
19
    import gen_changeset
20
    import send_changeset
21
    import StringIO
22
23
    revision = b.get_revision(b.lookup_revision(revno))
24
    if not message:
25
        message = revision.message.split('\n')[0]
26
27
    from_address = bzrlib.osutils._get_user_id()
28
0.5.24 by John Arbash Meinel
Adding send-changeset from Johan Rydberg
29
    outer = MIMEMultipart()
0.5.30 by John Arbash Meinel
Merging send-changeset updates from jrydberg
30
    outer['Subject'] = '[PATCH] ' + message
0.5.24 by John Arbash Meinel
Adding send-changeset from Johan Rydberg
31
    outer['To'] = to_address
32
    outer['From'] = from_address
33
0.5.30 by John Arbash Meinel
Merging send-changeset updates from jrydberg
34
    # Either read the mail body from the specified file, or spawn
35
    # an editor and let the user type a description.
36
    if file:
37
        mail_body = open(file, "rt").read()
38
    else:
39
        info = "Changset for revision %d by %s\n" % (revno,
40
                                                     revision.committer)
41
        info += "with the following message:\n"
42
        for line in revision.message.split('\n'):
43
            info += "  " + line + "\n"
44
45
        mail_body = bzrlib.osutils.get_text_message(info)
46
        if mail_body is None:
47
            raise BzrCommandError("aborted")
48
    outer.attach(MIMEText(mail_body))
0.5.24 by John Arbash Meinel
Adding send-changeset from Johan Rydberg
49
    
0.5.30 by John Arbash Meinel
Merging send-changeset updates from jrydberg
50
    changeset_fp = StringIO.StringIO()
51
    gen_changeset.show_changeset(b, revno,
52
                                 external_diff_options=diff_options,
53
                                 to_file=changeset_fp)
54
    outer.attach(MIMEText(changeset_fp.getvalue()))
55
56
    try:
57
        fp = open(os.path.join(bzrlib.osutils.config_dir(), 'smtp-host'), 'rt')
58
        smtpconn = smtplib.SMTP(fp.readline().strip('\n'))
59
    except:
60
        smtpconn = smtplib.SMTP()
61
62
    smtpconn.connect()
63
    smtpconn.sendmail(from_address, to_address, outer.as_string())
64
    smtpconn.close()