diff --git a/src/tree.h b/src/tree.h index 0bff41312..fd00afde5 100644 --- a/src/tree.h +++ b/src/tree.h @@ -32,7 +32,7 @@ struct git_treebuilder { GIT_INLINE(unsigned int) entry_is_tree(const struct git_tree_entry *e) { - return e->attr & 040000; + return (S_ISDIR(e->attr) && !S_ISGITLINK(e->attr)); } void git_tree__free(git_tree *tree); diff --git a/tests-clar/status/submodules.c b/tests-clar/status/submodules.c index ca6c2ef30..9fd4f0d5f 100644 --- a/tests-clar/status/submodules.c +++ b/tests-clar/status/submodules.c @@ -29,7 +29,7 @@ void test_status_submodules__cleanup(void) } static int -cb_status__count(const char *p, unsigned int s, void *payload) +cb_status__submodule_count(const char *p, unsigned int s, void *payload) { volatile int *count = (int *)payload; @@ -50,10 +50,10 @@ void test_status_submodules__0(void) cl_assert(git_path_isfile("submodules/.gitmodules")); cl_git_pass( - git_status_foreach(g_repo, cb_status__count, &counts) + git_status_foreach(g_repo, cb_status__submodule_count, &counts) ); - cl_assert(counts == 7); + cl_assert(counts == 6); } static const char *expected_files[] = { @@ -62,17 +62,15 @@ static const char *expected_files[] = { "deleted", "ignored", "modified", - "testrepo", "untracked" }; static unsigned int expected_status[] = { - GIT_STATUS_INDEX_NEW | GIT_STATUS_WT_MODIFIED, + GIT_STATUS_WT_MODIFIED, GIT_STATUS_INDEX_NEW, GIT_STATUS_INDEX_DELETED, GIT_STATUS_IGNORED, GIT_STATUS_WT_MODIFIED, - GIT_STATUS_INDEX_NEW, /* submodule added in index, but not committed */ GIT_STATUS_WT_NEW }; @@ -100,5 +98,5 @@ void test_status_submodules__1(void) git_status_foreach(g_repo, cb_status__match, &index) ); - cl_assert(index == 7); + cl_assert(index == 6); } diff --git a/tests/resources/submodules/.gitted/index b/tests/resources/submodules/.gitted/index index b7400570e..97bf8ef51 100644 Binary files a/tests/resources/submodules/.gitted/index and b/tests/resources/submodules/.gitted/index differ diff --git a/tests/resources/submodules/.gitted/logs/HEAD b/tests/resources/submodules/.gitted/logs/HEAD index 193405c9f..87a7bdafc 100644 Binary files a/tests/resources/submodules/.gitted/logs/HEAD and b/tests/resources/submodules/.gitted/logs/HEAD differ diff --git a/tests/resources/submodules/.gitted/logs/refs/heads/master b/tests/resources/submodules/.gitted/logs/refs/heads/master index 193405c9f..87a7bdafc 100644 Binary files a/tests/resources/submodules/.gitted/logs/refs/heads/master and b/tests/resources/submodules/.gitted/logs/refs/heads/master differ diff --git a/tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 b/tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 new file mode 100644 index 000000000..1c8dbdf9f Binary files /dev/null and b/tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 differ diff --git a/tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 b/tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 new file mode 100644 index 000000000..3d78bd6be Binary files /dev/null and b/tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 differ diff --git a/tests/resources/submodules/.gitted/refs/heads/master b/tests/resources/submodules/.gitted/refs/heads/master new file mode 100644 index 000000000..32b935853 Binary files /dev/null and b/tests/resources/submodules/.gitted/refs/heads/master differ