Retire support for old environment variables.

We have deprecated the old environment variable names for quite a
while and now it's time to remove them.  Gone are:

    SHA1_FILE_DIRECTORIES AUTHOR_DATE AUTHOR_EMAIL AUTHOR_NAME
    COMMIT_AUTHOR_EMAIL COMMIT_AUTHOR_NAME SHA1_FILE_DIRECTORY

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2005-09-09 14:48:54 -07:00
parent 44ec46a9df
commit a9ab586a5d
13 changed files with 16 additions and 318 deletions

View File

@ -124,7 +124,7 @@ DIFF_OBJS = \
LIB_OBJS = \
blob.o commit.o connect.o count-delta.o csum-file.o \
date.o diff-delta.o entry.o gitenv.o ident.o index.o \
date.o diff-delta.o entry.o ident.o index.o \
object.o pack-check.o patch-delta.o path.o pkt-line.o \
quote.o read-cache.o refs.o rev-cache.o run-command.o \
server-info.o setup.o sha1_file.o sha1_name.o strbuf.o \

11
cache.h
View File

@ -53,17 +53,6 @@
*/
#define DEFAULT_GIT_PORT 9418
/*
* Environment variables transition.
* We accept older names for now but warn.
*/
extern char *gitenv_bc(const char *);
#ifdef __GNUC__
#define gitenv(e) (getenv(e) ? : gitenv_bc(e))
#else
#define gitenv(e) (getenv(e) ? getenv(e) : gitenv_bc(e))
#endif
/*
* Basic data structures for the directory cache
*/

4
diff.c
View File

@ -32,10 +32,10 @@ static const char *external_diff(void)
*
* GIT_DIFF_OPTS="-c";
*/
external_diff_cmd = gitenv("GIT_EXTERNAL_DIFF");
external_diff_cmd = getenv("GIT_EXTERNAL_DIFF");
/* In case external diff fails... */
env_diff_opts = gitenv("GIT_DIFF_OPTS");
env_diff_opts = getenv("GIT_DIFF_OPTS");
if (env_diff_opts) diff_opts = env_diff_opts;
done_preparing = 1;

View File

@ -392,7 +392,7 @@ static int fsck_head_link(void)
static char path[PATH_MAX], link[PATH_MAX];
const char *git_dir;
git_dir = gitenv(GIT_DIR_ENVIRONMENT);
git_dir = getenv(GIT_DIR_ENVIRONMENT);
if (!git_dir) git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
snprintf(path, sizeof(path), "%s/HEAD", git_dir);

View File

@ -1,75 +0,0 @@
/*
* Copyright (C) 2005 Junio C Hamano
*/
#include "cache.h"
/*
* This array must be sorted by its canonical name, because
* we do look-up by binary search.
*/
static struct backward_compatible_env {
const char *canonical;
const char *old;
} bc_name[] = {
{ "GIT_ALTERNATE_OBJECT_DIRECTORIES", "SHA1_FILE_DIRECTORIES" },
{ "GIT_AUTHOR_DATE", "AUTHOR_DATE" },
{ "GIT_AUTHOR_EMAIL", "AUTHOR_EMAIL" },
{ "GIT_AUTHOR_NAME", "AUTHOR_NAME" },
{ "GIT_COMMITTER_EMAIL", "COMMIT_AUTHOR_EMAIL" },
{ "GIT_COMMITTER_NAME", "COMMIT_AUTHOR_NAME" },
{ "GIT_OBJECT_DIRECTORY", "SHA1_FILE_DIRECTORY" },
};
static void warn_old_environment(int pos)
{
int i;
static int warned = 0;
if (warned)
return;
warned = 1;
fprintf(stderr,
"warning: Attempting to use %s\n",
bc_name[pos].old);
fprintf(stderr,
"warning: GIT environment variables have been renamed.\n"
"warning: Please adjust your scripts and environment.\n");
for (i = 0; i < sizeof(bc_name) / sizeof(bc_name[0]); i++) {
/* warning is needed only when old name is there and
* new name is not.
*/
if (!getenv(bc_name[i].canonical) && getenv(bc_name[i].old))
fprintf(stderr, "warning: old %s => new %s\n",
bc_name[i].old, bc_name[i].canonical);
}
}
char *gitenv_bc(const char *e)
{
int first, last;
char *val = getenv(e);
if (val)
die("gitenv_bc called on existing %s; fix the caller.", e);
first = 0;
last = sizeof(bc_name) / sizeof(bc_name[0]);
while (last > first) {
int next = (last + first) >> 1;
int cmp = strcmp(e, bc_name[next].canonical);
if (!cmp) {
val = getenv(bc_name[next].old);
/* If the user has only old name, warn.
* otherwise stay silent.
*/
if (val)
warn_old_environment(next);
return val;
}
if (cmp < 0) {
last = next;
continue;
}
first = next+1;
}
return NULL;
}

