Introduce GIT_DIR environment variable.

During the mailing list discussion on renaming GIT_ environment
variables, people felt that having one environment that lets the
user (or Porcelain) specify both SHA1_FILE_DIRECTORY (now
GIT_OBJECT_DIRECTORY) and GIT_INDEX_FILE for the default layout
would be handy.  This change introduces GIT_DIR environment
variable, from which the defaults for GIT_INDEX_FILE and
GIT_OBJECT_DIRECTORY are derived.  When GIT_DIR is not defined,
it defaults to ".git".  GIT_INDEX_FILE defaults to
"$GIT_DIR/index" and GIT_OBJECT_DIRECTORY defaults to
"$GIT_DIR/objects".

Special thanks for ideas and discussions go to Petr Baudis and
Daniel Barkalow.  Bugs are mine ;-)

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2005-05-09 22:57:58 -07:00
parent d19938ab60
commit 8ac069ac0a
7 changed files with 81 additions and 35 deletions

View File

@ -3,6 +3,9 @@
merge_repo=$1
merge_name=${2:-HEAD}
: ${GIT_DIR=.git}
: ${GIT_OBJECT_DIRECTORY="${SHA1_FILE_DIRECTORY-"$GIT_DIR/objects"}"}
download_one () {
# remote_path="$1" local_file="$2"
case "$1" in
@ -25,16 +28,19 @@ download_objects () {
git-local-pull -l -a "$2" "$1/"
;;
*)
rsync -avz --ignore-existing "$1/objects/." \
${SHA_FILE_DIRECTORY:-.git/objects}/.
rsync -avz --ignore-existing \
"$1/objects/." "$GIT_OBJECT_DIRECTORY"/.
;;
esac
}
echo "Getting remote $merge_name"
download_one "$merge_repo/$merge_name" .git/MERGE_HEAD
download_one "$merge_repo/$merge_name" "$GIT_DIR"/MERGE_HEAD
echo "Getting object database"
download_objects "$merge_repo" "$(cat .git/MERGE_HEAD)"
download_objects "$merge_repo" "$(cat "$GIT_DIR"/MERGE_HEAD)"
git-resolve-script "$(cat .git/HEAD)" "$(cat .git/MERGE_HEAD)" "$merge_repo"
git-resolve-script \
"$(cat "$GIT_DIR"/HEAD)" \
"$(cat "$GIT_DIR"/MERGE_HEAD)" \
"$merge_repo"