Erik Bågfors wrote: > Jakub Narebski wrote: >> >> There _are_ terminology conflicts. For example bzr "branch" is roughly >> equivalent to one-branch git "repository"; > > Agreed. > >> bzr "repository" is just >> collection of branches sharing common storage, > > Agreed What is worse (in comparing git with bzr) that there are no exact equivalents. For example bzr "branch" is something between git repository (clone of repository) and git branch. Bazaar-NG "repository" is something like multi-branch git repository, but also like collection of git repositories sharing object database. >> which is similar to set >> of git "repositories" with .git/objects/ linked to common object >> repository (storage area) or appropriately set alternates file >> (although that is not common usage in git, and for example you would >> have to be carefull with running git-prune); bzr "lightweight checkout" >> is equivalent to nonexistent "lazy clone"/"remote alternates" discussed >> on git mailing list but not implemented because of performance >> concerns; bzr "normal checkout" is I think similar to git "shared >> clone" (but shared clone is limited to repositories on the same >> filesystem); bzr "heavyweight checkout" is roughly equivalent to >> one-branch-only "clone" in git or cg (cg = Cogito). > > This is wrong. There are two kinds of checkouts > lightweight.. and "normal/heavyweight". > > I think you are getting this a little wrong, and I think the reason is > that you are thinking of repositories, while in bzr you normally think > of branches. As I said: conflict of concepts. And perhaps philosophies. > For example, I think (correct me if I'm wrong) that if I have a git > repository of a upstream linux-repo (Linus' for example). I guess > I'll use "pull" to keep my copy up to date with the upstream repo? If > I then would like to hack something special, I would "clone" the repo > and get a new repo and that's where I do my work. Is that correct? Not exactly. To work for example on Linus' version of Linux kernel you clone upstream linux-repo git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git Working area is associated with repository in Git, not with "branch" like in Bazaar-NG. In default configuration 'master' (main) branch of cloned repository (in the case of Linus' public repo it is the only branch) corresponds to 'origin' branch in your repository. Now you can work on 'master' branch, putting your changes there. git-fetch will update 'origin' branch to the current version of 'master' branch of cloned repo; git-pull will additionally merge into 'master', i.e. merge new changes into your work. Now if you want to hack something special, that you prefer to use separate branch for, you don't need to clone repository anew (although you could, using --local --shared to reduce cost of cloning) but it is enough to create new branch in your repository. You can very easily switch between branches using the same working area (in bzr it would probably mean "branch checkout" to the same directory). > In bzr you never (well...) clone a full repository, but you clone one It's a pity... for example you usually want to have access to both stable ('master') and development ('next') branches, perhaps also to fixes ('maint') and beta stage development ('pu') branches. In bzr it is a bit work (to correctly setup "repository"), in git it is one command. > line-of-development (a branch). So "bzr branch" is always a > "one-branch-only "clone" in git or cg". More or less. > "bzr checkout" is a "bzr branch" followed by a setting saying > "whenever you commit here, commit in the master branch also". Git doesn't have exact equivalent here. For "bzr checkout" on the same system, it is similar to setting common object repository; for remote "bzr checkout" it might be approximated by hooks which would push changes to remote repository (although we would have to implement some transaction/journal framework). > "bzr checkout --lightweight" is a way to get only a snapshot of the > working tree out of a branch. Whenever you commit, it's done in the > remote branch. Yes, but with "bzr checkout --lightweight" you get also pointer to remote branch where to commit changes. Git doesn't have something like that, at least not for remote remote branch; mostly because of poor performance or need for fast and constant network connection to source branch. -- 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