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
```
Therefore, I suggest adding a variable to suppress the depth option.
(Variable names should be changed to something appropriate according
to the naming convention.)
diff --git a/cygclass/git.cygclass b/cygclass/git.cygclass
index e53a7985..0aa97a09 100644
--- a/cygclass/git.cygclass
+++ b/cygclass/git.cygclass
@@ -75,7 +75,12 @@ git_fetch() {
# shallow fetch a ref (master, branch or tag) with --depth=1
# (not allowed for a hash, unless remote is configured to permit
# it with allow*SHA1InWant).
- _depth="--depth 1"
+ _depth=""
+ # git provider does not support smart transport
+ if ! defined GIT_PROVIDER_NOT_SUPPORT_SMART_TRANSPORT
If you're going to add a variable which changes the behaviour of cygport
like this, it should be documented (by adding an appropriate robodoc
comment)
This could just be named something a little shorter, like
"GIT_URI_NO_SMART_TRANSPORT", since it's really a property of the URI's
host?
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).
(Looking at [1], that seems a better approach than trying to probe the
URI for smart transport support, which seems problematic)
[1]
https://stackoverflow.com/questions/9270488/is-it-possible-to-detect-whether-a-http-git-remote-is-smart-or-dumb
What do you think?
+ then
+ _depth="--depth 1"
+ fi
if defined GIT_TAG
then
_depth+=" --branch ${GIT_TAG}"