Re: Consistent terminology: cached/staged/index
From: Victor Engmark <hidden>
Date: 2016-06-15 22:50:41
On 03/01/2011 12:03 AM, Jeff King wrote:
On Sun, Feb 27, 2011 at 10:34:00AM -0500, Drew Northup wrote:
One analogy I like for the index is that it's a bucket. It starts out
full of files from the last commit. You can put new, changed files in
the bucket. When it looks good, you dump the bucket into a commit. You
can have multiple buckets if you want. You can pull files from other
commits and put them in the bucket. You can take files out of the bucket
and put them in your work tree.
So maybe it should just be called "the bucket"?
I'm not sure that's a good idea, because while the analogy makes sense,
it doesn't by itself convey any meaning. That is, knowing the concept, I
can see that bucket is a fine term. But hearing about git's bucket, I
have no clue what it means. Whereas "staging area" I think is a bit more
specific, _if_ you know what a staging area is.
So there are two questions:
1. Is there a more universal term that means something like "staging
area"?
2. Is the term "staging area", while meaningful to some, actually
_worse_ to others than a term like "bucket"? That is, does it sound
complex and scary, when it is really a simple thing. And while
people won't know what the "git bucket" is off the bat, it is
relatively easy to learn.I like the name "git bucket", as in "a git bit bucket", but semantically the connection is just "a container". Especially for beginners this can result in the wrong connotations: * Limited size. A modern harddisk is vastly larger than most Git repositories, likening it more to a container ship than a bucket. * Definite size. Harddisk space availability varies with time, unlike most containers. * Non-linear use. A full physical bucket could be used for many different things, but a full git bucket can either be forgotten (with checkout), remembered temporarily (with stash), or remembered permanently (with commit). * Container-specific features irrelevant for git: Handles, translucency (or not), depth, material, dimensions of the opening... How about a metaphor like "plan"? You either cancel/undo it (git checkout), postpone / shelf it (git stash), resume/continue it (git stash apply) or commit to it. Coming from the desktop metaphor, I personally like `git undo`, `git postpone/resume` and `git commit` - They give a clear sense of direction towards the commit, and much clearer verbs for those new to VC in general. -- Victor Engmark