Diff for "Code/BzrSend"

Not logged in - Log In / Register

Differences between revisions 19 and 20
Revision 19 as of 2009-02-10 20:24:59
Size: 4927
Editor: barry
Comment:
Revision 20 as of 2009-06-03 14:52:39
Size: 4331
Editor: abentley
Comment: Update for lpreview_body and current state of send support.
Deletions are marked like this. Additions are marked like this.
Line 21: Line 21:
In bazaar.conf, add an entry to your aliases: Please ensure the lpreview_body plugin is installed:
Line 23: Line 23:
[ALIASES]
lpsend=send --no-bundle
bzr branch lp:~launchpad/lpreview-body/trunk/ ~/.bazaar/plugins/lpreview_body
Line 27: Line 26:
= Client configuration =
= Creating a New Merge Proposal =

Once your environment is set up, bzr send is as easy as

{{{
bzr send
}}}

This will create a merge proposal and a diff and place them in your preferred email client to polish off and send to Launchpad. The lpreview_body plugin will pre-populate the message body with our standard template, plus lint output. The body of your message will be used as the initial comment of the merge proposal.

== Claws ==

The default mail client support via xdg-utils should be used at present, because Bazaar's direct support for Claws will not work with the lpreview_body plugin. It is a known issue that xdg-utils causes a modal dialog box to confirm that a file has been attached.


= Frequently Asked Questions =

'''Question:''' How do I specify revisions to generate the diff from?

'''Answer:'''When doing bzr submit, you may want to only generate a diff from a range of revisions. You can use -r parameter to specify the range, as below:

{{{
bzr send -r 1234..1239
}}}

This will generate a diff from revno 1234 to 1239.


'''Question:''' Does this work with looms?

'''Answer:''' Launchpad's Loom support needs some work, and this doesn't make it better or worse. However, you can specify a diff between threads by doing

{{{
bzr send -r thread:..-1
}}}


'''Question:''' Does this handle dependent branches?

'''Answer:''' No. bzr send's model is that you propose merging a particular change, so dependent branches are incompatible with that model. We do expect to resurrect the feature at some point, but it will only work in the web UI.


'''Question:''' Can I download the diff from the merge proposal in the web UI?

'''Answer:''' Not yet, but this is a planned feature. However, if you receive an email about the merge proposal being created, it will include the diff as an attachment.


'''Question:''' What URLs are recognized by bzr send?

'''Answer:''' lp:, bzr+ssh:, sftp: and http: are all recognized. Remote URLs for Remote Branches and Mirrored Branches will work. Decorated versions, such as nosmart+bzr+ssh: will not work.

'''Question:''' How does lpreview_body decide whether to provide a body?

