Merge branch 'maint'
* maint: git-am -i: report rewritten title git grep shows the same hit repeatedly for unmerged paths Do check_repository_format() early (re-fix) Do check_repository_format() early Add missing inside_work_tree setting in setup_git_directory_gently
This commit is contained in:
commit
27ee189163
@ -343,12 +343,12 @@ static int external_grep(struct grep_opt *opt, const char **paths, int cached)
|
|||||||
memcpy(name + 2, ce->name, len + 1);
|
memcpy(name + 2, ce->name, len + 1);
|
||||||
}
|
}
|
||||||
argv[argc++] = name;
|
argv[argc++] = name;
|
||||||
if (argc < MAXARGS)
|
if (MAXARGS <= argc) {
|
||||||
continue;
|
status = flush_grep(opt, argc, nr, argv, &kept);
|
||||||
status = flush_grep(opt, argc, nr, argv, &kept);
|
if (0 < status)
|
||||||
if (0 < status)
|
hit = 1;
|
||||||
hit = 1;
|
argc = nr + kept;
|
||||||
argc = nr + kept;
|
}
|
||||||
if (ce_stage(ce)) {
|
if (ce_stage(ce)) {
|
||||||
do {
|
do {
|
||||||
i++;
|
i++;
|
||||||
|
@ -117,6 +117,10 @@ It does not apply to blobs recorded in its index."
|
|||||||
unset GITHEAD_$his_tree
|
unset GITHEAD_$his_tree
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reread_subject () {
|
||||||
|
git stripspace <"$1" | sed -e 1q
|
||||||
|
}
|
||||||
|
|
||||||
prec=4
|
prec=4
|
||||||
dotest=.dotest sign= utf8=t keep= skip= interactive= resolved= binary=
|
dotest=.dotest sign= utf8=t keep= skip= interactive= resolved= binary=
|
||||||
resolvemsg= resume=
|
resolvemsg= resume=
|
||||||
@ -376,6 +380,7 @@ do
|
|||||||
[aA]*) action=yes interactive= ;;
|
[aA]*) action=yes interactive= ;;
|
||||||
[nN]*) action=skip ;;
|
[nN]*) action=skip ;;
|
||||||
[eE]*) git_editor "$dotest/final-commit"
|
[eE]*) git_editor "$dotest/final-commit"
|
||||||
|
SUBJECT=$(reread_subject "$dotest/final-commit")
|
||||||
action=again ;;
|
action=again ;;
|
||||||
[vV]*) action=again
|
[vV]*) action=again
|
||||||
LESS=-S ${PAGER:-less} "$dotest/patch" ;;
|
LESS=-S ${PAGER:-less} "$dotest/patch" ;;
|
||||||
|
36
setup.c
36
setup.c
@ -222,6 +222,22 @@ void setup_work_tree(void)
|
|||||||
initialized = 1;
|
initialized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int check_repository_format_gently(int *nongit_ok)
|
||||||
|
{
|
||||||
|
git_config(check_repository_format_version);
|
||||||
|
if (GIT_REPO_VERSION < repository_format_version) {
|
||||||
|
if (!nongit_ok)
|
||||||
|
die ("Expected git repo version <= %d, found %d",
|
||||||
|
GIT_REPO_VERSION, repository_format_version);
|
||||||
|
warning("Expected git repo version <= %d, found %d",
|
||||||
|
GIT_REPO_VERSION, repository_format_version);
|
||||||
|
warning("Please upgrade Git");
|
||||||
|
*nongit_ok = -1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We cannot decide in this function whether we are in the work tree or
|
* We cannot decide in this function whether we are in the work tree or
|
||||||
* not, since the config can only be read _after_ this function was called.
|
* not, since the config can only be read _after_ this function was called.
|
||||||
@ -246,8 +262,15 @@ const char *setup_git_directory_gently(int *nongit_ok)
|
|||||||
static char buffer[1024 + 1];
|
static char buffer[1024 + 1];
|
||||||
const char *retval;
|
const char *retval;
|
||||||
|
|
||||||
if (!work_tree_env)
|
if (!work_tree_env) {
|
||||||
return set_work_tree(gitdirenv);
|
retval = set_work_tree(gitdirenv);
|
||||||
|
/* config may override worktree */
|
||||||
|
if (check_repository_format_gently(nongit_ok))
|
||||||
|
return NULL;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
if (check_repository_format_gently(nongit_ok))
|
||||||
|
return NULL;
|
||||||
retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
|
retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
|
||||||
get_git_work_tree());
|
get_git_work_tree());
|
||||||
if (!retval || !*retval)
|
if (!retval || !*retval)
|
||||||
@ -286,6 +309,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
|
|||||||
if (!work_tree_env)
|
if (!work_tree_env)
|
||||||
inside_work_tree = 0;
|
inside_work_tree = 0;
|
||||||
setenv(GIT_DIR_ENVIRONMENT, ".", 1);
|
setenv(GIT_DIR_ENVIRONMENT, ".", 1);
|
||||||
|
check_repository_format_gently(nongit_ok);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
chdir("..");
|
chdir("..");
|
||||||
@ -306,6 +330,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
|
|||||||
if (!work_tree_env)
|
if (!work_tree_env)
|
||||||
inside_work_tree = 1;
|
inside_work_tree = 1;
|
||||||
git_work_tree_cfg = xstrndup(cwd, offset);
|
git_work_tree_cfg = xstrndup(cwd, offset);
|
||||||
|
if (check_repository_format_gently(nongit_ok))
|
||||||
|
return NULL;
|
||||||
if (offset == len)
|
if (offset == len)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -356,11 +382,7 @@ int check_repository_format_version(const char *var, const char *value)
|
|||||||
|
|
||||||
int check_repository_format(void)
|
int check_repository_format(void)
|
||||||
{
|
{
|
||||||
git_config(check_repository_format_version);
|
return check_repository_format_gently(NULL);
|
||||||
if (GIT_REPO_VERSION < repository_format_version)
|
|
||||||
die ("Expected git repo version <= %d, found %d",
|
|
||||||
GIT_REPO_VERSION, repository_format_version);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *setup_git_directory(void)
|
const char *setup_git_directory(void)
|
||||||
|
46
t/t1302-repo-version.sh
Executable file
46
t/t1302-repo-version.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2007 Nguyễn Thái Ngọc Duy
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='Test repository version check'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
cat >test.patch <<EOF
|
||||||
|
diff --git a/test.txt b/test.txt
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test.txt
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+123
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_create_repo "test"
|
||||||
|
test_create_repo "test2"
|
||||||
|
|
||||||
|
GIT_CONFIG=test2/.git/config git config core.repositoryformatversion 99 || exit 1
|
||||||
|
|
||||||
|
test_expect_success 'gitdir selection on normal repos' '
|
||||||
|
(test "$(git config core.repositoryformatversion)" = 0 &&
|
||||||
|
cd test &&
|
||||||
|
test "$(git config core.repositoryformatversion)" = 0)'
|
||||||
|
|
||||||
|
# Make sure it would stop at test2, not trash
|
||||||
|
test_expect_success 'gitdir selection on unsupported repo' '
|
||||||
|
(cd test2 &&
|
||||||
|
test "$(git config core.repositoryformatversion)" = 99)'
|
||||||
|
|
||||||
|
test_expect_success 'gitdir not required mode' '
|
||||||
|
(git apply --stat test.patch &&
|
||||||
|
cd test && git apply --stat ../test.patch &&
|
||||||
|
cd ../test2 && git apply --stat ../test.patch)'
|
||||||
|
|
||||||
|
test_expect_success 'gitdir required mode on normal repos' '
|
||||||
|
(git apply --check --index test.patch &&
|
||||||
|
cd test && git apply --check --index ../test.patch)'
|
||||||
|
|
||||||
|
test_expect_failure 'gitdir required mode on unsupported repo' '
|
||||||
|
(cd test2 && git apply --check --index ../test.patch)'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user