On Wed, 15 Nov 2006, Shawn Pearce wrote: > > I've taught the same fetch first, then merge strategy. Nobody I > know in meat-space pulls from a remote URL and merges in one shot; Actually, with different people involved it's _much_ better to do it in one shot. Why? Because doing a separate "fetch to local space" + "merge from local space" actually loses the information on what you are merging. It's a lot more useful to have a merge message like Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 than one like Merge branch 'for-linus' which is what you get if you fetched it first. Of course, in a situation like git itself, where most of the merges are stuff that Junio has had pending in his own tree ('maint' branch etc), things are different. But in a system where people actually use separate trees, there really is an advantage to consider the fundamental operation to be the "pull", not the "merge". Again, the kernel really is more distributed than most projects, but this is another thing people should recognize: git has been designed for "true distributed development". Not the "fake" kind. Not the "I merge mainly my own branches" kind of thing. Truly distributed. And in a truly distributed situation, "pull" is strictly more powerful than a separate "fetch" + separate "merge". In other words, an SCM that does "pull" is _better_ than an SCM that does "merge". You can implement "merge" as a special case of "pull" (which we do), but you cannot conveniently do it the other way around without having to tie them together some other way (ie you could have a "remember the last place we fetched this branch from in order to tie the fetch and the merge together" - but please realize that that is exactly what "pull" _is_). So I will generally do a "git pull" (possibly followed by a "git reset --hard ORIG_HEAD" if I decided it wasn't good) over a "git fetch" + "git merge". Exactly because the "pull" operation is actually more powerful. Maybe people who aren't in my position don't always appreciate the _power_ of git. The reason "merge" is a second-class citizen is simply because IT SHOULD BE. Linus - 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