Add config variable core.symrefsonly
This allows you to force git to avoid symlinks for refs. Just add something like [core] symrefsonly = true to .git/config. Don´t forget to "git checkout your_branch", or it does not do anything... Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
4a4e6fd74f
commit
f8348be3be
1
cache.h
1
cache.h
@ -179,6 +179,7 @@ extern int commit_index_file(struct cache_file *);
|
|||||||
extern void rollback_index_file(struct cache_file *);
|
extern void rollback_index_file(struct cache_file *);
|
||||||
|
|
||||||
extern int trust_executable_bit;
|
extern int trust_executable_bit;
|
||||||
|
extern int only_use_symrefs;
|
||||||
|
|
||||||
#define MTIME_CHANGED 0x0001
|
#define MTIME_CHANGED 0x0001
|
||||||
#define CTIME_CHANGED 0x0002
|
#define CTIME_CHANGED 0x0002
|
||||||
|
5
config.c
5
config.c
@ -214,6 +214,11 @@ int git_default_config(const char *var, const char *value)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strcmp(var, "core.symrefsonly")) {
|
||||||
|
only_use_symrefs = git_config_bool(var, value);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp(var, "user.name")) {
|
if (!strcmp(var, "user.name")) {
|
||||||
strncpy(git_default_name, value, sizeof(git_default_name));
|
strncpy(git_default_name, value, sizeof(git_default_name));
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
char git_default_email[MAX_GITNAME];
|
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 only_use_symrefs = 0;
|
||||||
|
|
||||||
static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir,
|
static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir,
|
||||||
*git_graft_file;
|
*git_graft_file;
|
||||||
|
10
refs.c
10
refs.c
@ -121,10 +121,12 @@ int create_symref(const char *git_HEAD, const char *refs_heads_master)
|
|||||||
int fd, len, written;
|
int fd, len, written;
|
||||||
|
|
||||||
#if USE_SYMLINK_HEAD
|
#if USE_SYMLINK_HEAD
|
||||||
unlink(git_HEAD);
|
if (!only_use_symrefs) {
|
||||||
if (!symlink(refs_heads_master, git_HEAD))
|
unlink(git_HEAD);
|
||||||
return 0;
|
if (!symlink(refs_heads_master, git_HEAD))
|
||||||
fprintf(stderr, "no symlink - falling back to symbolic ref\n");
|
return 0;
|
||||||
|
fprintf(stderr, "no symlink - falling back to symbolic ref\n");
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master);
|
len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master);
|
||||||
|
@ -20,6 +20,7 @@ static void check_symref(const char *HEAD)
|
|||||||
int main(int argc, const char **argv)
|
int main(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
setup_git_directory();
|
setup_git_directory();
|
||||||
|
git_config(git_default_config);
|
||||||
switch (argc) {
|
switch (argc) {
|
||||||
case 2:
|
case 2:
|
||||||
check_symref(argv[1]);
|
check_symref(argv[1]);
|
||||||
|
Loading…
Reference in New Issue
Block a user