mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08: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
					
				
			
			
				
	
			
			
			
						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