From: Jonathan Nieder <jrnieder@gmail.com>
To: Goswin von Brederlow <goswin-v-b@web.de>
Cc: "Adam Brewster" <adambrewster@gmail.com>,
"Nicolas Pitre" <nico@fluxnic.net>,
git@vger.kernel.org, "Tor Arntsen" <tor@spacetec.no>,
"Tomas Carnecky" <tom@dbservice.com>,
"Björn Steinbrink" <B.Steinbrink@gmx.de>
Subject: The index (Re: Please default to 'commit -a' when no changes were added)
Date: Fri, 23 Apr 2010 05:39:19 -0500 [thread overview]
Message-ID: <20100423103919.GA19811@progeny.tock> (raw)
In-Reply-To: <87iq7ittq6.fsf@frosties.localdomain>
Goswin von Brederlow wrote:
> Other RCS use an index of files they track. Git uses an index of patch
> chunks to commit. Same name, totaly different concept.
What you say is correct in terms of how some people use the tools.
But underneath, the index is a cache that tracks the content of all
files. To make the index not match the work tree is to deliberately
let it go stale (or to cheat and poison it, or whatever).
I am making an assumption about other version control systems and it
is probably wrong for some. Here is the logic: suppose I
1. Make some changes to files.
2. Invoke “vcs commit”
3. Pull out the power plug.
What happens? If the version control system is sane, then either the
entire commit takes place or nothing visible happens; because
otherwise, the result is that I screwed everyone over. The easiest
way to implement this is to make “vcs commit” two steps:
1. Prepare the proposed changes in a staging area.
2. Atomically commit them.
Traditionally, “atomically” means “with a lock, on the remote server
which has a steady power supply”.
In particular, the index I am talking about tends to be on the _remote_
machine. Making it local leads to a lot of improvements.
Early in the design of git’s user interface, it took some time to
figure out how visible to make the index [1]. Personally I am happier
with the modern approach of letting people dirty the index if they
want to, but if you believe that is wrong, maybe you would like to
look at the Cogito scripts for inspiration [2]. There are still many
lessons to learn from them, I suspect. More importantly, it might be
fun or interesting.
Hopefully that is a little clearer.
Jonathan
[1] http://thread.gmane.org/gmane.comp.version-control.git/780/focus=918
As you can see, cogito, the most widely used front-end in early
history, did hide the index from the user.
[2] http://git.or.cz/cogito/
(warning: they have not been maintained for a while)
next prev parent reply other threads:[~2010-04-23 10:41 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20100422151037.2310.2429.reportbug@frosties.localdomain>
2010-04-22 15:58 ` Please default to 'commit -a' when no changes were added Jonathan Nieder
2010-04-22 18:37 ` Goswin von Brederlow
2010-04-22 19:03 ` Nicolas Pitre
2010-04-22 19:08 ` Sverre Rabbelier
2010-04-22 20:37 ` Goswin von Brederlow
2010-04-22 21:25 ` Nicolas Pitre
2010-04-23 9:03 ` Goswin von Brederlow
2010-04-23 9:31 ` Miles Bader
2010-04-23 16:01 ` Wincent Colaiuta
2010-04-23 20:17 ` Goswin von Brederlow
2010-04-23 20:26 ` Michael Witten
2010-04-23 20:33 ` Daniel Grace
2010-04-23 21:01 ` Nicolas Pitre
2010-04-24 21:15 ` Goswin von Brederlow
2010-04-24 21:40 ` Jonathan Nieder
2010-04-24 22:08 ` Goswin von Brederlow
2010-04-24 22:42 ` Jonathan Nieder
2010-04-25 2:47 ` Miles Bader
2010-04-25 3:33 ` Jonathan Nieder
2010-04-23 22:35 ` Matthias Andree
2010-04-24 1:43 ` Junio C Hamano
2010-04-22 21:28 ` Junio C Hamano
2010-04-22 21:40 ` Matthieu Moy
2010-04-22 21:57 ` Michael Witten
2010-04-23 9:09 ` Goswin von Brederlow
2010-04-23 9:22 ` Tomas Carnecky
2010-04-23 17:00 ` Michael Witten
2010-04-23 9:27 ` Matthieu Moy
2010-04-23 9:35 ` Tor Arntsen
2010-04-22 21:48 ` Adam Brewster
2010-04-22 22:27 ` Jonathan Nieder
2010-04-23 9:15 ` Goswin von Brederlow
2010-04-23 10:39 ` Jonathan Nieder [this message]
2010-04-22 22:38 ` Jon Seymour
2010-04-23 0:04 ` Adam Brewster
2010-04-23 9:25 ` Goswin von Brederlow
2010-04-23 9:14 ` Goswin von Brederlow
2010-04-23 9:39 ` Björn Steinbrink
2010-04-23 11:44 ` Sergei Organov
2010-04-23 11:57 ` Sverre Rabbelier
2010-04-23 12:20 ` Sergei Organov
2010-04-23 14:23 ` Goswin von Brederlow
2010-04-23 18:59 ` Matthias Andree
2010-04-23 19:34 ` Michael Witten
2010-04-23 22:18 ` Matthias Andree
2010-04-23 22:25 ` Eric Raymond
2010-04-23 23:38 ` Michael Witten
2010-04-24 4:38 ` Eric Raymond
2010-04-24 9:05 ` Michael Witten
2010-04-24 9:09 ` Eric Raymond
2010-04-23 23:26 ` Michael Witten
2010-04-24 13:26 ` Tor Arntsen
2010-04-24 9:40 ` 'commit -a' safety (was: Re: Please default to 'commit -a' when no changes were added) Jakub Narebski
2010-04-24 9:56 ` 'commit -a' safety Miles Bader
2010-04-24 10:05 ` Andreas Schwab
2010-04-24 10:26 ` Jakub Narebski
2010-04-24 13:29 ` Miles Bader
2010-04-24 18:23 ` Nicolas Pitre
2010-04-25 0:16 ` Jakub Narebski
2010-04-25 2:43 ` Miles Bader
2010-04-24 11:10 ` 'commit -a' safety (was: Re: Please default to 'commit -a' when no changes were added) Wincent Colaiuta
2010-04-24 11:48 ` 'commit -a' safety Jakub Narebski
2010-04-24 14:28 ` Joey Hess
2010-04-24 15:11 ` Mike Hommey
2010-04-24 16:42 ` 'commit -a' safety (was: Re: Please default to 'commit -a' when no changes were added) Petr Baudis
2010-04-24 16:59 ` Bug#578764: " Wincent Colaiuta
2010-04-24 17:47 ` Petr Baudis
2010-04-24 18:35 ` Nicolas Pitre
2010-04-24 18:54 ` Petr Baudis
2010-04-24 19:09 ` Nicolas Pitre
2010-04-24 19:35 ` Jacob Helwig
2010-04-24 19:44 ` Nicolas Pitre
2010-04-24 19:57 ` Jacob Helwig
2010-04-24 23:47 ` 'commit -a' safety Jakub Narebski
2010-04-25 1:13 ` Junio C Hamano
2010-04-25 8:01 ` Jakub Narebski
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=20100423103919.GA19811@progeny.tock \
--to=jrnieder@gmail.com \
--cc=B.Steinbrink@gmx.de \
--cc=adambrewster@gmail.com \
--cc=git@vger.kernel.org \
--cc=goswin-v-b@web.de \
--cc=nico@fluxnic.net \
--cc=tom@dbservice.com \
--cc=tor@spacetec.no \
/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).