core.prefersymlinkrefs: use symlinks for .git/HEAD

When inspecting a project whose build infrastructure used to
assume that .git/HEAD is a symlink ref, core.prefersymlinkrefs
in the config file of such a project would help to bisect its
history.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-05-02 00:40:24 -07:00
parent 3d990f110c
commit 9f0bb90d16
6 changed files with 17 additions and 11 deletions

View File

@ -64,9 +64,11 @@ core.ignoreStat::
slow, such as Microsoft Windows. See gitlink:git-update-index[1]. slow, such as Microsoft Windows. See gitlink:git-update-index[1].
False by default. False by default.
core.onlyUseSymrefs:: core.preferSymlinkRefs::
Always use the "symref" format instead of symbolic links for HEAD Instead of the default "symref" format for HEAD
and other symbolic reference files. True by default. and other symbolic reference files, use symbolic links.
This is sometimes needed to work with old scripts that
expect HEAD to be a symbolic link.
core.repositoryFormatVersion:: core.repositoryFormatVersion::
Internal variable identifying the repository format and layout Internal variable identifying the repository format and layout

View File

@ -28,8 +28,8 @@ all:
# #
# Define NO_SETENV if you don't have setenv in the C library. # Define NO_SETENV if you don't have setenv in the C library.
# #
# Define USE_SYMLINK_HEAD if you want .git/HEAD to be a symbolic link. # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
# Don't enable it on Windows. # Enable it on Windows. By default, symrefs are still used.
# #
# Define PPC_SHA1 environment variable when running make to make use of # Define PPC_SHA1 environment variable when running make to make use of
# a bundled SHA1 routine optimized for PowerPC. # a bundled SHA1 routine optimized for PowerPC.
@ -263,6 +263,7 @@ ifeq ($(uname_O),Cygwin)
NO_D_TYPE_IN_DIRENT = YesPlease NO_D_TYPE_IN_DIRENT = YesPlease
NO_D_INO_IN_DIRENT = YesPlease NO_D_INO_IN_DIRENT = YesPlease
NO_STRCASESTR = YesPlease NO_STRCASESTR = YesPlease
NO_SYMLINK_HEAD = YesPlease
NEEDS_LIBICONV = YesPlease NEEDS_LIBICONV = YesPlease
# There are conflicting reports about this. # There are conflicting reports about this.
# On some boxes NO_MMAP is needed, and not so elsewhere. # On some boxes NO_MMAP is needed, and not so elsewhere.
@ -386,6 +387,9 @@ endif
ifdef NO_D_INO_IN_DIRENT ifdef NO_D_INO_IN_DIRENT
ALL_CFLAGS += -DNO_D_INO_IN_DIRENT ALL_CFLAGS += -DNO_D_INO_IN_DIRENT
endif endif
ifdef NO_SYMLINK_HEAD
ALL_CFLAGS += -DNO_SYMLINK_HEAD
endif
ifdef NO_STRCASESTR ifdef NO_STRCASESTR
COMPAT_CFLAGS += -DNO_STRCASESTR COMPAT_CFLAGS += -DNO_STRCASESTR
COMPAT_OBJS += compat/strcasestr.o COMPAT_OBJS += compat/strcasestr.o

View File

@ -169,7 +169,7 @@ extern void rollback_index_file(struct cache_file *);
/* Environment bits from configuration mechanism */ /* Environment bits from configuration mechanism */
extern int trust_executable_bit; extern int trust_executable_bit;
extern int assume_unchanged; extern int assume_unchanged;
extern int only_use_symrefs; extern int prefer_symlink_refs;
extern int warn_ambiguous_refs; extern int warn_ambiguous_refs;
extern int diff_rename_limit_default; extern int diff_rename_limit_default;
extern int shared_repository; extern int shared_repository;

View File

@ -227,8 +227,8 @@ int git_default_config(const char *var, const char *value)
return 0; return 0;
} }
if (!strcmp(var, "core.symrefsonly")) { if (!strcmp(var, "core.prefersymlinkrefs")) {
only_use_symrefs = git_config_bool(var, value); prefer_symlink_refs = git_config_bool(var, value);
return 0; return 0;
} }

View File

@ -13,7 +13,7 @@ char git_default_email[MAX_GITNAME];
char git_default_name[MAX_GITNAME]; char git_default_name[MAX_GITNAME];
int trust_executable_bit = 1; int trust_executable_bit = 1;
int assume_unchanged = 0; int assume_unchanged = 0;
int only_use_symrefs = 0; int prefer_symlink_refs = 0;
int warn_ambiguous_refs = 1; int warn_ambiguous_refs = 1;
int repository_format_version = 0; int repository_format_version = 0;
char git_commit_encoding[MAX_ENCODING_LENGTH] = "utf-8"; char git_commit_encoding[MAX_ENCODING_LENGTH] = "utf-8";

4
refs.c
View File

@ -76,8 +76,8 @@ int create_symref(const char *git_HEAD, const char *refs_heads_master)
char ref[1000]; char ref[1000];
int fd, len, written; int fd, len, written;
#ifdef USE_SYMLINK_HEAD #ifndef NO_SYMLINK_HEAD
if (!only_use_symrefs) { if (prefer_symlink_refs) {
unlink(git_HEAD); unlink(git_HEAD);
if (!symlink(refs_heads_master, git_HEAD)) if (!symlink(refs_heads_master, git_HEAD))
return 0; return 0;