Skip to content

Commit a134401

Browse files
committed
update repo RefFullName on comment when repo change owner, rename or transfer owner
1 parent d8dec2c commit a134401

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

models/repo.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,6 +1477,16 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
14771477
return fmt.Errorf("update owner: %v", err)
14781478
}
14791479

1480+
// Update comment repofullname
1481+
if _, err := sess.Where("issue_id IN (SELECT id FROM issue WHERE repo_id = ?)", repo.ID).
1482+
And("`type` = ?", CommentTypePullPushCommit).
1483+
Cols("repo_full_name").
1484+
Update(&Comment{
1485+
RepoFullName: repo.FullName(),
1486+
}); err != nil {
1487+
return fmt.Errorf("update comment: %v", err)
1488+
}
1489+
14801490
// Remove redundant collaborators.
14811491
collaborators, err := repo.getCollaborators(sess)
14821492
if err != nil {
@@ -1567,7 +1577,8 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
15671577
}
15681578

15691579
// ChangeRepositoryName changes all corresponding setting from old repository name to new one.
1570-
func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error) {
1580+
func ChangeRepositoryName(repo *Repository, oldRepoName, newRepoName string) (err error) {
1581+
u := repo.Owner
15711582
oldRepoName = strings.ToLower(oldRepoName)
15721583
newRepoName = strings.ToLower(newRepoName)
15731584
if err = IsUsableRepoName(newRepoName); err != nil {
@@ -1581,11 +1592,6 @@ func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error)
15811592
return ErrRepoAlreadyExist{u.Name, newRepoName}
15821593
}
15831594

1584-
repo, err := GetRepositoryByName(u.ID, oldRepoName)
1585-
if err != nil {
1586-
return fmt.Errorf("GetRepositoryByName: %v", err)
1587-
}
1588-
15891595
// Change repository directory name.
15901596
if err = os.Rename(repo.RepoPath(), RepoPath(u.Name, newRepoName)); err != nil {
15911597
return fmt.Errorf("rename repository directory: %v", err)
@@ -1599,7 +1605,14 @@ func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error)
15991605
RemoveAllWithNotice("Delete repository wiki local copy", repo.LocalUncycloPath())
16001606
}
16011607

1602-
return nil
1608+
_, err = x.Where("issue_id IN (SELECT id FROM issue WHERE repo_id = ?)", repo.ID).
1609+
And("`type` = ?", CommentTypePullPushCommit).
1610+
Cols("repo_full_name").
1611+
Update(&Comment{
1612+
RepoFullName: u.Name + "/" + newRepoName,
1613+
})
1614+
1615+
return err
16031616
}
16041617

16051618
func getRepositoriesByForkID(e Engine, forkID int64) ([]*Repository, error) {

models/user.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,13 @@ func ChangeUserName(u *User, newUserName string) (err error) {
806806
Iterate(new(Repository), func(idx int, bean interface{}) error {
807807
repo := bean.(*Repository)
808808
RemoveAllWithNotice("Delete repository wiki local copy", repo.LocalUncycloPath())
809-
return nil
809+
_, err := x.Where("issue_id IN (SELECT id FROM issue WHERE repo_id = ?)", repo.ID).
810+
And("`type` = ?", CommentTypePullPushCommit).
811+
Cols("repo_full_name").
812+
Update(&Comment{
813+
RepoFullName: newUserName + "/" + repo.Name,
814+
})
815+
return err
810816
}); err != nil {
811817
return fmt.Errorf("Delete repository wiki local copy: %v", err)
812818
}

routers/repo/setting.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
5555
// Check if repository name has been changed.
5656
if repo.LowerName != strings.ToLower(newRepoName) {
5757
isNameChanged = true
58-
if err := models.ChangeRepositoryName(ctx.Repo.Owner, repo.Name, newRepoName); err != nil {
58+
if err := models.ChangeRepositoryName(ctx.Repo.Repository, repo.Name, newRepoName); err != nil {
5959
ctx.Data["Err_RepoName"] = true
6060
switch {
6161
case models.IsErrRepoAlreadyExist(err):

0 commit comments

Comments
 (0)