submodule.c: report the submodule that an error occurs in
authorStefan Beller <sbeller@google.com>
Wed, 20 Jun 2018 22:32:53 +0000 (15:32 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Jun 2018 16:06:15 +0000 (09:06 -0700)
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@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
t/lib-submodule-update.sh
index 47ddc9b2739bf52d9263ea9cd90edde6e9d1c738..1b950f9627d92b9b101638467d590d59c83c6e59 100644 (file)
@@ -1663,7 +1663,7 @@ int submodule_move_head(const char *path,
        argv_array_push(&cp.args, new ? new : EMPTY_TREE_SHA1_HEX);
 
        if (run_command(&cp)) {
-               ret = -1;
+               ret = error(_("Submodule '%s' could not be updated."), path);
                goto out;
        }
 
index 1f38a85371ab49790d14d3d4b82a0ee6e52789dd..4ee54325bcdc5813aafcc2a9c823285e2c6fe8ae 100755 (executable)
@@ -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 &&
+                       test_i18ngrep sub1 err &&
                        test_superproject_content origin/add_sub1 &&
                        test_submodule_content sub1 origin/add_sub1
                )