Skip to content

Commit 050fad9

Browse files
committed
revert change to fork
1 parent 743cebe commit 050fad9

File tree

5 files changed

+32
-23
lines changed

5 files changed

+32
-23
lines changed

models/repo/fork.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,15 @@ func GetRepositoriesByForkID(ctx context.Context, forkID int64) ([]*Repository,
2121
}
2222

2323
// GetForkedRepo checks if given user has already forked a repository with given ID.
24-
func GetForkedRepo(ctx context.Context, ownerID, repoID int64) (*Repository, error) {
24+
func GetForkedRepo(ctx context.Context, ownerID, repoID int64) *Repository {
2525
repo := new(Repository)
26-
has, err := db.GetEngine(ctx).
26+
has, _ := db.GetEngine(ctx).
2727
Where("owner_id=? AND fork_id=?", ownerID, repoID).
2828
Get(repo)
29-
if err != nil {
30-
return nil, err
31-
} else if !has {
32-
return nil, ErrRepoNotExist{ID: repoID}
29+
if has {
30+
return repo
3331
}
34-
return repo, nil
32+
return nil
3533
}
3634

3735
// HasForkedRepo checks if given user has already forked a repository with given ID.
@@ -43,6 +41,19 @@ func HasForkedRepo(ctx context.Context, ownerID, repoID int64) bool {
4341
return has
4442
}
4543

44+
// GetUserFork return user forked repository from this repository, if not forked return nil
45+
func GetUserFork(ctx context.Context, repoID, userID int64) (*Repository, error) {
46+
var forkedRepo Repository
47+
has, err := db.GetEngine(ctx).Where("fork_id = ?", repoID).And("owner_id = ?", userID).Get(&forkedRepo)
48+
if err != nil {
49+
return nil, err
50+
}
51+
if !has {
52+
return nil, nil
53+
}
54+
return &forkedRepo, nil
55+
}
56+
4657
// IncrementRepoForkNum increment repository fork number
4758
func IncrementRepoForkNum(ctx context.Context, repoID int64) error {
4859
_, err := db.GetEngine(ctx).Exec("UPDATE `repository` SET num_forks=num_forks+1 WHERE id=?", repoID)
@@ -76,8 +87,8 @@ func GetForksByUserAndOrgs(ctx context.Context, user *user_model.User, repo *Rep
7687
if user == nil {
7788
return repoList, nil
7889
}
79-
forkedRepo, err := GetForkedRepo(ctx, repo.ID, user.ID)
80-
if err != nil && !IsErrRepoNotExist(err) {
90+
forkedRepo, err := GetUserFork(ctx, repo.ID, user.ID)
91+
if err != nil {
8192
return repoList, err
8293
}
8394
if forkedRepo != nil {

models/repo/fork_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ func TestGetUserFork(t *testing.T) {
2020
repo, err := repo_model.GetRepositoryByID(db.DefaultContext, 10)
2121
assert.NoError(t, err)
2222
assert.NotNil(t, repo)
23-
repo, err = repo_model.GetForkedRepo(db.DefaultContext, repo.ID, 13)
23+
repo, err = repo_model.GetUserFork(db.DefaultContext, repo.ID, 13)
2424
assert.NoError(t, err)
2525
assert.NotNil(t, repo)
2626

2727
repo, err = repo_model.GetRepositoryByID(db.DefaultContext, 9)
2828
assert.NoError(t, err)
2929
assert.NotNil(t, repo)
30-
repo, err = repo_model.GetForkedRepo(db.DefaultContext, repo.ID, 13)
30+
repo, err = repo_model.GetUserFork(db.DefaultContext, repo.ID, 13)
3131
assert.NoError(t, err)
3232
assert.Nil(t, repo)
3333
}

routers/common/compare.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ func (ci *CompareInfo) Close() {
119119
}
120120
}
121121

122+
// detectFullRef detects a short name as a branch, tag or commit's full ref name and type.
123+
// It's the same job as git.UnstableGuessRefByShortName but with a database read instead of git read.
122124
func detectFullRef(ctx context.Context, repoID int64, gitRepo *git.Repository, oriRef string) (git.RefName, bool, error) {
123125
b, err := git_model.GetBranch(ctx, repoID, oriRef)
124126
if err != nil && !git_model.IsErrBranchNotExist(err) {
@@ -166,13 +168,13 @@ func findHeadRepoFromRootBase(ctx context.Context, baseRepo *repo_model.Reposito
166168
return nil, nil
167169
}
168170
// test if we are lucky
169-
repo, err := repo_model.GetForkedRepo(ctx, headUserID, baseRepo.ID)
170-
if err == nil {
171-
return repo, nil
172-
}
173-
if !repo_model.IsErrRepoNotExist(err) {
171+
repo, err := repo_model.GetUserFork(ctx, headUserID, baseRepo.ID)
172+
if err != nil {
174173
return nil, err
175174
}
175+
if repo != nil {
176+
return repo, nil
177+
}
176178

177179
firstLevelForkedRepo, err := repo_model.GetRepositoriesByForkID(ctx, baseRepo.ID)
178180
if err != nil {

routers/web/repo/fork.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,7 @@ func ForkPost(ctx *context.Context) {
166166
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_has_same_repo"), tplFork, &form)
167167
return
168168
}
169-
repo, err := repo_model.GetForkedRepo(ctx, ctxUser.ID, traverseParentRepo.ID)
170-
if err != nil && !repo_model.IsErrRepoNotExist(err) {
171-
ctx.ServerError("GetForkedRepo", err)
172-
return
173-
}
169+
repo := repo_model.GetForkedRepo(ctx, ctxUser.ID, traverseParentRepo.ID)
174170
if repo != nil {
175171
ctx.Redirect(ctxUser.HomeLink() + "/" + url.PathEscape(repo.Name))
176172
return

services/repository/fork.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
7171
}
7272
}
7373

74-
forkedRepo, err := repo_model.GetForkedRepo(ctx, opts.BaseRepo.ID, owner.ID)
75-
if err != nil && !repo_model.IsErrRepoNotExist(err) {
74+
forkedRepo, err := repo_model.GetUserFork(ctx, opts.BaseRepo.ID, owner.ID)
75+
if err != nil {
7676
return nil, err
7777
}
7878
if forkedRepo != nil {

0 commit comments

Comments
 (0)