@@ -7,10 +7,14 @@ package repository
7
7
import (
8
8
"code.gitea.io/gitea/models"
9
9
"code.gitea.io/gitea/modules/notification"
10
+ "code.gitea.io/gitea/modules/sync"
10
11
11
12
"github.com/unknwon/com"
12
13
)
13
14
15
+ // repoWorkingPool represents a working pool to order the parallel changes to the same repository
16
+ var repoWorkingPool = sync .NewExclusivePool ()
17
+
14
18
// TransferOwnership transfers all corresponding setting from old user to new one.
15
19
func TransferOwnership (doer * models.User , newOwnerName string , repo * models.Repository ) error {
16
20
if err := repo .GetOwner (); err != nil {
@@ -19,12 +23,12 @@ func TransferOwnership(doer *models.User, newOwnerName string, repo *models.Repo
19
23
20
24
oldOwner := repo .Owner
21
25
22
- models . RepoWorkingPool .CheckIn (com .ToStr (repo .ID ))
26
+ repoWorkingPool .CheckIn (com .ToStr (repo .ID ))
23
27
if err := models .TransferOwnership (doer , newOwnerName , repo ); err != nil {
24
- models . RepoWorkingPool .CheckOut (com .ToStr (repo .ID ))
28
+ repoWorkingPool .CheckOut (com .ToStr (repo .ID ))
25
29
return err
26
30
}
27
- models . RepoWorkingPool .CheckOut (com .ToStr (repo .ID ))
31
+ repoWorkingPool .CheckOut (com .ToStr (repo .ID ))
28
32
29
33
notification .NotifyTransferRepository (doer , repo , oldOwner .Name )
30
34
@@ -39,12 +43,12 @@ func ChangeRepositoryName(doer *models.User, repo *models.Repository, newRepoNam
39
43
// repo so that we can atomically rename the repo path and updates the
40
44
// local copy's origin accordingly.
41
45
42
- models . RepoWorkingPool .CheckIn (com .ToStr (repo .ID ))
46
+ repoWorkingPool .CheckIn (com .ToStr (repo .ID ))
43
47
if err := models .ChangeRepositoryName (doer , repo , newRepoName ); err != nil {
44
- models . RepoWorkingPool .CheckOut (com .ToStr (repo .ID ))
48
+ repoWorkingPool .CheckOut (com .ToStr (repo .ID ))
45
49
return err
46
50
}
47
- models . RepoWorkingPool .CheckOut (com .ToStr (repo .ID ))
51
+ repoWorkingPool .CheckOut (com .ToStr (repo .ID ))
48
52
49
53
notification .NotifyRenameRepository (doer , repo , oldRepoName )
50
54
0 commit comments