On 17.10.2013, at 21:50, Junio C Hamano <gits...@pobox.com> wrote:

> Felipe Contreras <felipe.contre...@gmail.com> writes:


> However, since you asked, I would share a couple of comments
> regarding the index, cache and staging area.
> (1) "Staging area".
> The phrase "staging area" is not an everyday phrase or common CS
> lingo, and that unfortunately makes it a suboptimal choice of words
> especially to those of us, to whom a large portion of their exposure
> to the English language is through the command words we use when we
> talk to our computers.

Interestingly, as a non-native speaker, I draw the exact reverse conclusion 
from this: While I had no idea what a "staging area" or "to stage" was (I did 
know the "stage" in a theater, though), I found this to not be a major problem: 
Using a dictionary and reading up on what it means in git made it clearly 
quickly enough.

To the contrary, the fact that the term was not yet overloaded with conflicting 
other meanings made it easier for me to attach the semantics git associates 
with it.

In contrast, "index" was exceedingly bad and confusing to me... I already had 
various notions of what an "index" is (e.g. the index of a book -- the same 
word actually exists in German; or more generally an index in computer science, 
as a kind of loopup table, etc.), and to this day, have a hard time 
consolidating this with the way git uses it. For me, it is yet another, seeming 
completely unrelated, meaning of the word "index" I had to memorize. Hey, just 
take a look at Wiki page <http://en.wikipedia.org/wiki/Index> for the many 
dozens of meanings associated to this word. Ugh. And worst of it, I am actually 
not quite sure on which of the meanings listed there "the index" as used by git 
is based... I.e. I don't even see a helpful analogy that would make it easier 
to understand the choice of name. 

In summary: For me as a non-native speaker, "index" feels like about the worst 
possible choice (well, you could have called it the "file" or "thing", that 
might have been worse ;-). While staging area turned out to be surprisingly 
good, *precisely* because I was unfamiliar with it. 

So, while "staging area" might not be perfect, it seems good enough to me. If 
this matter had indeed been discussed here for years, and no better suggestions 
has come up, then perhaps it is time to end the search for the (possibly 
non-existent) perfect solution, and instead do the pragmatic?

> The index can also be thought of "like the buffer cache, where new
> contents of files are kept before they are committed to disk
> platter."  At least, non-native speaker with CS background would
> understand that, much better than "the index" (no, I am not saying
> that we should call it "the cache"; I am just saying "the index" is
> not a good word, but we may need to find a better word than "the
> staging area").

Huh? As a non-native speaker with CS background, this actually leaves me more 
confused than I was before. I think about "the staging area", and I don't see 
how this is anything like an "index" (in any of the meaning I see on 
<http://en.wikipedia.org/wiki/Index>). I can vaguely recognize a faint 
similarity to a "cache", and yet more relation to a "buffer", but in the end, 
none of these strike me as particularly illustrative.

For that matter, I never really understood of why I had to do "git diff 
--cached", I simply learned it by rote. 

On the other hand, I feel that after understanding what the staging area is, 
then writing "git diff --staged" is very logical and simple to memorize.


Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to