summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-09-04 16:13:23 +0100
committerGitHub <noreply@github.com>2022-09-04 16:13:23 +0100
commitc722a26e7efa69370804ac04590e9e467decc093 (patch)
tree0ea75c628b12b18b74f1e18780a5da955813d9f3
parentbe14e79e9884dca98147fbc24f8b336b9b84ac86 (diff)
downloadgitea-c722a26e7efa69370804ac04590e9e467decc093.tar.gz
gitea-c722a26e7efa69370804ac04590e9e467decc093.zip
Set uploadpack.allowFilter etc on gitea serv to enable partial clones with ssh (#20902)
When setting.Git.DisablePartialClone is set to false then the web server will add filter support to web http. It does this by using`-c` command arguments but this will not work on gitea serv as the upload-pack and receive-pack commands do not support this. Instead we move these options into the .gitconfig instead. Fix #20400 Signed-off-by: Andrew Thornton <art27@cantab.net>
-rw-r--r--modules/git/git.go20
1 files changed, 14 insertions, 6 deletions
diff --git a/modules/git/git.go b/modules/git/git.go
index 99849f1f09..28899222e7 100644
--- a/modules/git/git.go
+++ b/modules/git/git.go
@@ -185,11 +185,6 @@ func InitFull(ctx context.Context) (err error) {
globalCommandArgs = append(globalCommandArgs, "-c", "protocol.version=2")
}
- // By default partial clones are disabled, enable them from git v2.22
- if !setting.Git.DisablePartialClone && CheckGitVersionAtLeast("2.22") == nil {
- globalCommandArgs = append(globalCommandArgs, "-c", "uploadpack.allowfilter=true", "-c", "uploadpack.allowAnySHA1InWant=true")
- }
-
// Explicitly disable credential helper, otherwise Git credentials might leak
if CheckGitVersionAtLeast("2.9") == nil {
globalCommandArgs = append(globalCommandArgs, "-c", "credential.helper=")
@@ -286,7 +281,20 @@ func syncGitConfig() (err error) {
}
}
- return nil
+ // By default partial clones are disabled, enable them from git v2.22
+ if !setting.Git.DisablePartialClone && CheckGitVersionAtLeast("2.22") == nil {
+ if err = configSet("uploadpack.allowfilter", "true"); err != nil {
+ return err
+ }
+ err = configSet("uploadpack.allowAnySHA1InWant", "true")
+ } else {
+ if err = configUnsetAll("uploadpack.allowfilter", "true"); err != nil {
+ return err
+ }
+ err = configUnsetAll("uploadpack.allowAnySHA1InWant", "true")
+ }
+
+ return err
}
// CheckGitVersionAtLeast check git version is at least the constraint version