[PATCH cygport] git.cygclass: Suppress the depth option
Brian Inglis
Brian.Inglis@Shaw.ca
Sun Dec 3 21:53:33 GMT 2023
On 2023-12-03 13:34, Jon Turney via Cygwin-apps wrote:
> On 30/11/2023 12:17, Daisuke Fujimura via Cygwin-apps wrote:
>> Implementations that conditionally branch on variables are simple.
>>
>> The proposed retry implementation complicates git.cygclass, but I
>> think it reduces the maintainer's effort.
>>
>> I have created a patch for a retry implementation.
>> Could you review it?
>
> Thanks very much.
>
> Sure.
>
>> diff --git a/cygclass/git.cygclass b/cygclass/git.cygclass
>> index e53a7985..1e26ab37 100644
>> --- a/cygclass/git.cygclass
>> +++ b/cygclass/git.cygclass
>> @@ -76,19 +76,33 @@ git_fetch() {
>> # (not allowed for a hash, unless remote is configured to permit
>> # it with allow*SHA1InWant).
>> _depth="--depth 1"
>> + _branch=""
>
> I think this is not necessary, as expanding an undefined variable is permitted
> and has the equivalent empty value.
>
>> if defined GIT_TAG
>> then
>> - _depth+=" --branch ${GIT_TAG}"
>> + _depth=" --branch ${GIT_TAG}"
>
> I think this wants to be _branch, as otherwise that used but never defined?
>
>> elif defined GIT_BRANCH
>> then
>> - _depth+=" --branch ${GIT_BRANCH}"
>> + _depth=" --branch ${GIT_BRANCH}"
>
> Likewise.
>
>> fi
>> fi
>>
>> # T likely doesn't exist at this point, so create it first
>> mkdir -p ${T}
>> cd ${T}
>> - verbose git clone ${_depth} --no-checkout ${GIT_URI} ${GIT_MODULE}
>> || error "git clone failed"
>> + _gitlog=${T}/git.$$.log
>> + verbose git clone ${_depth} ${_branch} --no-checkout ${GIT_URI}
>> ${GIT_MODULE} |& tee ${_gitlog}
>> + if [ ${PIPESTATUS[0]} != 0 ]
>> + then
>> + grep "fatal: dumb http transport does not support shallow
>> capabilities" ${_gitlog} >& /dev/null
>
> Can't this just use 'grep -q' ?
>
> I wonder if there's a locale issue here (i.e. will git produce a localized error
> message if LANG etc. is defined?)
>
> Maybe depending on the precise string is too fragile, and we should just
> unconditionally retry to see if things get better?
>
>> + if [ $? = 0 ]
>> + then
>> + warning "git clone failed, retry without --depth option"
>> + verbose git clone ${_branch} --no-checkout ${GIT_URI} ${GIT_MODULE}
>> || error "git clone failed"
>> + else
>
> In this case, the clone failed for a different reason, but we've eaten the
> output from git, so maybe there's no indication given as to why?
>
> Do we want to do something like "cat ${_gitlog}" here?
>
>> + error "git clone failed"
>> + fi
>> + fi
>> cd ${T}/${GIT_MODULE}
>>
>> #****v* git.cygclass/GIT_BRANCH
>>
>>
>> On Mon, Nov 20, 2023 at 11:23 PM Jon Turney <jon.turney@dronecode.org.uk> wrote:
>>>
>>> On 19/11/2023 02:11, Daisuke Fujimura via Cygwin-apps wrote:
>>>> Some git providers do not support smart transport, so specifying the
>>>> depth option will result in an error.
>>>
>>> Right. This is a bug and needs fixing.
>>>
>>> Thanks for the patch.
>>>
>>>> ```
>>>> Cloning into 'xxxx'...
>>>> fatal: dumb http transport does not support shallow capabilities
>>>> ```
>>>>
> [...]
>>>
>>> But I wonder if wouldn't just be better to try with --depth and then
>>> fallback to without it, if that fails (especially if we can tell it
>>> failed for that reason).
>>>
>
> Attached is the patch after my edits.
Looks like straight curl HEAD -I tells you about smart transport if you want a
quick check rather than a dry run:
$ time curl -ILSs https://repo.or.cz/r/git.git/info/refs?service=git-upload-pack
| grep -qi '^content-type:\sapplication/x-git-upload-pack'; echo $?
real 0m0.630s
user 0m0.077s
sys 0m0.123s
0
$ time curl -ILSs
https://github.com/BrianInglis/apt-cyg.git/info/refs?service=git-upload-pack |
grep -qi '^content-type:\sapplication/x-git-upload-pack'; echo $?
real 0m0.440s
user 0m0.061s
sys 0m0.184s
1
--
Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
La perfection est atteinte Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut
-- Antoine de Saint-Exupéry
More information about the Cygwin-apps
mailing list