Re: Cleaning up git user-interface warts

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linus Torvalds
Date: Wednesday, November 15, 2006 - 1:40 pm

On Wed, 15 Nov 2006, Nicolas Pitre wrote:

I agree. I just expect that "merge" is such a simple concept that it 
doesn't really need a whole lot of explaining. 

People kind of expect merging to be hard, but I think it's because CVS et 
al have tought people that merging is _painful_. I don't think it's a very 
complicated concept per se, especially if you have explained branches with 
gitk already.

But yes, the order should be:

 (a) explain what "branches" mean in git (and in that situation, "fetch" 
     is very natural - I think fetching itself is probably easier to 
     explain than "branches" are).
 (b) once you've explained branches, the notion of "merge" comes next, and 
     I _think_ that is very obvious. This is where UI issues come in, 
     because "git merge" is really a totally internal program with a 
     pretty horrid UI, but I think we could fix the syntax, and even with 
     the current syntax you can really just gloss it over, because nobody 
     is really going to care.
 (c) once "fetching branches" and "merging" have been explained, "pull" is 
     really pretty damn trivial, and in fact, if you then explain that 
     it's just easier to do "git pull . branchname" than to use "git 
     merge", I think people may just even agree with you.

I think I saw that particular discussion on #git: somebody didn't expect 
"git pull . branch" to be the way to merge. And again, I think it's 
not _really_ because "pull" is hard to understand, it's because people 
haven't been walked through the thing in this way.

Once you understand local branches, fetching and merging, it's actually 
_easier_ to explain why we merge even local branches with "git pull .": 
you just tell them that this way you can use the same command regardless 
of whether you're merging something local or something remote. Again, if 
it's explained that way, I bet a lot of people react with "ahh, that's 
clever", and _like_ the fact that they only really need to learn _one_ 
command, instead of learning two.

See? Explain it that way: "pull" really is simple. By using "pull", you 
don't have to learn about "merge" syntax. You -can- use "merge" as a 
separate program if you want to, but the syntax isn't very nice, exactly 
because you're not really expected to.

But the real issue here is to explain local branches. I will happily admit 
that local branches are very VERY different from just about any other SCM, 
but I also claim that git is just much BETTER than other SCM's in this 
respect.

And yes, this is why you should NOT try to use the same naming as "hg", 
for example. Last I saw, hg still didn't even have local branches, To 
mercurial, repository == branch, and that's it. It was what I came from 
too, and I used to argue for using git that way too. I've since seen the 
error of my ways, and git is simply BETTER. 

And the concept of local branches is exactly _why_ you have to have 
separate "fetch" and "pull", but why you do _not_ need a separate "merge" 
(because "pull ." does it for you).

If you don't understand local branches, you'll never understand git usage. 
And once you _do_ understand local branches, "fetch" vs "pull" actually is 
rather simple.

		Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: Cleaning up git user-interface warts, Jakub Narebski, (Tue Nov 14, 2:30 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Tue Nov 14, 2:34 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Tue Nov 14, 3:56 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Tue Nov 14, 6:48 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Tue Nov 14, 7:10 pm)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Tue Nov 14, 7:27 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Tue Nov 14, 9:20 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Tue Nov 14, 9:58 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 11:03 am)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 11:43 am)
