Fix race condition in repo renaming (#3418)
This commit is contained in:
parent
c55a027da3
commit
bac6ac033a
1 changed files with 6 additions and 1 deletions
|
@ -1579,7 +1579,12 @@ func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error)
|
||||||
return fmt.Errorf("GetRepositoryByName: %v", err)
|
return fmt.Errorf("GetRepositoryByName: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change repository directory name.
|
// Change repository directory name. We must lock the local copy of the
|
||||||
|
// repo so that we can atomically rename the repo path and updates the
|
||||||
|
// local copy's origin accordingly.
|
||||||
|
repoWorkingPool.CheckIn(com.ToStr(repo.ID))
|
||||||
|
defer repoWorkingPool.CheckOut(com.ToStr(repo.ID))
|
||||||
|
|
||||||
newRepoPath := RepoPath(u.Name, newRepoName)
|
newRepoPath := RepoPath(u.Name, newRepoName)
|
||||||
if err = os.Rename(repo.RepoPath(), newRepoPath); err != nil {
|
if err = os.Rename(repo.RepoPath(), newRepoPath); err != nil {
|
||||||
return fmt.Errorf("rename repository directory: %v", err)
|
return fmt.Errorf("rename repository directory: %v", err)
|
||||||
|
|
Reference in a new issue