git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Officially start moving to the term 'staging area'

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Sep 8, 2013, 01:33 UTC
Message-ID
<CAMP44s1j+ayX=cy7QJ7WXdiD9P1M6n7NgNk=oGuv1XC=dqMXVA@mail.gmail.com>
In-Reply-To
<CAM9Z-nmLQUrJk73pi_0a1_ccGMnqU_t=uOZze622_GEtWfMvQQ@mail.gmail.com>
On Tue, Sep 3, 2013 at 11:23 PM, Drew Northup <n1xim.email@gmail.com> wrote:
Show 17 quoted lines
> On Fri, Aug 30, 2013 at 1:16 AM, Piotr Krukowiecki
> <piotr.krukowiecki@gmail.com> wrote:
>> Drew Northup <n1xim.email@gmail.com> napisał:
>>>I agree with Junio. This effort is better spent making the
>>>documentation clearer and more succinct. The reality is that a user
>>>needs to build a model in their mind of what they are doing which maps
>>>enough (completely is not required) to what is actually going on to
>>>get work done. If the documentation or the instruction is getting in
>>>the way of that in the name of simplifying the presentation then the
>>>presentation is wrong.
>>
>> Why do you think the "stage"  model do not map enough?
>
> When I try to explain how to use git to complete VCS newbies in
> general they find the "snapshot" model more mentally sensible than the
> "staging area" model. (In other words, the user doesn't care how, if,
> or where the program is maintaining state.)

The snapshot concept is totally orthogonal from the staging area concept. Git works in snapshots, which are frozen images of how the content tree was at a certain point in time; IOW; a commit.

_How_ that snapshot is created is an entirely different topic, and the staging area is a tool to create the desired snapshots. The user might decide to never use that tool (i.e. always run git commit -a), but the concept of snapshots remain. So, clearly, one concept has absolutely nothing to do with the other.

Show 21 quoted lines
>>>We add content snapshots to the index of content (creating
>>>"temporary"--they will be garbage collected eventually if they become
>>>orphans--objects into the store at the same time). We build commits
>>>from those snapshots (in whole or in part, typically only using the
>>>most recent snapshots of new things added to the index) and save those
>>>in the object store with the content and tree objects. Sometimes we
>>>create tag objects to record something special about commits, trees,
>>>and content blobs.
>>
>> The above can be rewritten to use the 'staging area' concept just
>> fine. And I don't think you should say to inexperienced users things
>> like 'tree objects'.
>
> At what time did I say specifically what I tell newbies? I did not do
> so. Please refrain from making that sort of assumption. In any case,
> no, you cannot rewrite that to use "staging area" in place of "index"
> without introducing a different mental model and new concept into the
> text (a model which happens to be incomplete, but not incorrect). That
> minimalist summary was written for the technically-minded people here
> on this list debating the issue of communications with the users--the
> bane of all programmers' lives.

You are mixing useful mental models for the majority of Git users, and technical implementation details.

You say what you wrote is for technically-minded people, and those people are not relevant for this discussion, because we are not talking about the implementation details, we are talking about the vast majority of Git users, so stop with the red herrings.

The "mental model" of staging area is an area that is used for preparation for something, and that's *exactly* what the vast majority of users think of the index as a high-level concept.

> Again, let us keep our argument focused on communications with users.
> Renaming core objects is just going to sow confusion without fixing
> the user communication issue. That's what I meant the first time I
> wrote what I quote directly above and I'm sticking to it.

The vast majority of Git users have absolutely no clue about what's the index. That's why online documentation uses the term "staging area", so in fact we would be reducing confusion, by a lot.

-- 
Felipe Contreras
Previous: Felipe ContrerasNext: Philip Oakley
Message 40 of 58 in “Officially start moving to the term 'staging area'”
  1. Felipe ContrerasAug 29, 2013
  2. 0/2 stage: proper 'stage' commandFelipe Contreras, Aug 29, 2013
  3. 1/2 Add proper 'stage' commandFelipe Contreras, Aug 29, 2013
  4. Matthieu MoyAug 29, 2013
  5. Felipe ContrerasAug 29, 2013
  6. 2/2 stage: add edit commandFelipe Contreras, Aug 29, 2013
  7. Matthieu MoyAug 29, 2013
  8. Felipe ContrerasAug 29, 2013
  9. 0/9 Add --stage and --work optionsFelipe Contreras, Aug 29, 2013
  10. 1/9 diff: document --stagedFelipe Contreras, Aug 29, 2013
  11. 2/9 grep: add --staged optionFelipe Contreras, Aug 29, 2013
  12. 3/9 rm: add --staged optionFelipe Contreras, Aug 29, 2013
  13. 4/9 stash: add --stage option to saveFelipe Contreras, Aug 29, 2013
  14. Matthieu MoyAug 29, 2013
  15. 5/9 stash: add --stage to pop and applyFelipe Contreras, Aug 29, 2013
  16. 6/9 submodule: add --staged optionsFelipe Contreras, Aug 29, 2013
  17. 7/9 apply: add --stage optionFelipe Contreras, Aug 29, 2013
  18. 8/9 apply: add --work, --no-work optionsFelipe Contreras, Aug 29, 2013
  19. 9/9 completion: update --staged optionsFelipe Contreras, Aug 29, 2013
  20. 0/3 reset: refactor into --stage and --workFelipe Contreras, Aug 29, 2013
  21. 1/3 reset: add --stage and --work optionsFelipe Contreras, Aug 29, 2013
  22. 2/3 reset: allow --keep with --stageFelipe Contreras, Aug 29, 2013
  23. 3/3 completion: update 'git reset' new stage optionsFelipe Contreras, Aug 29, 2013
  24. Junio C HamanoAug 29, 2013
  25. Felipe ContrerasAug 29, 2013
  26. Felipe ContrerasAug 30, 2013
  27. Felipe ContrerasAug 30, 2013
  28. Felipe ContrerasAug 30, 2013
  29. Felipe ContrerasAug 30, 2013
  30. Drew NorthupAug 29, 2013
  31. Felipe ContrerasAug 29, 2013
  32. Drew NorthupSep 4, 2013
  33. Felipe ContrerasSep 8, 2013
  34. Piotr KrukowieckiAug 30, 2013
  35. Drew NorthupSep 4, 2013
  36. Piotr KrukowieckiSep 4, 2013
  37. Drew NorthupSep 4, 2013
  38. Felipe ContrerasSep 8, 2013
  39. Felipe ContrerasSep 8, 2013
  40. Felipe ContrerasSep 8, 2013
  41. Philip OakleySep 8, 2013
  42. Felipe ContrerasSep 8, 2013
  43. Matthieu MoyAug 29, 2013
  44. Felipe ContrerasAug 29, 2013
  45. Matthieu MoyAug 29, 2013
  46. Matthieu MoyAug 29, 2013
  47. René ScharfeAug 29, 2013
  48. Felipe ContrerasAug 29, 2013
  49. René ScharfeAug 31, 2013
  50. Felipe ContrerasAug 31, 2013
  51. David AguilarSep 1, 2013
  52. Matthieu MoyAug 29, 2013
  53. William SwansonSep 4, 2013
  54. Ping YinSep 6, 2013
  55. Hilco WijbengaSep 6, 2013
  56. Felipe ContrerasSep 8, 2013
  57. Ramkumar RamachandraSep 9, 2013
  58. Felipe ContrerasSep 9, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.