mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09: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:
		| @@ -38,6 +38,17 @@ func (repo *Repository) GetAllCommitsCount() (int64, error) { | ||||
| 	return AllCommitsCount(repo.Ctx, repo.Path, false) | ||||
| } | ||||
|  | ||||
| func (repo *Repository) ShowPrettyFormatLogToList(ctx context.Context, revisionRange string) ([]*Commit, error) { | ||||
| 	// avoid: ambiguous argument 'refs/a...refs/b': unknown revision or path not in the working tree. Use '--': 'git <command> [<revision>...] -- [<file>...]' | ||||
| 	logs, _, err := NewCommand("log").AddArguments(prettyLogFormat). | ||||
| 		AddDynamicArguments(revisionRange).AddArguments("--"). | ||||
| 		RunStdBytes(ctx, &RunOpts{Dir: repo.Path}) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return repo.parsePrettyFormatLogToList(logs) | ||||
| } | ||||
|  | ||||
| func (repo *Repository) parsePrettyFormatLogToList(logs []byte) ([]*Commit, error) { | ||||
| 	var commits []*Commit | ||||
| 	if len(logs) == 0 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user