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/