When an error occurs in updating the working tree of a submodule in submodule_move_head, tell the user which submodule the error occurred in. The call to read-tree contains a super-prefix, such that the read-tree will correctly report any path related issues, but some error messages do not contain a path, for example: ~/gerrit$ git checkout --recurse-submodules origin/master ~/gerrit$ fatal: failed to unpack tree object 07672f31880ba80300b38492df9d0acfcd6ee00a Give the hint which submodule has a problem. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- submodule.c | 2 +- t/lib-submodule-update.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/submodule.c b/submodule.c index 939d6870ecd..ebd092a14fd 100644 --- a/submodule.c +++ b/submodule.c @@ -1668,7 +1668,7 @@ int submodule_move_head(const char *path, argv_array_push(&cp.args, new_head ? new_head : empty_tree_oid_hex()); if (run_command(&cp)) { - ret = -1; + ret = error(_("Submodule '%s' could not be updated."), path); goto out; } diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 1f38a85371a..e27f5d8541d 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -781,7 +781,8 @@ test_submodule_recursing_with_args_common() { ( cd submodule_update && git branch -t invalid_sub1 origin/invalid_sub1 && - test_must_fail $command invalid_sub1 && + test_must_fail $command invalid_sub1 2>err && + grep sub1 err && test_superproject_content origin/add_sub1 && test_submodule_content sub1 origin/add_sub1 ) -- 2.18.0.rc2.346.g013aa6912e-goog