mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 14:34:35 +00:00 
			
		
		
		
	Move git config/remote to gitrepo package and add global lock to resolve possible conflict when updating repository git config file (#35151)
Partially fix #32018 `git config` and `git remote` write operations create a temporary file named `config.lock`. Since these operations are not atomic, they must not be run in parallel. If two requests attempt to modify the same repository concurrently—such as during a compare operation—one may fail due to the presence of an existing `config.lock` file. In cases where `config.lock` is left behind due to an unexpected program exit, a global lock mechanism could allow us to safely remove the stale lock file when a related error is detected. While this behavior is not yet implemented in this PR, it is planned for a future enhancement. --------- Signed-off-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -141,7 +141,7 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		compareInfo, err := baseGitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(), | ||||
| 		compareInfo, err := GetCompareInfo(ctx, pr.BaseRepo, pr.BaseRepo, baseGitRepo, | ||||
| 			git.BranchPrefix+pr.BaseBranch, pr.GetGitHeadRefName(), false, false) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| @@ -1074,7 +1074,7 @@ func GetPullCommits(ctx context.Context, baseGitRepo *git.Repository, doer *user | ||||
| 	if pull.HasMerged { | ||||
| 		baseBranch = pull.MergeBase | ||||
| 	} | ||||
| 	prInfo, err := baseGitRepo.GetCompareInfo(pull.BaseRepo.RepoPath(), baseBranch, pull.GetGitHeadRefName(), true, false) | ||||
| 	prInfo, err := GetCompareInfo(ctx, pull.BaseRepo, pull.BaseRepo, baseGitRepo, baseBranch, pull.GetGitHeadRefName(), true, false) | ||||
| 	if err != nil { | ||||
| 		return nil, "", err | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user