View File

@ -355,7 +355,7 @@ int main(int argc, char **argv)
curl = curl_easy_init();
curl_ssl_verify = gitenv("GIT_SSL_NO_VERIFY") ? 0 : 1;
curl_ssl_verify = getenv("GIT_SSL_NO_VERIFY") ? 0 : 1;
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, curl_ssl_verify);
#if LIBCURL_VERSION_NUM >= 0x070907
curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);

View File

@ -150,10 +150,10 @@ char *get_ident(const char *name, const char *email, const char *date_str)
char *git_author_info(void)
{
return get_ident(gitenv("GIT_AUTHOR_NAME"), gitenv("GIT_AUTHOR_EMAIL"), gitenv("GIT_AUTHOR_DATE"));
return get_ident(getenv("GIT_AUTHOR_NAME"), getenv("GIT_AUTHOR_EMAIL"), getenv("GIT_AUTHOR_DATE"));
}
char *git_committer_info(void)
{
return get_ident(gitenv("GIT_COMMITTER_NAME"), gitenv("GIT_COMMITTER_EMAIL"), gitenv("GIT_COMMITTER_DATE"));
return get_ident(getenv("GIT_COMMITTER_NAME"), getenv("GIT_COMMITTER_EMAIL"), getenv("GIT_COMMITTER_DATE"));
}

View File

@ -226,7 +226,7 @@ int main(int argc, char **argv)
/*
* Set up the default .git directory contents
*/
git_dir = gitenv(GIT_DIR_ENVIRONMENT);
git_dir = getenv(GIT_DIR_ENVIRONMENT);
if (!git_dir) {
git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
fprintf(stderr, "defaulting to local storage area\n");

2
path.c
View File

@ -45,7 +45,7 @@ char *git_path(const char *fmt, ...)
va_list args;
unsigned len;
git_dir = gitenv(GIT_DIR_ENVIRONMENT);
git_dir = getenv(GIT_DIR_ENVIRONMENT);
if (!git_dir) git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
len = strlen(git_dir);
if (len > PATH_MAX-100)

View File

@ -87,7 +87,7 @@ static int is_toplevel_directory(void)
return !lstat(".git/HEAD", &st) &&
S_ISLNK(st.st_mode) &&
!access(".git/refs/", X_OK) &&
(gitenv(DB_ENVIRONMENT) || !access(".git/objects/", X_OK));
(getenv(DB_ENVIRONMENT) || !access(".git/objects/", X_OK));
}
const char *setup_git_directory(void)
@ -99,7 +99,7 @@ const char *setup_git_directory(void)
* If GIT_DIR is set explicitly, we're not going
* to do any discovery
*/
if (gitenv(GIT_DIR_ENVIRONMENT))
if (getenv(GIT_DIR_ENVIRONMENT))
return NULL;
if (!getcwd(cwd, sizeof(cwd)) || cwd[0] != '/')

View File

@ -50,22 +50,22 @@ static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir,
*git_graft_file;
static void setup_git_env(void)
{
git_dir = gitenv(GIT_DIR_ENVIRONMENT);
git_dir = getenv(GIT_DIR_ENVIRONMENT);
if (!git_dir)
git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
git_object_dir = gitenv(DB_ENVIRONMENT);
git_object_dir = getenv(DB_ENVIRONMENT);
if (!git_object_dir) {
git_object_dir = xmalloc(strlen(git_dir) + 9);
sprintf(git_object_dir, "%s/objects", git_dir);
}
git_refs_dir = xmalloc(strlen(git_dir) + 6);
sprintf(git_refs_dir, "%s/refs", git_dir);
git_index_file = gitenv(INDEX_ENVIRONMENT);
git_index_file = getenv(INDEX_ENVIRONMENT);
if (!git_index_file) {
git_index_file = xmalloc(strlen(git_dir) + 7);
sprintf(git_index_file, "%s/index", git_dir);
}
git_graft_file = gitenv(GRAFT_ENVIRONMENT);
git_graft_file = getenv(GRAFT_ENVIRONMENT);
if (!git_graft_file)
git_graft_file = strdup(git_path("info/grafts"));
}
@ -285,7 +285,7 @@ void prepare_alt_odb(void)
struct stat st;
char *alt;
alt = gitenv(ALTERNATE_DB_ENVIRONMENT);
alt = getenv(ALTERNATE_DB_ENVIRONMENT);
if (!alt) alt = "";
sprintf(path, "%s/info/alternates", get_object_directory());

