Re: Considering teaching plumbing to users harmful

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Avery Pennarun
Date: Wednesday, July 16, 2008 - 10:53 am

On 7/16/08, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

I believe the only way you can get away with such a simple learning
sequence is if your workflow is as simple as that you seem to
describe: everyone has push access to the central 'master'.

That works (and mostly just as well as any other "supposedly easy"
VCS, like svn), but because git's power is so tempting, almost
nobody's real-life repository actually works like that.

At the very least, there will be branches.  And where there are
branches, there's merging.  And with merging comes merge conflicts.
And with merge conflicts comes the crazy (yes, very useful, but still
crazy) conflicted index features.  And so you suddenly need to find
out about things like

       git diff :{1,3}:path/to/filename

Which is a great command, but svn definitely makes it easier to do the
same thing.

Even if you have a repo with widespread push access, git's log looks
annoying compared to svn because of all the merge commits.  That's a
primary reason why rebase was invented, of course.   But teaching
people about rebase vs. merge is highly nontrivial.  "git pull
--rebase" helps a little, but it's still nontrivial, particularly when
local patch #3 of 5 has a conflict.

Also, inevitably, someone will ask "what happened to those simple svn
revision numbers?" or "when I do a merge, why are the patches from
branch #1 interspersed with the ones from branch #2 in git log?"  The
answers are "look at gitk to see the real merge history, that's way
more powerful than svn, and check out git-bisect!" and "use git log
--topo-order" respectively, but those are pretty nontrivial answers
too.

Submodules, which are critical to large-scale software development,
are also very complicated.  You can't explain how to use them without
knowing about .git/config, the difference between that and
.gitmodules, the concept of gitlinks (and therefore the concepts of
trees and blobs), the idea of a "disconnected HEAD" (which all
submodules check out by default), the idea that pushing submodules in
the wrong order can create references to non-existing commitids, and
so on.  In contrast, the lame svn:externals mechanism is far easier to
explain.

The "problem" with learning git is that it's so powerful.  A person
can feel like they've "learned all the svn there is to learn" in a
couple of days, because it really doesn't do all that much.  But with
git, if you want to make it *appear* simple, you have to artificially
restrict what you tell people, and because the git *developers* don't
work using that restricted subset of commands, the abstraction always
leaks.

Example: "git remote" didn't originally even have an "rm" subcommand.
Why?  Because real git developers knew they could delete a remote by
editing .git/config, and it never even occurred to anyone to do it any
other way.  I still do it by editing the file, because the file is in
a nice format and it's still easier than typing "git remote".

The svn developers have the same annoyingly small subset of commands
that their users do.  It means svn is much less powerful, but it also
means that subset is actually enough to somehow handle *all* the tasks
a user will run into.  After all, there's no other way.

That said, it's debatable if all this is actually a problem.  If I
wanted simple-minded, I'd use svn.  Ironically, the plumbing is the
only part of git that isn't supposed to ever change, so it's the most
valuable knowledge to have. Why *not* teach it?

Have fun,

