Stefan Beller <sbel...@google.com> writes:

> 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 <sbel...@google.com>
> ---
>  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;
>       }

OK.  The function uses path in messages elsewhere so we know path
must not be empty and have a reasonable string content at this
point, which makes this a reasonably safe patch to apply ;-)

Thanks.

> 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
>               )

Reply via email to