Here's a list of graphical Bazaar clients that Mixxx developers have tested:
bzr branch lp:mixxx for trunk or bzr branch lp:mixxx/1.8 for the 1.8 release branch. This copies the code to your local system. (Be patient as the Mixxx code base is fairly large and older versions of bzr sometimes have difficulty reporting progress.)bzr commit -m 'log message' which will “commit” the changes to your local store, allowing you to review or revert later.bzr pull. If that gives you errors, (and it likely will if changes have been made to both) use bzr merge instead, since you're technically “merging” the parent repository with your local one.bzr push lp:~<your-lp-name>/mixxx/<your-branch-name> which actually copies your local store to your personal LP-hosted branch.If you have push/commit permissions on Launchpad and you are using distributed mode (i.e. branches), do not push from your local branch. Because of the way that Launchpad represents branch history, this will cause the history view to bunch commits by others into single commits by you from when you merge changes from upstream. The proper way to work in this mode is to maintain two branches, a features branch, and a clean branch. The following example will use the Mixxx 1.8 release branch as an example.
bzr branch lp:mixxx/1.8 ./mixxx-1.8bzr branch ./mixxx-1.8 ./mixxx-1.8-featuresmixxx-1.8 folder): bzr pull, bzr merge ../mixxx-1.8-features. Now your branch is merged with the latest upstream changes, but it isn't committed yet. Resolve conflicts, compile Mixxx, run the test suite, and make sure that the feature and the upstream changes work well together.bzr commit –fixes lp:XXXXXX. The commit message you enter here will be what the rest of the developers see. They will only see this message, the commit messages you made in your features branch will not be immediately available unless they drill-down into the merge on the history view. If you provide a –fixes argument to commit, then this will attach the launchpad bug #XXXXXX to the branch you commit to (mixxx-1.8 in this case). bzr push
Your clean branch will represent the clean state of the remote Mixxx codebase once you bzr pull, but your features branch will never update unless you do it manually. To bring your features branch up to date:
bzr shelve, if you do not have it then you need to install bzrtools. bzr shelve is similar to git stash. mixxx-1.8 folder): bzr pullmixxx-1.8-features folder): bzr merge ../mixxx-1.8bzr commit. You usually will provide a commit message with something along the lines of Merging changes from upstream. This commit message will not show up when you push your changes to Launchpad using the guide above, since bzr will realize that the merge was applying patches that were already applied to the remote branch. (For those of us scared of this “distributed” thing…)
bzr checkout lp:mixxx for trunk or bzr checkout lp:mixxx/1.8 for the 1.8 release branch. (Be patient as the Mixxx code base is fairly large and older versions of bzr sometimes have difficulty reporting progress.)bzr updatebzr diff > mychanges.patch and attach it to a bug at Launchpad.bzr commit -m “Log message” (You'll need to register an SSH key first under your personal LP page: https://launchpad.net/people/+me/+editsshkeys.)Mixxx has a CIA bot in our freenode channel that will dutifully announce any commits to the codebase. To make this work for you, do the following:
cia-clients package, or manually install the plugin from the Launchpad project pagebzr cia-project MixxxThat's it. The next time you push/commit code from this branch/checkout, CIA will be notified.
If when trying to pull/checkout a shared branch, you get an error like
bzr: ERROR: Connection closed: Unexpected end of message. Please check connectivity and permissions, and report a bug if problems persist.
then you need to either:
launchpad_username lineIf when trying to push/commit to a shared branch, you get an error like
bzr: ERROR: Cannot lock LockDir(http://bazaar.launchpad.net/~mixxxdevelopers/mixxx/.bzr/branch/lock): Transport operation not possible: http does not support mkdir()
then you need to do the folllowing:
bzr launchpad-login <your lp username>bzr bind bzr+ssh://<your lp username>@bazaar.launchpad.net/~mixxxdevelopers/mixxx/<branch name>
Note that I (bkgood, ping me if you have issues) have no idea if any of this works in “centralized” mode, I like branches
Each mixxx branch can take (and transfer) something like 80MB for history. As most of that is common throughout all your mixxx branches, bazaar can share the common history throughout your branches, with a shared repository. Follow the directions (see "Shared Repository Example") to learn more. For example, I have a repository at ~/src/mixxx and then have my branches (trunk, 1.9, …) under that. There's a large (79MB) .bzr directory in the repository directory, and then each branch under it has a .bzr directory in the .5-2MB range, so the payoff is quite significant versus 79MB for each branch.
Note that branch directories will still be huge when built because of the massive amount of space the object files take.