On Wed, Nov 15, 2006 at 10:03:18AM -0800, Linus Torvalds wrote: > So the reason for using "git pull" is > > - bk did it that way, and like it or not, bk was the first usable > distributed system. hg is totally uninteresting. Yes, "bk pull" had an implied merge. But, the reason why bk pull was never really a problem with Bitkeeper is because it didn't really have support for multiple branches active within the same repository --- what Larry called "lines of development". Or rather, Larry started down the path of implementing lines of development, and then never fully supported it, mainly because making it easy for people to use was the tricky part. So with Bitkeeper, with "bk pull" there was never any question about which branch ("line of development") you would be merging into after doing a "bk pull", since there was only one LOD, and given that BK had the rule that a within a LOD only one tip was allowed, a "bk pull" _had_ to do do a merge operation. The moment you start supporting multiple unmerged tips in a repository i.e., branches, it raises the question, "which branch should the pull operation merge onto"? And git's answer, "the current branch", is often not the right one. *That's* why always doing a merge isn't always the right answer, and so in the git world, people are told, use "git fetch" instead, and in the hg world, "hg pull" doesn't do the merge. IMO, it's a fundamental result of the fact that both git and hg have chosen to support mulitple LOD's, whereas BK punted on the concept. If you are operating on your local development branch, the reality is that merging is probably not the right answer in the general case, which is why the hg world have omitted doing the merge. And by telling people, use "git fetch" instead, that's also an implicit admission that merging onto the current branch is often not the Right Thing. The problem is that "pull" is a very evocative word, especially given the existence "push", and so in the git world we are reduced to telling people, "you really don't want to use pull, trust me". Is this a major issue? Not really; I can think of a number of other issues that make git hard to learn, and why hg has a more gentle learning curve, and the "don't use pull" is probably a relatively minor annoyance in the grand scheme of things. If people are looking for a simple way out, maybe it would be enough to have an option where if "git pull" is called from an interactive terminal, and the "novice user" option is enabled, "git pull" returns a warning message, "You probably want to use 'git fetch' instead; are you sure?" If people are saying that we shouldn't be teaching "git pull" until fairly late in the game, maybe we should have a way of discouraging novices from using, simply because they they are used to seeing "pull" from other distributed SCM's. - Ted - 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