Guide to bazaar

So you'd like to put your stubby fingers in our shiny code eh? Well no problem, just follow the guide!

Wow, bazaar is Wonderland!
          -- Ingelec
What's that ?
          -- edhelas

Starting to work

Basics

First off, you'll want to branch our trunk branch (that's where our main code lives).

bzr branch http://bzr.ath.cx/movim/trunk/

And of course, from time to time, you'll want to update your code:

bzr pull

Actually working

Gosh, you just had a great idea! You're going to add the XXX stuff to Movim! That'll make it an absolutely awesome project. Mmmh, but where to start?

Well, first off, you'll want to fork our next branch and code your feature (xxx) in your new branch. Our way is to always work in forked branches so as to always keep things clean and tidy.

Remote branch

If you're working on a remote branch (e.g. from a bazaar repository on some server), no problem, bazaar makes it real easy for you. First make your local branch, and then push it onto your shared repository:

bzr branch http://bzr.ath.cx/movim/next xxx
cd xxx
bzr push --remember <repo's url>/xxx

Note the –remember bit. This specifies that bazaar will remember this location as your default push location. From now on, you'll only need to do:

bzr push

Local branch

If you're working locally, just make a local branch:

bzr branch http://bzr.ath.cx/movim/next xxx
cd xxx
//Hack hack hack...//

Submitting changes

Ah, so now you've finished working on XXX and you'd like us to integrate it in Movim? No problem, contact our team and let a maintainer know of your branch. They'll test it and eventually merge it in the next branch of the repository.

Remote branch

If you work on a remote branch (e.g. on gitorious), or on a repo that's online, just let us know your repo's URL and the branch's name.

For maintainers

If you're a maintainer (yeah, they got memory issues too), then proceed as follows:

bzr branch http://bzr.ath.cx/movim/next
bzr branch <contributor's branch>/xxx
cd xxx
!!!! Check the code!!!!

cd ../next
bzr merge ../xxx/
!!!! Solve conflicts and check again !!!!
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/next/

Local branches

If you're working locally, you'll have to send us a patch, either on our mailing list or on the bug tracker.

bzr send -o xxx.patch

For maintainers

To apply the patch, proceed as follows:

bzr patch xxx.patch

Patches

Oh, so you've found a bug? How unexpected. Now of course, you'll want to patch it, as a good contributor.

First off, check if the bug also exists on maint and trunk. If it does, choose the oldest branch where the bug exists.

Then fix the bug, and contact our team to let them know.

For maintainers

Patches must always be cross-checked by two maintainers.

Let's use the worst case scenario: maint was patched. Then the patch must be applied to maint and propagated up to trunk and next.

bzr branch http://bzr.ath.cx/movim/maint
bzr branch http://bzr.ath.cx/movim/trunk
bzr branch http://bzr.ath.cx/movim/next
bzr branch <pathed-branch>/xxx

# Merging the patch into maint
cd maint
bzr merge ../xxx/
!!!! Check !!!!
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/maint/

# Merging up into trunk and then next
cd ../trunk
bzr merge ../maint
!!!! Check !!!!
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/trunk/

cd ../next
bzr merge ../trunk
!!!! Check !!!!
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/next/

Graduation to master

When the next branch is judged mature enough, it needs to be merged into master. Next must be approved by at least two maintainers to graduate.

bzr branch http://bzr.ath.cx/movim/trunk
bzr branch http://bzr.ath.cx/movim/next
cd trunk
bzr merge ../next/
!!!! Check !!!!
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/trunk/

Release

Once all's well, the project is released. The branch needs to be approved by all core developers along with its documentation to be released.

Main release

This is a merge of trunk into maint and a tagging of the release.

bzr branch http://bzr.ath.cx/movim/trunk
bzr branch http://bzr.ath.cx/movim/maint
cd maint/
bzr merge ../trunk/
!!!! Check !!!!
bzr tag vX.X.X
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/maint/

Maintenance release

If the procedure was followed, then maint was patched and the patch propagated to trunk and next. Then a simple tagging of maint suffices.

bzr branch http://bzr.ath.cx/movim/maint
cd maint/
bzr tag vX.X.X
bzr push bzr+ssh://bzr@bzr.ath.cx/movim/maint/

In Other Languages
Translations of this page: