mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Do not create commit graph for temporary repos (#23219)
When fetching remotes for conflict checking, skip unnecessary and potentially slow writing of commit graphs. In a test with the Blender repository, this reduces conflict checking time for one pull request from about 2s to 0.1s.
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							403f3e9208
						
					
				
				
					commit
					0268ee5c37
				
			| @@ -67,6 +67,12 @@ func createTemporaryRepo(ctx context.Context, pr *issues_model.PullRequest) (str | |||||||
| 	remoteRepoName := "head_repo" | 	remoteRepoName := "head_repo" | ||||||
| 	baseBranch := "base" | 	baseBranch := "base" | ||||||
|  |  | ||||||
|  | 	fetchArgs := git.TrustedCmdArgs{"--no-tags"} | ||||||
|  | 	if git.CheckGitVersionAtLeast("2.25.0") == nil { | ||||||
|  | 		// Writing the commit graph can be slow and is not needed here | ||||||
|  | 		fetchArgs = append(fetchArgs, "--no-write-commit-graph") | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// Add head repo remote. | 	// Add head repo remote. | ||||||
| 	addCacheRepo := func(staging, cache string) error { | 	addCacheRepo := func(staging, cache string) error { | ||||||
| 		p := filepath.Join(staging, ".git", "objects", "info", "alternates") | 		p := filepath.Join(staging, ".git", "objects", "info", "alternates") | ||||||
| @@ -108,7 +114,7 @@ func createTemporaryRepo(ctx context.Context, pr *issues_model.PullRequest) (str | |||||||
| 	outbuf.Reset() | 	outbuf.Reset() | ||||||
| 	errbuf.Reset() | 	errbuf.Reset() | ||||||
|  |  | ||||||
| 	if err := git.NewCommand(ctx, "fetch", "origin", "--no-tags").AddDashesAndList(pr.BaseBranch+":"+baseBranch, pr.BaseBranch+":original_"+baseBranch). | 	if err := git.NewCommand(ctx, "fetch", "origin").AddArguments(fetchArgs...).AddDashesAndList(pr.BaseBranch+":"+baseBranch, pr.BaseBranch+":original_"+baseBranch). | ||||||
| 		Run(&git.RunOpts{ | 		Run(&git.RunOpts{ | ||||||
| 			Dir:    tmpBasePath, | 			Dir:    tmpBasePath, | ||||||
| 			Stdout: &outbuf, | 			Stdout: &outbuf, | ||||||
| @@ -171,7 +177,7 @@ func createTemporaryRepo(ctx context.Context, pr *issues_model.PullRequest) (str | |||||||
| 	} else { | 	} else { | ||||||
| 		headBranch = pr.GetGitRefName() | 		headBranch = pr.GetGitRefName() | ||||||
| 	} | 	} | ||||||
| 	if err := git.NewCommand(ctx, "fetch", "--no-tags").AddDynamicArguments(remoteRepoName, headBranch+":"+trackingBranch). | 	if err := git.NewCommand(ctx, "fetch").AddArguments(fetchArgs...).AddDynamicArguments(remoteRepoName, headBranch+":"+trackingBranch). | ||||||
| 		Run(&git.RunOpts{ | 		Run(&git.RunOpts{ | ||||||
| 			Dir:    tmpBasePath, | 			Dir:    tmpBasePath, | ||||||
| 			Stdout: &outbuf, | 			Stdout: &outbuf, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user