Skip to content

Commit

Permalink
Merge branch 'jc/check-attr-honor-working-tree' into maint
Browse files Browse the repository at this point in the history
"git check-attr" when working on a repository with a working tree
did not work well when the working tree was specified via the
--work-tree (and obviously with --git-dir) option.

* 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
  • Loading branch information
gitster committed Mar 18, 2014
2 parents 6d011b8 + cdbf623 commit a8b3131
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 22 deletions.
3 changes: 3 additions & 0 deletions builtin/check-attr.c
Expand Up @@ -102,6 +102,9 @@ int cmd_check_attr(int argc, const char **argv, const char *prefix)
struct git_attr_check *check;
int cnt, i, doubledash, filei;

if (!is_bare_repository())
setup_work_tree();

git_config(git_default_config, NULL);

argc = parse_options(argc, argv, prefix, check_attr_options,
Expand Down
62 changes: 40 additions & 22 deletions t/t0003-attributes.sh
Expand Up @@ -243,40 +243,58 @@ EOF
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' '
git clone --bare . bare.git &&
cd bare.git
git clone --bare . bare.git
'

test_expect_success 'bare repository: check that .gitattribute is ignored' '
(
echo "f test=f"
echo "a/i test=a/i"
) >.gitattributes &&
attr_check f unspecified &&
attr_check a/f unspecified &&
attr_check a/c/f unspecified &&
attr_check a/i unspecified &&
attr_check subdir/a/i unspecified
cd bare.git &&
(
echo "f test=f"
echo "a/i test=a/i"
) >.gitattributes &&
attr_check f unspecified &&
attr_check a/f 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' '
GIT_INDEX_FILE=../.git/index \
git check-attr --cached --stdin --all <../stdin-all |
sort >actual &&
test_cmp ../specified-all actual
(
cd bare.git &&
GIT_INDEX_FILE=../.git/index \
git check-attr --cached --stdin --all <../stdin-all |
sort >actual &&
test_cmp ../specified-all actual
)
'

test_expect_success 'bare repository: test info/attributes' '
(
echo "f test=f"
echo "a/i test=a/i"
) >info/attributes &&
attr_check f f &&
attr_check a/f f &&
attr_check a/c/f f &&
attr_check a/i a/i &&
attr_check subdir/a/i unspecified
cd bare.git &&
(
echo "f test=f"
echo "a/i test=a/i"
) >info/attributes &&
attr_check f f &&
attr_check a/f f &&
attr_check a/c/f f &&
attr_check a/i a/i &&
attr_check subdir/a/i unspecified
)
'

test_done

0 comments on commit a8b3131

Please sign in to comment.