Re: Cleaning up git user-interface warts, Shawn Pearce, (Wed Nov 15, 11:49 am)
Re: Cleaning up git user-interface warts, Andy Parkins, (Wed Nov 15, 11:58 am)
Re: Cleaning up git user-interface warts, Marko Macek, (Wed Nov 15, 12:05 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 12:18 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 12:32 pm)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Wed Nov 15, 12:39 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 1:09 pm)
Re: Cleaning up git user-interface warts, Petr Baudis, (Wed Nov 15, 1:12 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 1:21 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 1:26 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 1:40 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 1:41 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 1:50 pm)
Re: Cleaning up git user-interface warts, Carl Worth, (Wed Nov 15, 2:08 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 2:18 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 2:31 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 2:40 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 2:45 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 2:52 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 2:59 pm)
Re: Cleaning up git user-interface warts, Shawn Pearce, (Wed Nov 15, 3:07 pm)
Re: Cleaning up git user-interface warts, Sean, (Wed Nov 15, 3:28 pm)
Re: Cleaning up git user-interface warts, Carl Worth, (Wed Nov 15, 3:52 pm)
Re: Cleaning up git user-interface warts, Shawn Pearce, (Wed Nov 15, 4:02 pm)
Re: Cleaning up git user-interface warts, Sean, (Wed Nov 15, 4:07 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 4:33 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 5:08 pm)
Re: Cleaning up git user-interface warts, Theodore Tso, (Wed Nov 15, 6:14 pm)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Wed Nov 15, 6:20 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 7:03 pm)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Wed Nov 15, 7:30 pm)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Wed Nov 15, 8:02 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 8:07 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Wed Nov 15, 8:12 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 8:27 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 8:35 pm)
Re: Cleaning up git user-interface warts, Nicolas Pitre, (Wed Nov 15, 8:43 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 9:07 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Wed Nov 15, 9:21 pm)
Re: Cleaning up git user-interface warts, Theodore Tso, (Wed Nov 15, 9:26 pm)
Re: Cleaning up git user-interface warts, Petr Baudis, (Wed Nov 15, 9:30 pm)
Re: Cleaning up git user-interface warts, Marko Macek, (Wed Nov 15, 11:07 pm)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 3:45 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Thu Nov 16, 4:11 am)
Re: Cleaning up git user-interface warts, Alexandre Julliard, (Thu Nov 16, 4:34 am)
Re: Cleaning up git user-interface warts, Andreas Ericsson, (Thu Nov 16, 4:35 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Thu Nov 16, 4:47 am)
Re: Cleaning up git user-interface warts, Andreas Ericsson, (Thu Nov 16, 4:50 am)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 6:03 am)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 6:11 am)
Re: Cleaning up git user-interface warts, Petr Baudis, (Thu Nov 16, 7:01 am)
Re: Cleaning up git user-interface warts, Alexandre Julliard, (Thu Nov 16, 8:48 am)
Re: Cleaning up git user-interface warts, Theodore Tso, (Thu Nov 16, 9:07 am)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 9:23 am)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 9:30 am)
Re: Cleaning up git user-interface warts, Carl Worth, (Thu Nov 16, 9:37 am)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 9:42 am)
Re: Cleaning up git user-interface warts, Theodore Tso, (Thu Nov 16, 9:49 am)
Re: Cleaning up git user-interface warts, Carl Worth, (Thu Nov 16, 10:01 am)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 10:17 am)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 10:30 am)
multi-project repos (was Re: Cleaning up git user-interfac ..., Han-Wen Nienhuys, (Thu Nov 16, 10:40 am)
Re: Cleaning up git user-interface warts, Sean, (Thu Nov 16, 10:44 am)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Thu Nov 16, 10:57 am)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 10:57 am)
Re: Cleaning up git user-interface warts, Carl Worth, (Thu Nov 16, 11:13 am)
Re: Cleaning up git user-interface warts, Carl Worth, (Thu Nov 16, 11:23 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Thu Nov 16, 11:27 am)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 11:28 am)
Re: multi-project repos, Junio C Hamano, (Thu Nov 16, 11:33 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Thu Nov 16, 12:47 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 12:53 pm)
Re: multi-project repos (was Re: Cleaning up git user-inte ..., Johannes Schindelin, (Thu Nov 16, 3:21 pm)
Re: multi-project repos, Junio C Hamano, (Thu Nov 16, 3:44 pm)
Re: Cleaning up git user-interface warts, Johannes Schindelin, (Thu Nov 16, 4:00 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 4:22 pm)
Re: multi-project repos (was Re: Cleaning up git user-inte ..., Johannes Schindelin, (Thu Nov 16, 4:36 pm)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 5:05 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Thu Nov 16, 5:13 pm)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 5:27 pm)
Re: multi-project repos, Johannes Schindelin, (Thu Nov 16, 5:29 pm)
Re: Cleaning up git user-interface warts, Petr Baudis, (Thu Nov 16, 5:35 pm)
Re: Cleaning up git user-interface warts, Carl Worth, (Thu Nov 16, 5:37 pm)
Re: Cleaning up git user-interface warts, Linus Torvalds, (Thu Nov 16, 5:39 pm)
Re: Cleaning up git user-interface warts, Han-Wen Nienhuys, (Thu Nov 16, 5:52 pm)
Re: multi-project repos (was Re: Cleaning up git user-inte ..., Johannes Schindelin, (Thu Nov 16, 6:22 pm)
Re: Cleaning up git user-interface warts, Carl Worth, (Thu Nov 16, 6:25 pm)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Thu Nov 16, 6:34 pm)
Re: multi-project repos (was Re: Cleaning up git user-inte ..., Johannes Schindelin, (Thu Nov 16, 7:16 pm)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Thu Nov 16, 11:42 pm)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Fri Nov 17, 12:32 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Fri Nov 17, 1:41 am)
Re: Cleaning up git user-interface warts, Carl Worth, (Fri Nov 17, 2:18 am)
Re: Cleaning up git user-interface warts, Johannes Schindelin, (Fri Nov 17, 3:11 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Fri Nov 17, 4:29 am)
Re: Cleaning up git user-interface warts, Junio C Hamano, (Fri Nov 17, 4:41 am)
Re: Cleaning up git user-interface warts, Karl , (Fri Nov 17, 5:20 am)
Re: Cleaning up git user-interface warts, Shawn Pearce, (Fri Nov 17, 9:58 am)
Re: multi-project repos, Junio C Hamano, (Fri Nov 17, 10:39 am)
Re: multi-project repos, Junio C Hamano, (Fri Nov 17, 1:24 pm)
Re: Cleaning up git user-interface warts, Michael K. Edwards, (Fri Nov 17, 6:24 pm)
Re: multi-project repos, Shawn Pearce, (Fri Nov 17, 11:02 pm)
Re: multi-project repos, Junio C Hamano, (Sat Nov 18, 12:31 am)
Re: multi-project repos, Shawn Pearce, (Sat Nov 18, 12:45 am)
Re: Cleaning up git user-interface warts , Horst H. von Brand, (Mon Nov 20, 12:44 pm)
Re: Cleaning up git user-interface warts, Shawn Pearce, (Mon Nov 20, 12:46 pm)
Re: Cleaning up git user-interface warts, Jerome Lovy, (Tue Nov 21, 6:25 am)
Re: Cleaning up git user-interface warts , Sanjoy Mahajan, (Wed Nov 22, 4:21 pm)
Re: Cleaning up git user-interface warts , Horst H. von Brand, (Wed Nov 22, 7:52 pm)