@@ -16,15 +16,15 @@ import (
16
16
)
17
17
18
18
// ForkRepository forks a repository
19
- func ForkRepository (doer , owner * models.User , oldRepo * models.Repository , name , desc string ) (_ * models.Repository , err error ) {
20
- forkedRepo , err := oldRepo .GetUserFork (owner .ID )
19
+ func ForkRepository (doer , owner * models.User , opts models.ForkRepoOptions ) (_ * models.Repository , err error ) {
20
+ forkedRepo , err := opts . OldRepo .GetUserFork (owner .ID )
21
21
if err != nil {
22
22
return nil , err
23
23
}
24
24
if forkedRepo != nil {
25
25
return nil , models.ErrForkAlreadyExist {
26
26
Uname : owner .Name ,
27
- RepoName : oldRepo .FullName (),
27
+ RepoName : opts . OldRepo .FullName (),
28
28
ForkName : forkedRepo .FullName (),
29
29
}
30
30
}
@@ -33,17 +33,17 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
33
33
OwnerID : owner .ID ,
34
34
Owner : owner ,
35
35
OwnerName : owner .Name ,
36
- Name : name ,
37
- LowerName : strings .ToLower (name ),
38
- Description : desc ,
39
- DefaultBranch : oldRepo .DefaultBranch ,
40
- IsPrivate : oldRepo . IsPrivate || oldRepo .Owner .Visibility == structs .VisibleTypePrivate ,
41
- IsEmpty : oldRepo .IsEmpty ,
36
+ Name : opts . Name ,
37
+ LowerName : strings .ToLower (opts . Name ),
38
+ Description : opts . Description ,
39
+ DefaultBranch : opts . OldRepo .DefaultBranch ,
40
+ IsPrivate : opts . OldRepo . IsPrivate || opts . OldRepo .Owner .Visibility == structs .VisibleTypePrivate ,
41
+ IsEmpty : opts . OldRepo .IsEmpty ,
42
42
IsFork : true ,
43
- ForkID : oldRepo .ID ,
43
+ ForkID : opts . OldRepo .ID ,
44
44
}
45
45
46
- oldRepoPath := oldRepo .RepoPath ()
46
+ oldRepoPath := opts . OldRepo .RepoPath ()
47
47
48
48
err = models .WithTx (func (ctx models.DBContext ) error {
49
49
if err = models .CreateRepository (ctx , doer , owner , repo , false ); err != nil {
@@ -59,23 +59,23 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
59
59
}
60
60
}
61
61
62
- if err = models .IncrementRepoForkNum (ctx , oldRepo .ID ); err != nil {
62
+ if err = models .IncrementRepoForkNum (ctx , opts . OldRepo .ID ); err != nil {
63
63
rollbackRemoveFn ()
64
64
return err
65
65
}
66
66
67
67
// copy lfs files failure should not be ignored
68
- if err := models .CopyLFS (ctx , repo , oldRepo ); err != nil {
68
+ if err := models .CopyLFS (ctx , repo , opts . OldRepo ); err != nil {
69
69
rollbackRemoveFn ()
70
70
return err
71
71
}
72
72
73
73
repoPath := models .RepoPath (owner .Name , repo .Name )
74
74
if stdout , err := git .NewCommand (
75
75
"clone" , "--bare" , oldRepoPath , repoPath ).
76
- SetDescription (fmt .Sprintf ("ForkRepository(git clone): %s to %s" , oldRepo .FullName (), repo .FullName ())).
76
+ SetDescription (fmt .Sprintf ("ForkRepository(git clone): %s to %s" , opts . OldRepo .FullName (), repo .FullName ())).
77
77
RunInDirTimeout (10 * time .Minute , "" ); err != nil {
78
- log .Error ("Fork Repository (git clone) Failed for %v (from %v):\n Stdout: %s\n Error: %v" , repo , oldRepo , stdout , err )
78
+ log .Error ("Fork Repository (git clone) Failed for %v (from %v):\n Stdout: %s\n Error: %v" , repo , opts . OldRepo , stdout , err )
79
79
rollbackRemoveFn ()
80
80
return fmt .Errorf ("git clone: %v" , err )
81
81
}
@@ -103,7 +103,7 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
103
103
if err = repo .UpdateSize (ctx ); err != nil {
104
104
log .Error ("Failed to update size for repository: %v" , err )
105
105
}
106
- if err := models .CopyLanguageStat (oldRepo , repo ); err != nil {
106
+ if err := models .CopyLanguageStat (opts . OldRepo , repo ); err != nil {
107
107
log .Error ("Copy language stat from oldRepo failed" )
108
108
}
109
109
0 commit comments