View File

@ -1,84 +0,0 @@
#!/bin/sh
#
# Copyright (c) 2005 Junio C Hamano
#
test_description='general environment name warning test.
This test makes sure that use of deprecated environment variables
trigger the warnings from gitenv().'
env_vars='GIT_AUTHOR_DATE:AUTHOR_DATE
GIT_AUTHOR_EMAIL:AUTHOR_EMAIL
GIT_AUTHOR_NAME:AUTHOR_NAME
GIT_COMMITTER_EMAIL:COMMIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME:COMMIT_AUTHOR_NAME
GIT_ALTERNATE_OBJECT_DIRECTORIES:SHA1_FILE_DIRECTORIES
GIT_OBJECT_DIRECTORY:SHA1_FILE_DIRECTORY
'
. ./test-lib.sh
export_them () {
for ev in $env_vars
do
new=$(expr "$ev" : '\(.*\):')
old=$(expr "$ev" : '.*:\(.*\)')
# Build and eval the following:
# case "${VAR+set}" in set) export VAR;; esac
evstr='case "${'$new'+set}" in set) export '$new';; esac'
eval "$evstr"
evstr='case "${'$old'+set}" in set) export '$old';; esac'
eval "$evstr"
done
}
date >path0
git-update-index --add path0
tree=$(git-write-tree)
AUTHOR_DATE='Wed May 11 23:55:18 2005'
AUTHOR_EMAIL='author@example.xz'
AUTHOR_NAME='A U Thor'
COMMIT_AUTHOR_EMAIL='author@example.xz'
COMMIT_AUTHOR_NAME='A U Thor'
SHA1_FILE_DIRECTORY=.git/objects
export_them
echo 'foo' | git-commit-tree $tree >/dev/null 2>errmsg
cat >expected-err <<\EOF
warning: Attempting to use SHA1_FILE_DIRECTORY
warning: GIT environment variables have been renamed.
warning: Please adjust your scripts and environment.
warning: old AUTHOR_DATE => new GIT_AUTHOR_DATE
warning: old AUTHOR_EMAIL => new GIT_AUTHOR_EMAIL
warning: old AUTHOR_NAME => new GIT_AUTHOR_NAME
warning: old COMMIT_AUTHOR_EMAIL => new GIT_COMMITTER_EMAIL
warning: old COMMIT_AUTHOR_NAME => new GIT_COMMITTER_NAME
warning: old SHA1_FILE_DIRECTORY => new GIT_OBJECT_DIRECTORY
EOF
sed -ne '/^warning: /p' <errmsg >generated-err
test_expect_success \
'using old names should issue warnings.' \
'cmp generated-err expected-err'
for ev in $env_vars
do
new=$(expr "$ev" : '\(.*\):')
old=$(expr "$ev" : '.*:\(.*\)')
# Build and eval the following:
# NEWENV=$OLDENV
evstr="$new=\$$old"
eval "$evstr"
done
export_them
echo 'foo' | git-commit-tree $tree >/dev/null 2>errmsg
sed -ne '/^warning: /p' <errmsg >generated-err
test_expect_success \
'using old names but having new names should not issue warnings.' \
'cmp generated-err /dev/null'
test_done

View File

