Re: Consistent terminology: cached/staged/index
- From
- Victor Engmark <victor.engmark@terreactive.ch>
- Date
- Mar 1, 2011, 08:43 UTC
- Message-ID
- <4D6CB1B3.1010005@terreactive.ch>
- In-Reply-To
- <878466.93199.1298934204331.JavaMail.trustmail@mail1.terreactive.ch>
On 03/01/2011 12:03 AM, Jeff King wrote:
> On Sun, Feb 27, 2011 at 10:34:00AM -0500, Drew Northup wrote:
Show 25 quoted lines
> 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