thoughts on repository/storage/branch/checkout

Aaron Bentley aaron.bentley at utoronto.ca
Thu Feb 2 14:20:10 GMT 2006


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

Denys Duchier wrote:
> Aaron Bentley <aaron.bentley at utoronto.ca> writes:
> 
> 
>>We do not consider the workdir to be separable from the checkout.
> 
> 
> I know, and I am proposing that it should be.

Yes.  I think I misunderstood the purpose of your email.  I thought you
were trying to recap our proposal, not make a similar alternative proposal.

> This is more uniform and makes it
> possible e.g. for several checkouts to have their worktrees reside at the same
> place (convenient for a practical case which I have described several times).

Concepts are almost infinitely divisible, so it's a matter of taste
where you draw the line.  I do think it's advisable to be conservative
in the number of concepts we use, because every concept increases the
learning curve for new users.

>>|     - B is local
>>|     - B is dislocated
>>|     - B is inherited
>>
>>We do not consider these to be fundamentals.
> 
> 
> I am suggesting that these _are_ the underlying notions as already evidenced in
> the proposed concepts "standalone branch", "light branch", and "repo branch".
> Some of the possiblities I describe are not currently exercised, but I am here
> trying to uncover the underlying regularities.

I am stating that "B is local" and "B is dislocated" are variations on
"the branch is in a specified location", which is the actual fundamental
concept.  I am also stating that we do not have a concept of
"inherited".  That is a new concept that you are introducing.

>>|     - the store is inherited (REPO BRANCH?)
>>
>>The main differences between a REPO BRANCH and a LIGHT BRANCH are:
>>1. the REPO BRANCH is in a subdirectory of the REPO directory
>>2. the REPO BRANCH has no CHECKOUT.
> 
> 
> I understand this.

The point I was making is that "inheritance" doesn't play into it.

>  In the typology that I am proposing here a branch never
> _has_ a checkout as such.

Yes, the concept of a line of development, or even its pysical
representation as a revision-history, does not imply a checkout.

Terms such as REPOSITORY BRANCH and LIGHT BRANCH refer to the compound
objects (or not-so-compound, in the case of REPOSITORY BRANCHES).  That
is, all these are terms for combinations and configurations of the
physical branch,

For example, the only observable difference between a STANDALONE BRANCH
(repo+branch+checkout) and a REPOSITORY BRANCH in the root of the
repository is that the REPOSITORY BRANCH has no checkout.

>>There is no inheritance, per se; the full path to the repository is
>>specified in its branches.
> 
> 
>>From what I understood, the proposed structure in a repo is supposed to be
> something like this:
> 
> $REPO/
>     README
>     .bzr/
>         repository/
>             repository-format
>             inventory.weave
>             revision-store/
>             weaves/
>     foo-branch/
>         .bzr/
>             branch/
>                 revision-history
>                 branch-name
>     baz-branch/
>         .bzr/
>             branch/
>                 revision-history
>                 branch-name
> 
> where repo branches foo-branch and baz-branch use the repo/.bzr/repository for
> their storage.  I call this relationship "inheritance": the store' comes from
> the enclosing repo; it is not "local" to the repo branch and a "dislocated"
> store' is not explicitly specified in foo-branch/.bzr/branch/store-location as
> it could be in my proposal.

In our proposal, repository branches specify the exact locations of
their stores via a '.bzr/branch/store-location' or something.

>>Operations on the checkout, e.g. add, commit, imply that there is only
>>one checkout per workdir.  It may be theoretically possible to split
>>them, but I believe that the result would only be confusion.
> 
> 
> re: confusion: I don't think so: you perform these operations in (and on) the
> checkout, not in the workdir.

These appear to be operations on files, not on checkout-relative paths.
 I hold that it *would* be confusing to do 'bzr add foo' when foo does
not exist in the cwd.

> to the checkout' in order to perform vcs operations.  Such a configuration would
> admitedly be infrequent, but it is one which would be quite convenient for me in
> some cases.

I do not think adding a concept to support your infrequent use is a good
tradeoff for a system that wants to be easy to learn.

> I wasn't sure how to call the "light branch" concept as, in going back
> through the mailing list archives, I had only managed to find it (more or less)
> under the name "light bound branch".

This is because unbound light branches seem like a bad idea, so we had
no need to name them.

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

iD8DBQFD4hUZ0F+nu1YWqI0RAoIQAJwOHKFCyaC5OvRHvGUd/Css2PZ27QCfWE+H
IzALYPQ+2LyOMcLl/CliOcs=
=R8k4
-----END PGP SIGNATURE-----




More information about the bazaar mailing list