Avery
--
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:
Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 10:21 am)
Re: Considering teaching plumbing to users harmful, Jesper Eskilson, (Wed Jul 16, 10:50 am)
Re: Considering teaching plumbing to users harmful, Avery Pennarun, (Wed Jul 16, 10:53 am)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 11:12 am)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 11:14 am)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 11:18 am)
Re: Considering teaching plumbing to users harmful, Jesper Eskilson, (Wed Jul 16, 11:19 am)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 11:27 am)
Re: Considering teaching plumbing to users harmful, Avery Pennarun, (Wed Jul 16, 11:35 am)
Re: Considering teaching plumbing to users harmful, Avery Pennarun, (Wed Jul 16, 11:51 am)
Re: Considering teaching plumbing to users harmful, Petr Baudis, (Wed Jul 16, 11:59 am)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 12:09 pm)
Re: Considering teaching plumbing to users harmful, Avery Pennarun, (Wed Jul 16, 12:22 pm)
Re: Considering teaching plumbing to users harmful, Avery Pennarun, (Wed Jul 16, 12:29 pm)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 12:34 pm)
Re: Considering teaching plumbing to users harmful, Avery Pennarun, (Wed Jul 16, 12:46 pm)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 1:12 pm)
Re: Considering teaching plumbing to users harmful, Theodore Tso, (Wed Jul 16, 1:13 pm)
Re: Considering teaching plumbing to users harmful, Stephen R. van den Berg, (Wed Jul 16, 1:23 pm)
Re: Considering teaching plumbing to users harmful, Nicolas Pitre, (Wed Jul 16, 1:27 pm)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 1:51 pm)
Re: Considering teaching plumbing to users harmful, Dmitry Potapov, (Wed Jul 16, 2:48 pm)
Re: Considering teaching plumbing to users harmful, Daniel Barkalow, (Wed Jul 16, 2:53 pm)
Re: Considering teaching plumbing to users harmful, Dmitry Potapov, (Wed Jul 16, 2:59 pm)
Re: Considering teaching plumbing to users harmful, Stephan Beyer, (Wed Jul 16, 3:09 pm)
Re: Considering teaching plumbing to users harmful, Dmitry Potapov, (Wed Jul 16, 3:24 pm)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 3:28 pm)
Re: Considering teaching plumbing to users harmful, Theodore Tso, (Wed Jul 16, 3:32 pm)
Re: Considering teaching plumbing to users harmful, Theodore Tso, (Wed Jul 16, 3:49 pm)
Re: Considering teaching plumbing to users harmful, Sean Kelley, (Wed Jul 16, 3:53 pm)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 4:05 pm)
Re: Considering teaching plumbing to users harmful, Nigel Magnay, (Wed Jul 16, 4:17 pm)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 4:19 pm)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 4:22 pm)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 4:40 pm)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 5:02 pm)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Wed Jul 16, 5:25 pm)
Re: Considering teaching plumbing to users harmful, Stephan Beyer, (Wed Jul 16, 6:01 pm)
Re: Considering teaching plumbing to users harmful, Theodore Tso, (Wed Jul 16, 7:47 pm)
Re: Considering teaching plumbing to users harmful, Stephen Sinclair, (Wed Jul 16, 8:21 pm)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Wed Jul 16, 11:53 pm)
Re: Considering teaching plumbing to users harmful, "Peter Valdemar Mørc ..., (Thu Jul 17, 12:30 am)
Re: Considering teaching plumbing to users harmful, Dmitry Potapov, (Thu Jul 17, 5:38 am)
Re: Considering teaching plumbing to users harmful, Theodore Tso, (Thu Jul 17, 5:55 am)
Re: Considering teaching plumbing to users harmful, Peter Valdemar Mørch, (Thu Jul 17, 6:35 am)
RE: Considering teaching plumbing to users harmful, Craig L. Ching, (Thu Jul 17, 7:21 am)
Re: Considering teaching plumbing to users harmful, Theodore Tso, (Thu Jul 17, 7:26 am)
Re: Considering teaching plumbing to users harmful, Petr Baudis, (Thu Jul 17, 7:51 am)
Re: Considering teaching plumbing to users harmful, J. Bruce Fields, (Thu Jul 17, 8:55 am)
Re: Considering teaching plumbing to users harmful, J. Bruce Fields, (Thu Jul 17, 8:57 am)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Thu Jul 17, 9:38 am)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Thu Jul 17, 11:16 am)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Thu Jul 17, 11:29 am)
Re: Considering teaching plumbing to users harmful, Johannes Schindelin, (Thu Jul 17, 11:43 am)
Re: Considering teaching plumbing to users harmful, Junio C Hamano, (Thu Jul 17, 12:10 pm)
Re: Considering teaching plumbing to users harmful, Andreas Ericsson, (Fri Jul 18, 1:19 am)
Re: Considering teaching plumbing to users harmful, J. Bruce Fields, (Fri Jul 18, 7:35 am)
Re: Considering teaching plumbing to users harmful, Ping Yin, (Fri Jul 18, 10:02 am)
Re: Considering teaching plumbing to users harmful, Jeff King, (Fri Jul 18, 11:26 am)
Re: Suggestion: doc restructuring, Junio C Hamano, (Fri Jul 18, 12:50 pm)
Re: Addremove equivalent [was: Re: Considering teaching pl ..., Johannes Schindelin, (Fri Jul 18, 4:03 pm)
Re: Suggestion: doc restructuring [was: Re: Considering te ..., Johannes Schindelin, (Fri Jul 18, 6:19 pm)
Re: Addremove equivalent, Junio C Hamano, (Sat Jul 19, 8:27 pm)
[PATCH 2/2] git-add -a: add all files, Junio C Hamano, (Sat Jul 19, 8:29 pm)
[PATCH 3/2] git-add -a: tests, Junio C Hamano, (Sat Jul 19, 8:32 pm)
Re: [PATCH 2/2] git-add -a: add all files, Tarmigan, (Sat Jul 19, 9:20 pm)
Re: [PATCH 2/2] git-add -a: add all files, Tarmigan, (Sat Jul 19, 9:28 pm)
Re: Suggestion: doc restructuring, Junio C Hamano, (Sun Jul 20, 1:14 am)
Re: [PATCH 2/2] git-add -a: add all files, Johannes Schindelin, (Sun Jul 20, 3:56 am)
Re: Suggestion: doc restructuring, Johannes Schindelin, (Sun Jul 20, 4:02 am)
Re: [PATCH 2/2] git-add -a: add all files, Jay Soffian, (Sun Jul 20, 5:45 am)
Re: [PATCH 2/2] git-add -a: add all files, Sverre Rabbelier, (Sun Jul 20, 1:34 pm)
Re: Suggestion: doc restructuring, Andreas Ericsson, (Sun Jul 20, 11:41 pm)
Re: Suggestion: doc restructuring, Johannes Schindelin, (Mon Jul 21, 3:04 am)
Re: Suggestion: doc restructuring, Junio C Hamano, (Mon Jul 21, 9:22 am)