[PATCH 0/2] Alternate index output file
- From
Junio C Hamano <junkio@cox.net>
- Date
- Apr 1, 2007, 06:27 UTC
- Message-ID
- <7v4po04nit.fsf_-_@assigned-by-dhcp.cox.net>
- In-Reply-To
- <Pine.LNX.4.64.0703280759230.6730@woody.linux-foundation.org>
Linus Torvalds <torvalds@linux-foundation.org> writes:
Show 5 quoted lines
> (Looking at git-commit.sh, the thing I *really* think we should do is to > have a "GIT_INDEX_FILE_OUTPUT" environment variable that does locking on > the input file, but writes the result to another file: rigth now > git-commit.sh (a) wastes time copying the old index file by hand and (b) > as a result doesn't even honor any locking on it.
I've done this with an environment variable, and it passes all the tests, but I think for this application an environment is really a mistake. As expected, the change to git-commit.sh looks like:
diff --git a/git-commit.sh b/git-commit.sh
index 292cf96..20c0dc8 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -370,8 +370,8 @@ t,)
# the same way.
if test -z "$initial_commit"
then
- cp "$THIS_INDEX" "$TMP_INDEX"
- GIT_INDEX_FILE="$TMP_INDEX" git-read-tree -i -m HEAD
+ _GIT_INDEX_OUTPUT="$TMP_INDEX" \
+ GIT_INDEX_FILE="$THIS_INDEX" git-read-tree -i -m HEAD
else
rm -f "$TMP_INDEX"
fi || exitHowever, I had to say something like this in the documentation:
diff --git a/Documentation/git.txt b/Documentation/git.txt
index dceacfa..bc025d6 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -311,6 +311,15 @@ git so take care if using Cogito etc.
index file. If not specified, the default of `$GIT_DIR/index`
is used. +'_GIT_INDEX_OUTPUT'::
+ When this environment is defined, plumbing level
+ commands that update the index writes the resulting
+ index to this file, instead of the usual
+ `GIT_INDEX_FILE` (or its default `$GIT_DIR/index`).
+ This is solely meant to be used by Porcelain to drive
+ low-level plumbing. Defining this in user's environment
+ is always an error. Do not use it.
+
'GIT_OBJECT_DIRECTORY'::
If the object storage directory is specified via this
environment variable then the sha1 directories are createdIf a curious user has the environment variable set to something other than the file GIT_INDEX_FILE points at, almost everything will break. This should instead be a command line parameter to tell these plumbing commands to write the result in the named file, to prevent stupid mistakes.