Merge branch 'jc/check-attr-honor-working-tree'
"git check-attr" when (trying to) work on a repository with a working tree did not work well when the working tree was specified via --work-tree (and obviously with --git-dir). The command also works in a bare repository but it reads from the (possibly stale, irrelevant and/or nonexistent) index, which may need to be fixed to read from HEAD, but that is a completely separate issue. As a related tangent to this separate issue, we may want to also fix "check-ignore", which refuses to work in a bare repository, to also operate in a bare one. * jc/check-attr-honor-working-tree: check-attr: move to the top of working tree when in non-bare repository t0003: do not chdir the whole test process
This commit is contained in:
commit
28b68216de
@ -102,6 +102,9 @@ int cmd_check_attr(int argc, const char **argv, const char *prefix)
|
|||||||
struct git_attr_check *check;
|
struct git_attr_check *check;
|
||||||
int cnt, i, doubledash, filei;
|
int cnt, i, doubledash, filei;
|
||||||
|
|
||||||
|
if (!is_bare_repository())
|
||||||
|
setup_work_tree();
|
||||||
|
|
||||||
git_config(git_default_config, NULL);
|
git_config(git_default_config, NULL);
|
||||||
|
|
||||||
argc = parse_options(argc, argv, prefix, check_attr_options,
|
argc = parse_options(argc, argv, prefix, check_attr_options,
|
||||||
|
@ -243,40 +243,58 @@ EOF
|
|||||||
test_line_count = 0 err
|
test_line_count = 0 err
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'using --git-dir and --work-tree' '
|
||||||
|
mkdir unreal real &&
|
||||||
|
git init real &&
|
||||||
|
echo "file test=in-real" >real/.gitattributes &&
|
||||||
|
(
|
||||||
|
cd unreal &&
|
||||||
|
attr_check file in-real "--git-dir ../real/.git --work-tree ../real"
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'setup bare' '
|
test_expect_success 'setup bare' '
|
||||||
git clone --bare . bare.git &&
|
git clone --bare . bare.git
|
||||||
cd bare.git
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'bare repository: check that .gitattribute is ignored' '
|
test_expect_success 'bare repository: check that .gitattribute is ignored' '
|
||||||
(
|
(
|
||||||
echo "f test=f"
|
cd bare.git &&
|
||||||
echo "a/i test=a/i"
|
(
|
||||||
) >.gitattributes &&
|
echo "f test=f"
|
||||||
attr_check f unspecified &&
|
echo "a/i test=a/i"
|
||||||
attr_check a/f unspecified &&
|
) >.gitattributes &&
|
||||||
attr_check a/c/f unspecified &&
|
attr_check f unspecified &&
|
||||||
attr_check a/i unspecified &&
|
attr_check a/f unspecified &&
|
||||||
attr_check subdir/a/i unspecified
|
attr_check a/c/f unspecified &&
|
||||||
|
attr_check a/i unspecified &&
|
||||||
|
attr_check subdir/a/i unspecified
|
||||||
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'bare repository: check that --cached honors index' '
|
test_expect_success 'bare repository: check that --cached honors index' '
|
||||||
GIT_INDEX_FILE=../.git/index \
|
(
|
||||||
git check-attr --cached --stdin --all <../stdin-all |
|
cd bare.git &&
|
||||||
sort >actual &&
|
GIT_INDEX_FILE=../.git/index \
|
||||||
test_cmp ../specified-all actual
|
git check-attr --cached --stdin --all <../stdin-all |
|
||||||
|
sort >actual &&
|
||||||
|
test_cmp ../specified-all actual
|
||||||
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'bare repository: test info/attributes' '
|
test_expect_success 'bare repository: test info/attributes' '
|
||||||
(
|
(
|
||||||
echo "f test=f"
|
cd bare.git &&
|
||||||
echo "a/i test=a/i"
|
(
|
||||||
) >info/attributes &&
|
echo "f test=f"
|
||||||
attr_check f f &&
|
echo "a/i test=a/i"
|
||||||
attr_check a/f f &&
|
) >info/attributes &&
|
||||||
attr_check a/c/f f &&
|
attr_check f f &&
|
||||||
attr_check a/i a/i &&
|
attr_check a/f f &&
|
||||||
attr_check subdir/a/i unspecified
|
attr_check a/c/f f &&
|
||||||
|
attr_check a/i a/i &&
|
||||||
|
attr_check subdir/a/i unspecified
|
||||||
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user