Jonathan Tan <jonathantanmy@xxxxxxxxxx> writes: > I think that tree_entry() doesn't recurse into subtrees, but in any case we > should test this. (I looked at patch 4 and I think that the submodules are > always in the root tree.) I've tested this and indeed it doesn't work. I've attached my test case below. > This reminded me of a similar thing when fetching submodules recursively and we > needed the "before" and "after" of submodule gitlinks. You can look at the code > (collect_changed_submodules_cb() and the functions that use it in submodule.c) > but it may not be useful - in particular, that uses diff since we need to see > differences there, but we don't need that here. Thanks for the hint. If that fails, I could also implement it via the helper methods in submodule--helper. ---- >8 ---- diff --git a/t/t3207-branch-submodule.sh b/t/t3207-branch-submodule.sh index 14ff066e91..0e086f716d 100755 --- a/t/t3207-branch-submodule.sh +++ b/t/t3207-branch-submodule.sh @@ -11,11 +11,15 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME test_expect_success 'setup superproject and submodule' ' git init super && test_commit foo && + git init sub-sub-upstream && + test_commit -C sub-sub-upstream foo && git init sub-upstream && - test_commit -C sub-upstream foo && - git -C super submodule add ../sub-upstream sub && + git -C sub-upstream submodule add "$TRASH_DIRECTORY/sub-sub-upstream" sub-sub && + git -C sub-upstream commit -m "add submodule" && + git -C super submodule add "$TRASH_DIRECTORY/sub-upstream" sub && git -C super commit -m "add submodule" && - git -C super config submodule.propagateBranches true + git -C super config submodule.propagateBranches true && + git -C super/sub submodule update --init ' cleanup_branches() { @@ -26,7 +30,7 @@ cleanup_branches() { git checkout main && for branch_name in "$@"; do git branch -D "$branch_name" - git submodule foreach "(git checkout main && git branch -D $branch_name) || true" + git submodule foreach "cleanup_branches . $branch_name || true" done ) } >/dev/null 2>/dev/null @@ -37,8 +41,9 @@ test_expect_success '--recurse-submodules should create branches' ' ( cd super && git branch --recurse-submodules branch-a && - git rev-parse --abbrev-ref branch-a && - git -C sub rev-parse --abbrev-ref branch-a + git rev-parse branch-a && + git -C sub rev-parse branch-a && + git -C sub/sub-sub rev-parse branch-a ) '