[tahoe-dev] GNU Bazaar on Tahoe
Nils Durner
ndurner at googlemail.com
Thu Jul 23 17:04:04 PDT 2009
Hi,
the current development branch (> 1.17; revision 4559) of GNU Bazaar
(http://bazaar-vcs.org) supports Tahoe LAFS as storage backend.
Here's how to set it up:
1. Install GNU Bazaar > 1.17:
bzr checkout lp:bzr; cd bzr; python setup.py install
2. Enable Tahoe's FTP frontend as described in
docs/frontends/FTP-and-SFTP.txt.
3. Create a new Bazaar repository (optional):
bzr init-repo --1.9 --no-trees ftp://user@localhost:8021/
4. Create a new branch:
bzr init ftp://user@localhost:8021/my_branch
5. Checkout:
bzr checkout ftp://user@localhost:8021/my_branch
6. Add files
cd my_branch; touch testfile; bzr add testfile
7. Commit:
bzr commit -m start
Common problems:
* bzr fails with "bzr: ERROR: exceptions.UnicodeDecodeError: 'ascii'
codec can't decode byte 0xe4 in position 5: ordinal not in range(128)"
Bazaar tries to determine the local user name if it is not part of
the FTP URL. If the name contains special characters like umlauts,
bzr fails with this error message. Solution: specify the FTP login
as part of the URL: ftp://username@host
* Large pushes (uploads of several revisions) are very slow, bzr
warns that "FTP server does not support file appending natively.
Performance may be severely degraded! (502 Command 'APPE' not
implemented)"
Due to the limited command set of the Twisted FTP server, file
appends have to be done on the client side. This means that the
current write group is downloaded and reuploaded (with the next
revision appended) for each revision in the current push. You can
probably work around this problem by preparing a suitable branch
locally and uploading it using an ordinary FTP tool.
* bzr warning: "FTP Could not set permissions to 0700 on
/my_branch/.bzr. 502 Command 'SITE' not implemented"
File permissions are not preserved, but that doesn't really matter.
* Ineffective file locking
Protection against concurrent writes is achieved through lock
files, which does not work reliably with Tahoe AFAIK. Bigger teams
with a shared branch should probably therefore employ an automatic
gatekeeper
(http://bazaar-vcs.org/Workflows#Decentralized%20with%20automatic%20gatekeeper)
Benefits:
* "SCM in the cloud"
o central repository without a central server
o inherent backup
* secure storage
o only team members have access to the files (IT staff doesn't)
* granting read-only access is easily possible (via read caps)
* (non-bzr) access possible via all available Tahoe frontends: HTTP,
S/FTP, CLI, ...
Regards,
Nils
More information about the tahoe-dev
mailing list