diff --git a/models/repo/fork.go b/models/repo/fork.go index 39380afeb1..da00ccef40 100644 --- a/models/repo/fork.go +++ b/models/repo/fork.go @@ -104,11 +104,13 @@ func GetForksByUserAndOrgs(ctx context.Context, user *user_model.User, repo *Rep // ReparentFork sets the fork to be an unforked repository and the forked repo becomes its fork func ReparentFork(ctx context.Context, forkedRepoID, srcForkID int64) error { - if _, err := db.GetEngine(ctx).Table("repository").ID(srcForkID).Cols("fork_id", "is_fork").Update(&Repository{ForkID: forkedRepoID, IsFork: true}); err != nil { - return err - } - if _, err := db.GetEngine(ctx).Table("repository").ID(forkedRepoID).Cols("fork_id", "is_fork", "num_forks").Update(&Repository{ForkID: 0, NumForks: 1, IsFork: false}); err != nil { - return err - } - return nil + return db.WithTx(ctx, func(ctx context.Context) error { + if _, err := db.GetEngine(ctx).Table("repository").ID(srcForkID).Cols("fork_id", "is_fork").Update(&Repository{ForkID: forkedRepoID, IsFork: true}); err != nil { + return err + } + if _, err := db.GetEngine(ctx).Table("repository").ID(forkedRepoID).Cols("fork_id", "is_fork", "num_forks").Update(&Repository{ForkID: 0, NumForks: 1, IsFork: false}); err != nil { + return err + } + return nil + }) }