Bazaar-NG is slightly different than CVS. With Bazaar-NG, you don't neccesarily need to synchronize with a central repository over the network to have revision control over code. Instead, any directory may contain a working "branch" of a project. However, we provide a central shared repository on interreality.org to contain the "official" main VOS branch.
This page will explain how to use Bazaar-NG (often called simply "bzr") to VOS developers who have been given an account to write to this main branch.
Downloading
For downloading from the VOS repository you should use Bazaar-NG version >= 0.12 because the newer versions of Bazaar-NG are significantly faster. However, any version >= 0.8.3 will work with the VOS repository.
You can download Bazaar-NG from here: http://bazaar-vcs.org/OfficialDownloads
If you are using the 'unstable' distribution of Debian GNU/Linux, install the 'bzr', 'bzrtools', and 'python-paramiko' packages:
$ sudo apt-get install bzr bzrtools python-paramiko
'python-paramiko' and its dependent package "python-crypto" contain the modules that lets bzr use secure shell, which is how data is uploaded to the interreality.org branch when you commit your modifications.
In general, your installation of bzr must support sftp for write-access (read only access is available via HTTP). This may require installing the paramiko Python packages in addition to bzr etc.
Check out VOS
Testing Release "0.24-dev" - The S4 Design
If you want to make use of the VOS codebase right now to learn about it and create any useful applications then download this "0.24-dev" branch of the code.
If you are a developer who has an account at interreality.org, use SFTP to "checkout" repository ("checkout" creates a "bound" branch so commits get checked back in to the main repository):
$ bzr checkout sftp://interreality.org/home/bzroot/vos
If you do not have an account, you can use HTTP to make a "read-only" branch of the main repository:
$ bzr branch http://interreality.org/bzroot/vos
This will download lots of data about past VOS revisions, and may take a long time. A new directory named "vos" will be created.
Basics
Now go into the directory
$ cd vos
Get latest changes from upstream:
$ bzr update
Add new files:
$ bzr add
Add a directory
$ bzr mkdir
Move/rename a file:
$ bzr mv
Make a file unversioned (does not delete it)
$ bzr remove
Commit your changes:
$ bzr commit
If you made a "checkout", this will commit changes to the parent (upstream) branch as well as local version information. If you just used "branch" to make a simple branch, this will save changes only in the local version history.
To make a patch against the parent (upstream) branch:
$ bzr diff
To delete a file, just delete it, and then use "commit". It will automatically note that the file is gone and make it be deleted in the version history.
More interesting stuff
The main advantage of bzr is that it allows for easy local branching. This allows you do work in your own tree with have version control, then merge your changes in later.
$ bzr branch vos my-vos
'my-vos' will become a branch off of 'vos' (for example, maybe 'vos' is your checkout from interreality.org, and you want to do some hacking on 'my-vos' and have local revision information saved for those changes without having to check in to the upstream repository; or you are working on several features that you want to keep in seperate branches off of 'vos'.)
If you are going to have several branches, you can put them all in a directory marked as a "shared" repository. When you create a new branch within a shared repository, the new branch is not a full copy of its parent branch, which saves copying time and disk space. See http://bazaar-vcs.org/SharedRepositoryTutorial.
When you did a checkout above, you really just made a branch, except that your local branch is "bound" to the parent interreality.org repository. Any time you commit or merge into a bound branch, bzr first makes those changes to its parent branch. You can unbind a branch with "bzr unbind". Or, if you make a local branch that you want bound (for some reason) to your checkout, you can mark it bound with "bzr bind".
Use "bzr diff" to see or make patches against a branches parent branch.
More info
For an introduction to using Bazzar-ng, see http://bazaar-vcs.org/IntroductionToBzr. For the full Bzr documentation, see http://bazaar-vcs.org/Documentation.
