forked from gitea/gitea
		
	Enable partial clone by default (#18195)
- Enable partial clones(which are by default disabled from git) by default, unless configured otherwise. - Resolves #18190
This commit is contained in:
		
							parent
							
								
									1514e13bb8
								
							
						
					
					
						commit
						4b3bfd7e89
					
				| @ -592,6 +592,8 @@ PATH = | ||||
| ;LARGE_OBJECT_THRESHOLD = 1048576 | ||||
| ;; Set to true to forcibly set core.protectNTFS=false | ||||
| ;DISABLE_CORE_PROTECT_NTFS=false | ||||
| ;; Disable the usage of using partial clones for git. | ||||
| ;DISABLE_PARTIAL_CLONE = false | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| @ -790,7 +792,7 @@ PATH = | ||||
| ;PREFERRED_LICENSES = Apache License 2.0,MIT License | ||||
| ;; | ||||
| ;; Disable the ability to interact with repositories using the HTTP protocol | ||||
| ;;DISABLE_HTTP_GIT = false | ||||
| ;DISABLE_HTTP_GIT = false | ||||
| ;; | ||||
| ;; Value for Access-Control-Allow-Origin header, default is not to present | ||||
| ;; WARNING: This may be harmful to your website if you do not give it a right value. | ||||
|  | ||||
| @ -27,36 +27,9 @@ on the client is at least the same as on the server (or later). Login to | ||||
| Gitea server as admin and head to Site Administration -> Configuration to | ||||
| see Git version of the server. | ||||
| 
 | ||||
| By default, clone filters are disabled, which cause the server to ignore | ||||
| `--filter` option. | ||||
| By default, clone filters are enabled, unless `DISABLE_PARTIAL_CLONE` under | ||||
| `[git]` is set to `true`. | ||||
| 
 | ||||
| To enable clone filters on per-repo basis, edit the repo's `config` on | ||||
| repository location. Consult `ROOT` option on `repository` section of | ||||
| Gitea configuration (`app.ini`) for the exact location. For example, to | ||||
| enable clone filters for `some-repo`, edit | ||||
| `/var/gitea/data/gitea-repositories/some-user/some-repo.git/config` and add: | ||||
| 
 | ||||
| ```ini | ||||
| [uploadpack] | ||||
| 	allowfilter = true | ||||
| ``` | ||||
| 
 | ||||
| To enable clone filters globally, add that config above to `~/.gitconfig` | ||||
| of user that run Gitea (for example `git`). | ||||
| 
 | ||||
| Alternatively, you can use `git config` to set the option. | ||||
| 
 | ||||
| To enable for a specific repo: | ||||
| 
 | ||||
| ```bash | ||||
| cd /var/gitea/data/gitea-repositories/some-user/some-repo.git | ||||
| git config --local uploadpack.allowfilter true | ||||
| ``` | ||||
| To enable globally, login as user that run Gitea and: | ||||
| 
 | ||||
| ```bash | ||||
| git config --global uploadpack.allowfilter true | ||||
| ``` | ||||
| 
 | ||||
| See [GitHub blog post: Get up to speed with partial clone](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) | ||||
| for common use cases of clone filters (blobless and treeless clones), and | ||||
|  | ||||
| @ -933,6 +933,8 @@ NB: You must have `DISABLE_ROUTER_LOG` set to `false` for this option to take ef | ||||
| - `VERBOSE_PUSH_DELAY`: **5s**: Only print verbose information if push takes longer than this delay. | ||||
| - `LARGE_OBJECT_THRESHOLD`: **1048576**: (Go-Git only), don't cache objects greater than this in memory. (Set to 0 to disable.) | ||||
| - `DISABLE_CORE_PROTECT_NTFS`: **false** Set to true to forcibly set `core.protectNTFS` to false. | ||||
| - `DISABLE_PARTIAL_CLONE`: **false** Disable the usage of using partial clones for git. | ||||
| 
 | ||||
| ## Git - Timeout settings (`git.timeout`) | ||||
| - `DEFAUlT`: **360**: Git operations default timeout seconds. | ||||
| - `MIGRATE`: **600**: Migrate external repositories timeout seconds. | ||||
|  | ||||
| @ -146,6 +146,11 @@ func Init(ctx context.Context) 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") | ||||
| 	} | ||||
| 
 | ||||
| 	// Save current git version on init to gitVersion otherwise it would require an RWMutex | ||||
| 	if err := LoadGitVersion(); err != nil { | ||||
| 		return err | ||||
|  | ||||
| @ -27,6 +27,7 @@ var ( | ||||
| 		PullRequestPushMessage    bool | ||||
| 		LargeObjectThreshold      int64 | ||||
| 		DisableCoreProtectNTFS    bool | ||||
| 		DisablePartialClone       bool | ||||
| 		Timeout                   struct { | ||||
| 			Default int | ||||
| 			Migrate int | ||||
| @ -48,6 +49,7 @@ var ( | ||||
| 		EnableAutoGitWireProtocol: true, | ||||
| 		PullRequestPushMessage:    true, | ||||
| 		LargeObjectThreshold:      1024 * 1024, | ||||
| 		DisablePartialClone:       false, | ||||
| 		Timeout: struct { | ||||
| 			Default int | ||||
| 			Migrate int | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Gusted
						Gusted