This repository mirrors the official Emacs CVS repository for testing purposes. If you are interested in experimenting with the Emacs source code base in Bazaar, then this is the right place.
This service has only been tested with version 1.2 of Bazaar, but it should work with version 1.0. It might work with older versions, but I wouldn't recommend testing older versions of Bazaar as they aren't particularly representative of how well Bazaar works. Bazaar has changed quite a bit in a fairly short period and there is little point in testing old versions.
For simplicity's sake and to follow normal Bazaar conventions I have linked branches/HEAD to trunk. So whenever the instructions below feature trunk/ you can safely replace it with branches/HEAD/ if that seems clearer to you.
Assuming you have Bazaar installed you can check out the trunk with the command:
bzr clone http://bzr.notengoamigos.org/emacs/trunk/
This server also is running a bzr smart server. However, using the smart server actually takes longer if you are cloning an entire branch. The smart server is available via:
bzr clone bzr://bzr.notengoamigos.org/emacs/trunk/
Unless you are interested in seeing how long it takes to clone a branch directly it is possible that you might be better served by downloading a premade repository. These premade repositories are fairly large (over 250M for the lzma compressed version), but for most people they should speed up the process of getting a working Emacs Bazaar repository significantly. Basically I created a shared repository with the bzr init-repository emacs command and I then checked out the trunk branch into this repository. I also created directories for other branches and tags. You can download a tarball of the resulting repository at the following links.
These repositories are not up to date, but it has the bulk of the change sets so that you can get a feel for how long a bzr pull might take. Also to save space I have done a bzr remove-tree on the trunk/. If you want to see the files enter this directory and do a bzr checkout.
I am currently working on getting repository browsing turned on. Hopefully that will be sorted out soon. In the meantime you can see which branches and tags are available.
This repository currently gets updated once an hour starting on the 10.
If you have any questions or comments I can be reached at jearl at notengoamigos dot org.
You can find Bazaar's comprehensive documentation here. However, for those of you that just want to get started playing with Bazaar here's a quickstart guide to using this repository.
OK, I've been watching my server logs for a bit now, and one thing has become pretty clear. Lots of you are checking out the trunk, and almost none of you are downloading the premade repository. Quite frankly, I think that you are missing a lot of the fun. The reason for getting the repository is simple. It allows you to easily play with more than one branch. With a codebase the size of Emacs you really need to take advantage of Bazaar's repository support. Working with branches in a repository allows Bazaar to share revisions between branches. This is a big deal if you want to do a little Emacs hacking yourself, of if you want to compare existing branches. Because repositories are so important, I am going to outline how you can make one yourself. It's easy and fun.
The easiest way to get a shared repository is to simply use the repository that I have already made.
$ wget http://bzr.notengoamigos.org/emacs.tar.gz
$ tar xzf emacs.tar.gz
Alternatively you can use the fancy lzma compressed archive
$ wget http://bzr.notengoamigos.org/emacs.tar.lzma
$ unlzma emacs.tar.lzma
$ tar xf emacs.tar
For those of you with more of a do-it-yourself-bent you can create your own shared repository. Be warned, however, the update process might very well move pack files you need while you are in the middle of an update.
# Make a repo
$ bzr init-repo emacs
# seed repo with a branch
$ cd emacs
$ bzr clone http://bzr.notengoamigos.org/emacs/trunk trunk
A shared repository allows Bazaar to share revisions between branches. This saves space and reduces the amount of data that needs to be transferred over the network when getting new branches.
Now that you have a shared repository let's take advantage of it. The most basic use of a shared repository is to create a branch of your own. Where you put the branch and what you call it is up to you (as long as it is inside the repository). In this example we'll follow convention and create our branch in the "branches" directory. If you aren't using the premade repository you can create a branches directory just like you would expect (mkdir branches). Now let's make a "sandbox" branch that is a copy of the trunk.
$ cd branches
$ bzr clone ../trunk sandbox
That should complete fairly rapidly and if you cd into that directory you should find a copy of the trunk. You can use this to build a copy of Emacs for testing, or you can use it to design your own cool new feature.
It is important to note that while you could have used the existing trunk directory for hacking you probably shouldn't. You want to leave that directory pristine so that you can use it to track upstream changes.
Creating your own branch is neat and all, but it doesn't really show the utility of a shared repository. To really show how a shared repository can be useful you need to track another of the active branches (besides the trunk). For example, let's say you wanted to test out the multi-tty branch. You could do this with the following commands
$ cd branches
$ bzr clone http://bzr.notengoamigos.org/emacs/branches/multi-tty/ multi-tty
Because this branch shares quite a few change sets with the trunk this clone will take considerably less time than when you cloned the trunk.
As I said before nearly everyone that has tried out the Emacs Bazaar repository checked out the trunk (probably into a standalone branch) instead of downloading the shared repository. That's fine we can fix it. Let's suppose that you just cut and pasted the bzr command from the top of this page and now you have a standalone branch named "trunk" in the root of your home directory. Here's how you would use that branch to seed a repository named "emacs-repo"
# Create a repository
$ bzr init-repo emacs-repo
# seed the repository with the standalone branch
$ cd emacs-repo
$ bzr clone ../trunk trunk
# Get the latest changes
$ cd trunk
$ bzr pull --remember http://bzr.notengoamigos.org/emacs/trunk/
# Finally get rid of the standalone branch
$ cd ~/
$ rm -rf trunk/
This tutorial only goes over the basics of creating a repository. For more information you really should check out bazaar-vcs.org.