The Bazaar-NG repository site has a section for "unofficial" branches. These are bzr branches that are not officially sanctioned by the FSG, and are typically owned by individual users. Only the branch owner can merge into a user branch; in particular, the Bazaar-NG Patch Queue Manager is forbidden from merging them. (Of course, PQM can be used to merge from a user branch into an official branch.)
Only users with shell access to webservices may publish an unofficial branch on the FSG repository site.
Unofficial branches live in /srv/www/bzr/unofficial on webservices. All shell users should be able to create a directory there, and copy their branch into that directory. After this, one should be able to "bzr branch http://bzr.freestandards.org/unofficial/my-branch".
To get the project to work with bzr-webserve, edit the configuration file (/srv/www/bzr/unofficial/bazaar-webserve-dir.config). Add a section for your project at the end of the file. It will look like this:
[my-project-dir] author = John Doe email = firstname.lastname@example.org description = Short one-line description name = my-project-dir path = my-project-dir
If you prefer to publish as a separate step, you can create a local branch, and rsync that when you feel like it:
bzr branch http://bzr.freestandards.org/unofficial/foo cd foo (make changes) bzr commit rsync -avv * email@example.com:/srv/www/bzr/unofficial/foo (...)
If not, you can create a bound branch instead:
bzr checkout sftp://firstname.lastname@example.org/srv/www/bzr/unofficial/foo cd foo (make changes) bzr commit (...)
Notice that the checkout uses an sftp: URL instead of a http: URL. This is required because HTTP is (for now) a read-only protocol for branching. For sftp: URLs to work, remember that you need to install the paramiko Python module.
You can hide a user branch by removing its entry in bazaar-webserve-dir.config. It will not show up on the list of unofficial projects, but can still be branched, pulled, etc. with the original URL.
To remove a branch completely, first hide it, then delete its directory from webservices.