'''Answer:''' The target branch must match this regex: {{{bzr\+ssh://bazaar.launchpad.net/~launchpad-pqm/launchpad/(db-)?devel}}}


'''Question:''' Can I submit a branch that is not hosted on Launchpad?

'''Answer:''' Yes. Launchpad will create a !RemoteBranch for the source branch if the source is not represented on Launchpad. However, the target branch must be known to Launchpad.

'''Question:''' Should I use the --no-patch option to bzr send?

'''Answer:''' No. Launchpad uses that patch verbatim. If it's not present, LP cannot show a diff.


'''Question:''' What if I want to use my editor, like review-submit did?

'''Answer:''' You can configure Bazaar to use the "editor" mail client.

'''Question:''' Will we be reinstating the lpreview plugin using the bzr send stuff?

'''Answer:''' No. the lpreview-body plugin is a replacement for that functionality.


= Intrepid client configuration =
Line 40: Line 114:

== Claws ==

Direct support for Claws is present in bzr 1.11. If you're using an older
version of Bazaar though, you can use the following plugin. Bazaar's support for Claws is via xdg-utils, which is broken in Intrepid (see above). However, this plugin will provide that support.

{{{
cd ~/.bazaar/plugins
bzr branch lp:~allenap/+junk/bzr-claws claws
}}}

Don't forget to set `mail_client = claws` too.

This also fixes a small annoyance when using xdg-utils with Claws. If you ask xdg-email to attach a file to the email, Claws will pop up a modal dialog box to confirm that a file has indeed been attached. Again, this doesn't happen with Bazaar 1.11.


= Creating a New Merge Proposal =

Once your environment is set up, bzr send is as easy as

{{{
bzr push; bzr lpsend
}}}

This will create a merge proposal and a diff and place them in your preferred email client to polish off and send to Launchpad. The body of your message will be used as the initial comment.

This example uses the lpsend alias, to ensure you specify --no-bundle. If you forget to supply --no-bundle, bzr send will not verify that your public branch is up-to-date. (Bundle support for Launchpad is coming soon.)


= Frequently Asked Questions =

'''Question:''' How do I specify revisions to generate the diff from?

'''Answer:'''When doing bzr submit, you may want to only generate a diff from a range of revisions. You can use -r parameter to specify the range, as below:

{{{
bzr lpsend -r 1234..1239
}}}

This will generate a diff from revno 1234 to 1239.


'''Question:''' Does this work with looms?

'''Answer:''' Launchpad's Loom support needs some work, and this doesn't make it better or worse. However, you can specify a diff between threads by doing

{{{
bzr lpsend -r thread:..-1
}}}


'''Question:''' Does this handle dependent branches?

'''Answer:''' No, dependent branches are not currently supported for merge proposals. We do expect to resurrect the feature at some point, but it was much faster to start with the simple case.


'''Question:''' Can I download the diff from the merge proposal in the web UI?

'''Answer:''' Not yet, but this is a planned feature. However, if you receive an email about the merge proposal being created, it will include the diff as an attachment.


'''Question:''' What URLs are recognized?

'''Answer:''' lp:, bzr+ssh:, sftp: and http: are all recognized. Remote URLs for Remote Branches and Mirrored Branches will work. Decorated versions, such as nosmart+bzr+ssh: will not work.


'''Question:''' Can I submit a branch that is not hosted on Launchpad?

'''Answer:''' Yes. Launchpad will create !RemoteBranch for the source branch if the source is not represented on Launchpad. However, the target branch must be known to Launchpad.

'''Question:''' Should I use the --no-patch option to bzr send?

'''Answer:''' No. Launchpad uses that patch verbatim. If it's not present, LP cannot show a diff.


'''Question:''' What if I want to use my editor, like review-submit did?

'''Answer:''' You can configure Bazaar to use the "editor" mail client.

'''Question:''' Creating a new merge proposal via the web no longer creates multiple emails. Why does creating a new merge proposal via {{{bzr send}}} create multiple emails?

'''Answer:''' The API for sending a single email is not quite in sync with merge-proposal-by-email's needs. This is coming soon.

'''Question:''' Will we be reinstating the lpreview plugin using the bzr send stuff?

'''Answer:''' Ideally we will be adding the lpreview functionality to bzr send instead. That way, LP uses standardized functionality and our efforts on improving code review help others.

As of Launchpad 2.1.12, Launchpad now supports creating merge proposals using bzr send.

One-time set-up

Please make sure you have your public and submit branches set properly. Below is an example ~/.bazaar/locations.conf

[/home/rockstar/Projects/launchpad/]
submit_branch = /home/rockstar/Projects/launchpad/trunk
push_location = bzr+ssh://bazaar.launchpad.net/~rockstar/launchpad/
push_location:policy = appendpath
public_branch = bzr+ssh://bazaar.launchpad.net/~rockstar/launchpad/
public_branch:policy = appendpath
submit_to = merge@code.launchpad.net


[/home/rockstar/Projects/launchpad/trunk]
public_branch = bzr+ssh://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel

Please ensure the lpreview_body plugin is installed:

bzr branch lp:~launchpad/lpreview-body/trunk/ ~/.bazaar/plugins/lpreview_body

Creating a New Merge Proposal

Once your environment is set up, bzr send is as easy as

bzr send

This will create a merge proposal and a diff and place them in your preferred email client to polish off and send to Launchpad. The lpreview_body plugin will pre-populate the message body with our standard template, plus lint output. The body of your message will be used as the initial comment of the merge proposal.

Claws

The default mail client support via xdg-utils should be used at present, because Bazaar's direct support for Claws will not work with the lpreview_body plugin. It is a known issue that xdg-utils causes a modal dialog box to confirm that a file has been attached.

Frequently Asked Questions

Question: How do I specify revisions to generate the diff from?

Answer:When doing bzr submit, you may want to only generate a diff from a range of revisions. You can use -r parameter to specify the range, as below:

bzr send -r 1234..1239

This will generate a diff from revno 1234 to 1239.

Question: Does this work with looms?

Answer: Launchpad's Loom support needs some work, and this doesn't make it better or worse. However, you can specify a diff between threads by doing

bzr send -r thread:..-1

Question: Does this handle dependent branches?

Answer: No. bzr send's model is that you propose merging a particular change, so dependent branches are incompatible with that model. We do expect to resurrect the feature at some point, but it will only work in the web UI.

Question: Can I download the diff from the merge proposal in the web UI?

Answer: Not yet, but this is a planned feature. However, if you receive an email about the merge proposal being created, it will include the diff as an attachment.

Question: What URLs are recognized by bzr send?

Answer: lp:, bzr+ssh:, sftp: and http: are all recognized. Remote URLs for Remote Branches and Mirrored Branches will work. Decorated versions, such as nosmart+bzr+ssh: will not work.

Question: How does lpreview_body decide whether to provide a body?

Answer: The target branch must match this regex: bzr\+ssh://bazaar.launchpad.net/~launchpad-pqm/launchpad/(db-)?devel

Question: Can I submit a branch that is not hosted on Launchpad?

Answer: Yes. Launchpad will create a RemoteBranch for the source branch if the source is not represented on Launchpad. However, the target branch must be known to Launchpad.

Question: Should I use the --no-patch option to bzr send?

Answer: No. Launchpad uses that patch verbatim. If it's not present, LP cannot show a diff.

Question: What if I want to use my editor, like review-submit did?

Answer: You can configure Bazaar to use the "editor" mail client.

Question: Will we be reinstating the lpreview plugin using the bzr send stuff?

Answer: No. the lpreview-body plugin is a replacement for that functionality.

Intrepid client configuration

Due to bug #291847, it is necessary to specify your mail client on Intrepid. Possible values include: evolution, kmail, thunderbird, emacsclient, mutt, claws

If your client is not supported, you can use "editor".

e.g.

[DEFAULT]
mail_client = thunderbird

Code/BzrSend (last edited 2011-07-15 13:23:18 by bac)