[PATCH] git-submodule.sh: try harder to fetch a submodule
- From
Stefan Beller <sbeller@google.com>
- Date
- May 15, 2018, 20:00 UTC
- Message-ID
- <20180515200030.88731-2-sbeller@google.com>
- In-Reply-To
- <20180515200030.88731-1-sbeller@google.com>
This is the logical continuum of fb43e31f2b4 (submodule: try harder to fetch needed sha1 by direct fetching sha1, 2016-02-23) and fixes it as some assumptions were not correct.
The commit states:
> If $sha1 was not part of the default fetch ... fail ourselves here > assumes that the fetch_in_submodule only fails when the serverside does > not support fetching by sha1.
There are other failures, why such a fetch may fail, such as
fatal: Couldn't find remote ref HEAD
which can happen if the remote side doesn't advertise HEAD and we do not
have a local fetch refspec.Not advertising HEAD is allowed by the protocol spec and would happen, if HEAD points at an unborn branch for example.
Not having a local fetch refspec can happen when submodules are fetched shallowly, as then git-clone doesn't setup a fetch refspec.
So do try even harder for a submodule by ignoring the exit code of the first fetch and rather relying on the following is_tip_reachable to see if we try fetching again.
Signed-off-by: Stefan Beller <sbeller@google.com> --- git-submodule.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/git-submodule.sh b/git-submodule.sh index 24914963ca2..00fcd69138f 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -614,7 +614,7 @@ cmd_update() # is not reachable from a ref. is_tip_reachable "$sm_path" "$sha1" || fetch_in_submodule "$sm_path" $depth || - die "$(eval_gettext "Unable to fetch in submodule path '\$displaypath'")" + say "$(eval_gettext "Unable to fetch in submodule path '\$displaypath'")" # Now we tried the usual fetch, but $sha1 may # not be reachable from any of the refs
-- 2.17.0.582.gccdcbd54c44.dirty