Aaron Bentley wrote: > Jakub Narebski wrote: >> Aaron Bentley wrote: >>> A Bazaar branch is a directory inside a repository that contains: >>> - a name referencing a particular revision >>> - (optional) the location of the default branch to pull/merge from >>> - (optional) the location of the default branch to push to >>> - (optional) the policy for GPG signing >>> - (optional) an alternate committer-id to use for this branch >>> - (optional) a nickname for the branch >>> - other configuration options >> Erm, wasn't revno to revid mapping also part of bzr "branch"? > > It's not part of the conceptual model. The revno-to-revid mapping is > done using the DAG. The branch just tracks the head. > > The .bzr/branch/revision-history file is from an earlier model in which > branches had a local ordering. Nowadays, it can be treated as: > - a reference to the head revision > - a cache of the revno-to-revid mapping In git DAG is DAG od parents. There are no "child" links. So it is natural to refer to n-th ancestor of given commit (in git <ref>~<n>, in bzr -<m>). To have incrementing (from 1 for first revision on given branch) revision numbers you either have to have links to "children", which automatically means that revisions cannot be immutable to allow for branching at arbitrary revision, or to transverse DAG here and back again (perhaps with cache of revno-to-revid mapping to help performance). Additionally to have incrementing revision numbers you have to remember which part of DAG is our branch; which parent in merge to chose to follow. Bazaar-NG decides here to distinguish first parent; to have first parent immutable it doesn't use fast-forward and always use merge, sometimes giving empty-merge. If you use "pull" numbers change. >>> This layout is an imitation of Git, as I understand it: >>> Repository: >>> ~/repo >>> >>> Branches: >>> ~/repo/origin >>> ~/repo/master >>> >>> Workingtree: >>> ~/repo >> >> Workingtree: >> ~/ >> >> if I understand notation correctly. > > The notation was that ~/repo would contain the .git directory for the > repository. The default layout of "clothed" repository is Repository: ~/repo/.git/ Branches: ~/repo/.git/refs/heads/ Workingtree: ~/repo/ >>> While "bzr merge ../b" is a minor inconvenience, I think that "bzr merge >>> http://bazaar-vcs.org/bzr/bzr.dev" is a big win. >> >> Gaah, it's even more inconvenient. Certainly more than using name >> of branch itself, like in git. > > Of course if you have a copy of bzr.dev on your computer, you don't need > to type the full URL. it's just like the 'merge ../b' above. > > But how can you use the branch name of a branch that isn't on your > computer? I suspect git requires a separate 'clone' step to get it onto > your computer first. No, as it was said in other messages in this thread, you can fetch a branch (branches), even from other repository that the one you cloned from, into given branch (branches). For git it would be $ git fetch <URL> <remotebranch>:<localbranch> You probably would want to save above info in remotes file or in config. For cg (Cogito) it would be $ cg branch-add <localbranch> <URL>#<remotebranch> $ cg fetch <localbranch> In git you always use names like 'master', 'next', 'HEAD' (meaning current branch) and also HEAD^, next~5 when comparing branches, viewing history, merging branches, switching to branch etc. Not '../master'... -- Jakub Narebski Poland - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html