@ -1,132 +0,0 @@
#!/bin/sh
#
# Copyright (c) 2005 Junio C Hamano
#
test_description='Using new and old environment names.
This test makes sure that use of deprecated environment variables
still works, using both new and old names makes new one take precedence,
and GIT_DIR and GIT_ALTERNATE_OBJECT_DIRECTORIES mechanism works.'
env_vars='GIT_AUTHOR_DATE:AUTHOR_DATE
GIT_AUTHOR_EMAIL:AUTHOR_EMAIL
GIT_AUTHOR_NAME:AUTHOR_NAME
GIT_COMMITTER_EMAIL:COMMIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME:COMMIT_AUTHOR_NAME
GIT_ALTERNATE_OBJECT_DIRECTORIES:SHA1_FILE_DIRECTORIES
GIT_OBJECT_DIRECTORY:SHA1_FILE_DIRECTORY
'
. ./test-lib.sh
export_them () {
for ev in $env_vars
do
new=$(expr "$ev" : '\(.*\):')
old=$(expr "$ev" : '.*:\(.*\)')
# Build and eval the following:
# case "${VAR+set}" in set) export VAR;; esac
evstr='case "${'$new'+set}" in set) export '$new';; esac'
eval "$evstr"
evstr='case "${'$old'+set}" in set) export '$old';; esac'
eval "$evstr"
done
}
SHA1_FILE_DIRECTORY=.svn/objects ;# whoa
export SHA1_FILE_DIRECTORY
rm -fr .git
mkdir .svn
test_expect_success \
'using SHA1_FILE_DIRECTORY in git-init-db' \
'git-init-db && test -d .svn/objects/cb'
unset SHA1_FILE_DIRECTORY
GIT_DIR=.svn
export GIT_DIR
rm -fr .git .svn
mkdir .svn
test_expect_success \
'using GIT_DIR in git-init-db' \
'git-init-db && test -d .svn/objects/cb'
date >path0
test_expect_success \
'using GIT_DIR in git-update-index' \
'git-update-index --add path0 && test -f .svn/index'
sedScript='s|\(..\)|.svn/objects/\1/|'
test_expect_success \
'using GIT_DIR in git-write-tree' \
'tree=$(git-write-tree) &&
test -f $(echo "$tree" | sed -e "$sedScript")'
AUTHOR_DATE='Sat May 14 00:00:00 2005 -0000'
AUTHOR_EMAIL='author@example.xz'
AUTHOR_NAME='A U Thor'
COMMIT_AUTHOR_EMAIL='author@example.xz'
COMMIT_AUTHOR_NAME='A U Thor'
export_them
test_expect_success \
'using GIT_DIR and old variable names in git-commit-tree' \
'commit=$(echo foo | git-commit-tree $tree) &&
test -f $(echo "$commit" | sed -e "$sedScript")'
test_expect_success \
'using GIT_DIR in git-cat-file' \
'git-cat-file commit $commit >current'
cat >expected <<\EOF
author A U Thor <author@example.xz>
committer A U Thor <author@example.xz>
EOF
test_expect_success \
'verify old AUTHOR variables were used correctly in commit' \
'sed -ne '\''/^\(author\)/s|>.*|>|p'\'' -e'\''/^\(committer\)/s|>.*|>|p'\''\ current > out && cmp out expected'
unset GIT_DIR
test_expect_success \
'git-init-db without GIT_DIR' \
'git-init-db && test -d .git && test -d .git/objects/ef'
SHA1_FILE_DIRECTORIES=.svn/objects
export SHA1_FILE_DIRECTORIES
test_expect_success \
'using SHA1_FILE_DIRECTORIES with git-ls-tree' \
'git-ls-tree $commit && git-ls-tree $tree'
GIT_AUTHOR_DATE='Sat May 14 12:00:00 2005 -0000'
GIT_AUTHOR_EMAIL='rohtua@example.xz'
GIT_AUTHOR_NAME='R O Htua'
GIT_COMMITTER_EMAIL='rohtua@example.xz'
GIT_COMMITTER_NAME='R O Htua'
export_them
sedScript='s|\(..\)|.git/objects/\1/|'
test_expect_success \
'using new author variables with git-commit-tree' \
'commit2=$(echo foo | git-commit-tree $tree) &&
test -f $(echo "$commit2" | sed -e "$sedScript")'
GIT_ALTERNATE_OBJECT_DIRECTORIES=.git/objects
GIT_DIR=nowhere
export GIT_DIR GIT_ALTERNATE_OBJECT_DIRECTORIES
test_expect_success \
'git-cat-file with GIT_DIR and GIT_ALTERNATE_OBJECT_DIRECTORIES' \
'git-cat-file commit $commit2 >current'
cat >expected <<\EOF
author R O Htua <rohtua@example.xz>
committer R O Htua <rohtua@example.xz>
EOF
test_expect_success \
'verify new AUTHOR variables were used correctly in commit.' \
'sed -ne '\''/^\(author\)/s|>.*|>|p'\'' -e'\''/^\(committer\)/s|>.*|>|p'\''\ current > out && cmp out expected'
test_done