# I have a very similar problem: ~/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 1 Phil Frost 2007-07-19 added one ~/bzrtest $