git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Felipe Contreras <felipe.contreras@gmail.com>
To: Philip Oakley <philipoakley@iee.org>
Cc: Drew Northup <n1xim.email@gmail.com>,
	Piotr Krukowiecki <piotr.krukowiecki@gmail.com>,
	Junio C Hamano <gitster@pobox.com>,
	git@vger.kernel.org,
	Piotr Krukowiecki <piotr.krukowiecki.news@gmail.com>,
	Jay Soffian <jaysoffian@gmail.com>, Miles Bader <miles@gnu.org>,
	Jonathan Nieder <jrnieder@gmail.com>,
	Matthieu Moy <matthieu.moy@grenoble-inp.fr>,
	Ramkumar Ramachandra <artagnon@gmail.com>,
	Scott Chacon <schacon@gmail.com>
Subject: Re: Officially start moving to the term 'staging area'
Date: Sun, 8 Sep 2013 04:27:50 -0500	[thread overview]
Message-ID: <CAMP44s2ANuLL_gPrn8Od3nwQimd+JQASW4wF-xVJRF0eA+WkRA@mail.gmail.com> (raw)
In-Reply-To: <B771340AAC04409CB0EF716FE6FC1C88@PhilipOakley>

On Sun, Sep 8, 2013 at 2:49 AM, Philip Oakley <philipoakley@iee.org> wrote:
> From: "Felipe Contreras" <felipe.contreras@gmail.com>
> Sent: Sunday, September 08, 2013 2:33 AM
> [snip...]
>
>> 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.
>
>
> (I feel that) In most peoples minds the need for a staging area, and the use
> of snapshots, are related. Part of that relationship, often not noticed by
> those folks, is that they are 'orthogonal' to *each other*. Thus
> orthogonality means both un-related, and related at the same time (aren't we
> humans peculiar!). They are cleaved to each other.

Not really. You can argue that a movie is a sequence of snapshots, 24
of them per second, but most people don't think of it that way. You
can also argue that every change you do on a file is a snapshot, but
again, people don't think of it that way. Yes, you can argue that the
index is a snapshot, but it doesn't help to think of it that way. And
if you try to argue that way, then every waking moment is a snapshot,
what is NOT a snapshot?

The useful concept of snapshot is a moment in time stored for
posterity, in that sense a photo is a snapshot, a backup is a
snapshot, and a commit is a snapshot, but the staging area is not,
because it will be gone.

In fact, I just thought of another concept; a draft.

> When trying to explain staging/index I tend to use the analogy of an old
> style office (I am almost that old) where one has an In tray and an Out tray
> on one's desk (and one parked WIP for lunch time desk tidy), and the staging
> area is the basket at the end marked 'For Filing'. When the 'For Filing'
> basket is ready, one called the filing clerk to dictate the cover note and
> away it went, commited to some remote filing repository. Oh how things have
> changed ;-)

But that doesn't work well. You didn't add and remove things for the
'For Filing' as you worked, did you? Even if it did work, I don't
think it would be particularly useful to most people today.

I think a much more fitting analogy is a mail draft; you add and
remove things, change them, review, you can take as much time as you
want, and at the end of the day you can discard the whole thing.
Nothing gets done until you press 'send', which is analogous to
'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.
>>
>
> The point would be that we allow a particular snapshot to be selected, and
> that the git commit -a is but one (common) method. Commit -a is like jumping
> in the car for a quick trip to the shops, while the selective staging of
> content is like packing for a holiday.

I still don't see it. When you do 'git commit' you don't have an array
of snapshots to choose from, you just have one, and it's not
particularly static, as you can add and remove things from it, so it's
not really a snapshot of your working directory even, because you can
add things that where never there.

And then if the staging area is a snapshot, then what is a commit?
Another snapshot? Then what is the difference between the two? One is
permanent and the other temporary? Well, then saying "snapshot"
wouldn't be enough to describe the staging area, you would need to say
"preliminary snapshot", which doesn't really make sense, as those are
called previews, not snapshots. But why bother with "snapshot", we can
use "preliminary commit". But again, it sounds weird using the word
commit to something that can and is meant to change, unlike git
commits, and incidentally, unlike snapshots.

