[MERGE] Branch format 6

Aaron Bentley aaron.bentley at utoronto.ca
Sun Feb 11 21:18:28 GMT 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

This patch introduces format 6

Format
######

Format 6 differs from the current format 5 in two ways:

1. It stores only the last revision, not the entire revision history
2. It stores all policy data in the branch config file
  - parent location
  - bound location
  - push location

This format is compatible with knit (and possibly metaweave) format
repositories, but it is not compatible with old clients.

Performance
###########

Because they don't store revision history, format 6 branches are much
smaller than format 5 branches.  bzr.dev's branch shrinks from 144k to
20K on ext3 (space used, not apparent size).

It is currently slower than format 5 for at least some operations.  It
could potentially outperform format 5, but more optimization is required
to meet that potential.

Features
########

Format 6 introduces two features that require a new branch format.

Strict history
==============
When a branch has a strict history policy, you can only append to it;
you cannot change the previous history.  This keeps revnos stable and
maintains a consistent view of history.  Strict history can be enabled
by setting "strict_history=True" in .bzr/branch/branch.conf

Rebind
======
When a branch is unbound, the "bound" config value is set to "False",
instead of clearing the "bound_location" value.  If "bind" is issued
with no arguments, the previous bound location is used.

This is consistent with merge, pull, push, etc, which all remember
previously-used locations.

It means that if you have a heavyweight checkout but no access to the
master branch, you can "unbind", do a series of commits (without
- --local) and finally bind when the branch becomes available again.

Defaults
########
I propose retaining "knit" as the default repository format, because of
performance issues, and to avoid watersheds.

I do believe that the disk format is unlikely to change, and getting it
merged now will mean it will be broadly supported when it becomes the
default.

Aaron
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFz4gk0F+nu1YWqI0RAgsIAJ9ZdV+KOUfovX0ON7gd6TjAopxLMwCePwnJ
v+bWXSWEjGyMC8cq3j+46ks=
=gIEH
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: branch6.patch
Type: text/x-patch
Size: 62241 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070211/370888d4/attachment-0001.bin 


More information about the bazaar mailing list