~/bzrtest $ bzr init-repo --no-trees repository
~/bzrtest $ bzr init repository/dev
~/bzrtest $ bzr checkout --lightweight repository/dev/
~/bzrtest $ cd dev
~/bzrtest/dev $ touch one
~/bzrtest/dev $ bzr add one
added one
~/bzrtest/dev $ bzr ci -m 'added one'
added one
Committed revision 1.
~/bzrtest/dev $ cd ../repository/dev/
~/bzrtest/repository/dev $ bzr push ../../imagine_this_is_a_remote_server
Created new branch.
~/bzrtest/repository/dev $ bzr bind ../../imagine_this_is_a_remote_server/
# at this point, the situation is this:
# ./repository -- a --no-trees repository
# ./repository/dev -- a branch in that repo
# ./dev -- a lightweight checkout of ./repository/dev
# ./imagine_this_is_a_remote_server -- a mirror of the dev branch.
# ./repository/dev is bound to this. My understanding is that this is
# identical to ./repository/dev being a "checkout" of
# ./imagine_this_is_a_remote_server; the only difference being the way it was
# created.
# now, let's see what info will tell us. First, ./repository/dev. What's odd
# about this output is that it doesn't say that it is bound to
# imagine_this_is_a_remote_server.
~/bzrtest/repository/dev $ bzr info
Repository bound branch (format: dirstate or knit)
Location:
shared repository: file:///Users/pfrost/bzrtest/repository/
repository branch: dev
Related branches:
publish to branch: file:///Users/pfrost/bzrtest/imagine_this_is_a_remote_server/
# next, ./dev, the leightweight checkout. What's odd here is that it *does* say
# that ./dev is a checkout of ./imagine_this_is_a_remote_server, but it's not!
# It's a checkout of ./repository/dev/ in my mind.
#
# I think the issue here may be overloading definitions of the word "checkout".
# From what I gather in IRC, there are two types of relationships involved.
# One, a working directory is always associated to exactly one branch. Two, a
# branch may be "bound" with "bzr bind" to another branch, the semantics being
# that any commits to one branch are applied to the other branch.
#
# A confusing problem is that one of these relationships is called a
# "lightweight checkout" (and then, only when the working tree and branch
# happen to be in different directories) and the other is a "heavyweight
# checkout". This implies a "checkout" is either "heavy" or "light", but in
# fact it can be both. If a branch is bound to another, but doesn't have a
# working tree in the same directory, is it still a checkout?
~/bzrtest/repository/dev $ cd ../../dev
~/bzrtest/dev $ bzr info
Lightweight checkout (format: dirstate or dirstate-tags)
Location:
light checkout root: file:///Users/pfrost/bzrtest/dev/
repository checkout root: file:///Users/pfrost/bzrtest/repository/dev/
checkout of branch: file:///Users/pfrost/bzrtest/imagine_this_is_a_remote_server/
shared repository: file:///Users/pfrost/bzrtest/repository/
Related branches:
publish to branch: file:///Users/pfrost/bzrtest/imagine_this_is_a_remote_server/
# finally add a file and check that all three places pick it up. I had to
# check, because I wasn't sure if ./repository/dev really was bound to
# imagine_this_is_a_remote_server.
~/bzrtest/dev $ touch two
~/bzrtest/dev $ bzr add two
added two
~/bzrtest/dev $ bzr ci -m 'added two'
added two
Committed revision 2.
~/bzrtest/dev $ cd ..
~/bzrtest $ bzr log --short dev
2 Phil Frost 2007-07-19
added two
1 Phil Frost 2007-07-19
added one
~/bzrtest $ bzr log --short repository/dev/
2 Phil Frost 2007-07-19
added two
1 Phil Frost 2007-07-19
added one
~/bzrtest $ bzr log --short imagine_this_is_a_remote_server/
2 Phil Frost 2007-07-19
added two
# I have a very similar problem:
~/bzrtest $ bzr init-repo --no-trees repository repository/ dev $ bzr push ../../imagine_ this_is_ a_remote_ server repository/ dev $ bzr bind ../../imagine_ this_is_ a_remote_ server/
~/bzrtest $ bzr init repository/dev
~/bzrtest $ bzr checkout --lightweight repository/dev/
~/bzrtest $ cd dev
~/bzrtest/dev $ touch one
~/bzrtest/dev $ bzr add one
added one
~/bzrtest/dev $ bzr ci -m 'added one'
added one
Committed revision 1.
~/bzrtest/dev $ cd ../repository/dev/
~/bzrtest/
Created new branch.
~/bzrtest/
# at this point, the situation is this: this_is_ a_remote_ server -- a mirror of the dev branch. this_is_ a_remote_ server; the only difference being the way it was
# ./repository -- a --no-trees repository
# ./repository/dev -- a branch in that repo
# ./dev -- a lightweight checkout of ./repository/dev
# ./imagine_
# ./repository/dev is bound to this. My understanding is that this is
# identical to ./repository/dev being a "checkout" of
# ./imagine_
# created.
# now, let's see what info will tell us. First, ./repository/dev. What's odd this_is_ a_remote_ server.
# about this output is that it doesn't say that it is bound to
# imagine_
~/bzrtest/ repository/ dev $ bzr info /Users/ pfrost/ bzrtest/ repository/
Repository bound branch (format: dirstate or knit)
Location:
shared repository: file://
repository branch: dev
Related branches: /Users/ pfrost/ bzrtest/ imagine_ this_is_ a_remote_ server/
publish to branch: file://
# next, ./dev, the leightweight checkout. What's odd here is that it *does* say this_is_ a_remote_ server, but it's not!
# that ./dev is a checkout of ./imagine_
# It's a checkout of ./repository/dev/ in my mind.
#
# I think the issue here may be overloading definitions of the word "checkout".
# From what I gather in IRC, there are two types of relationships involved.
# One, a working directory is always associated to exactly one branch. Two, a
# branch may be "bound" with "bzr bind" to another branch, the semantics being
# that any commits to one branch are applied to the other branch.
#
# A confusing problem is that one of these relationships is called a
# "lightweight checkout" (and then, only when the working tree and branch
# happen to be in different directories) and the other is a "heavyweight
# checkout". This implies a "checkout" is either "heavy" or "light", but in
# fact it can be both. If a branch is bound to another, but doesn't have a
# working tree in the same directory, is it still a checkout?
~/bzrtest/ repository/ dev $ cd ../../dev /Users/ pfrost/ bzrtest/ dev/ /Users/ pfrost/ bzrtest/ repository/ dev/ /Users/ pfrost/ bzrtest/ imagine_ this_is_ a_remote_ server/ /Users/ pfrost/ bzrtest/ repository/
~/bzrtest/dev $ bzr info
Lightweight checkout (format: dirstate or dirstate-tags)
Location:
light checkout root: file://
repository checkout root: file://
checkout of branch: file://
shared repository: file://
Related branches: /Users/ pfrost/ bzrtest/ imagine_ this_is_ a_remote_ server/
publish to branch: file://
# finally add a file and check that all three places pick it up. I had to this_is_ a_remote_ server.
# check, because I wasn't sure if ./repository/dev really was bound to
# imagine_
~/bzrtest/dev $ touch two
~/bzrtest/dev $ bzr add two
added two
~/bzrtest/dev $ bzr ci -m 'added two'
added two
Committed revision 2.
~/bzrtest/dev $ cd ..
~/bzrtest $ bzr log --short dev
2 Phil Frost 2007-07-19
added two
1 Phil Frost 2007-07-19
added one
~/bzrtest $ bzr log --short repository/dev/
2 Phil Frost 2007-07-19
added two
1 Phil Frost 2007-07-19
added one
~/bzrtest $ bzr log --short imagine_ this_is_ a_remote_ server/
2 Phil Frost 2007-07-19
added two
1 Phil Frost 2007-07-19
added one
~/bzrtest $