> @@ -887,11 +887,14 @@ static int store_updated_refs(const char *raw_url,
> const char *remote_name,
> rc |= update_local_ref(ref, what, rm, ¬e,
> summary_width);
> free(ref);
> - } else
> + } else {
> + check_for_new_submodule_commits(&rm->old_oid);
Does this need to be guarded with a recurse_submodules check, just like
in update_local_ref()?
Also, this warrants a comment - this is here because there is some code
later that requires the new submodule commits to be registered, and the
other branch does not require it only because update_local_ref() calls
it.
> @@ -615,7 +615,7 @@ test_expect_success "fetch new commits on-demand when
> they are not reachable" '
> git update-ref refs/changes/2 $D &&
> (
> cd downstream &&
> - git fetch --recurse-submodules --recurse-submodules-default
> on-demand origin refs/changes/2:refs/heads/my_branch &&
> + git fetch --recurse-submodules origin refs/changes/2 &&
> git -C submodule cat-file -t $C &&
> git checkout --recurse-submodules FETCH_HEAD
> )
I think there should be a new test - we can tell from the code that just
because fetching to FETCH_HEAD works doesn't mean that fetching to a ref
works, and vice versa.
Also, can you make the test fetch 2 refs? So that we know that it works
with more than one.