-- 
Felipe Contreras

  reply	other threads:[~2013-09-08  9:27 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-29 18:01 Officially start moving to the term 'staging area' Felipe Contreras
2013-08-29 18:09 ` [PATCH 0/2] stage: proper 'stage' command Felipe Contreras
2013-08-29 18:09   ` [PATCH 1/2] Add " Felipe Contreras
2013-08-29 18:38     ` Matthieu Moy
2013-08-29 18:47       ` Felipe Contreras
2013-08-29 18:09   ` [PATCH 2/2] stage: add edit command Felipe Contreras
2013-08-29 18:35     ` Matthieu Moy
2013-08-29 18:42       ` Felipe Contreras
2013-08-29 18:14 ` [PATCH 0/9] Add --stage and --work options Felipe Contreras
2013-08-29 18:14   ` [PATCH 1/9] diff: document --staged Felipe Contreras
2013-08-29 18:14   ` [PATCH 2/9] grep: add --staged option Felipe Contreras
2013-08-29 18:14   ` [PATCH 3/9] rm: " Felipe Contreras
2013-08-29 18:14   ` [PATCH 4/9] stash: add --stage option to save Felipe Contreras
2013-08-29 18:39     ` Matthieu Moy
2013-08-29 18:14   ` [PATCH 5/9] stash: add --stage to pop and apply Felipe Contreras
2013-08-29 18:14   ` [PATCH 6/9] submodule: add --staged options Felipe Contreras
2013-08-29 18:14   ` [PATCH 7/9] apply: add --stage option Felipe Contreras
2013-08-29 18:14   ` [PATCH 8/9] apply: add --work, --no-work options Felipe Contreras
2013-08-29 18:14   ` [PATCH 9/9] completion: update --staged options Felipe Contreras
2013-08-29 18:19 ` [PATCH 0/3] reset: refactor into --stage and --work Felipe Contreras
2013-08-29 18:19   ` [PATCH 1/3] reset: add --stage and --work options Felipe Contreras
     [not found]     ` <CALkWK0=P0xZAk95Jmw9mRUCwPQP7NmVHsuPaWNg+D2v3wP9=-w@mail.gmail.com>
2013-09-08 22:55       ` Felipe Contreras
2013-09-09  0:15         ` Ramkumar Ramachandra
2013-09-09  0:39           ` Felipe Contreras
2013-08-29 18:19   ` [PATCH 2/3] reset: allow --keep with --stage Felipe Contreras
2013-08-29 18:19   ` [PATCH 3/3] completion: update 'git reset' new stage options Felipe Contreras
2013-08-29 18:37 ` Officially start moving to the term 'staging area' Junio C Hamano
2013-08-29 19:57   ` Felipe Contreras
2013-08-30 19:11     ` Felipe Contreras
2013-08-30 20:40       ` Felipe Contreras
2013-08-30 20:42         ` Felipe Contreras
2013-08-30 20:28     ` Felipe Contreras
2013-08-29 21:55   ` Drew Northup
2013-08-29 22:10     ` Felipe Contreras
2013-09-04  4:45       ` Drew Northup
2013-09-08  2:09         ` Felipe Contreras
2013-08-30  5:16     ` Piotr Krukowiecki
2013-09-04  4:23       ` Drew Northup
2013-09-04  7:13         ` Piotr Krukowiecki
2013-09-04 13:36           ` Drew Northup
2013-09-08  1:27             ` Felipe Contreras
2013-09-08  1:18           ` Felipe Contreras
2013-09-08  1:33         ` Felipe Contreras
2013-09-08  7:49           ` Philip Oakley
2013-09-08  9:27             ` Felipe Contreras [this message]
2013-08-29 18:50 ` Matthieu Moy
2013-08-29 18:57   ` Felipe Contreras
2013-08-29 19:15     ` Matthieu Moy
2013-08-29 19:21     ` Matthieu Moy
2013-08-29 20:03     ` René Scharfe
2013-08-29 20:36       ` Felipe Contreras
2013-08-31  7:46         ` René Scharfe
2013-08-31  7:53           ` Felipe Contreras
2013-09-01  3:46           ` David Aguilar
2013-08-29 21:03     ` Matthieu Moy
2013-09-04  6:08 ` William Swanson
2013-09-06 15:45   ` Ping Yin
2013-09-06 17:14     ` Hilco Wijbenga

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAMP44s2ANuLL_gPrn8Od3nwQimd+JQASW4wF-xVJRF0eA+WkRA@mail.gmail.com \
    --to=felipe.contreras@gmail.com \
    --cc=artagnon@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jaysoffian@gmail.com \
    --cc=jrnieder@gmail.com \
    --cc=matthieu.moy@grenoble-inp.fr \
    --cc=miles@gnu.org \
    --cc=n1xim.email@gmail.com \
    --cc=philipoakley@iee.org \
    --cc=piotr.krukowiecki.news@gmail.com \
    --cc=piotr.krukowiecki@gmail.com \
    --cc=schacon@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).