@@ -16,15 +16,15 @@ import (
1616)
1717
1818// 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 . BaseRepo .GetUserFork (owner .ID )
2121 if err != nil {
2222 return nil , err
2323 }
2424 if forkedRepo != nil {
2525 return nil , models.ErrForkAlreadyExist {
2626 Uname : owner .Name ,
27- RepoName : oldRepo .FullName (),
27+ RepoName : opts . BaseRepo .FullName (),
2828 ForkName : forkedRepo .FullName (),
2929 }
3030 }
@@ -33,17 +33,17 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
3333 OwnerID : owner .ID ,
3434 Owner : owner ,
3535 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 . BaseRepo .DefaultBranch ,
40+ IsPrivate : opts . BaseRepo . IsPrivate || opts . BaseRepo .Owner .Visibility == structs .VisibleTypePrivate ,
41+ IsEmpty : opts . BaseRepo .IsEmpty ,
4242 IsFork : true ,
43- ForkID : oldRepo .ID ,
43+ ForkID : opts . BaseRepo .ID ,
4444 }
4545
46- oldRepoPath := oldRepo .RepoPath ()
46+ oldRepoPath := opts . BaseRepo .RepoPath ()
4747
4848 err = models .WithTx (func (ctx models.DBContext ) error {
4949 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,
5959 }
6060 }
6161
62- if err = models .IncrementRepoForkNum (ctx , oldRepo .ID ); err != nil {
62+ if err = models .IncrementRepoForkNum (ctx , opts . BaseRepo .ID ); err != nil {
6363 rollbackRemoveFn ()
6464 return err
6565 }
6666
6767 // 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 . BaseRepo ); err != nil {
6969 rollbackRemoveFn ()
7070 return err
7171 }
7272
7373 repoPath := models .RepoPath (owner .Name , repo .Name )
7474 if stdout , err := git .NewCommand (
7575 "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 . BaseRepo .FullName (), repo .FullName ())).
7777 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 . BaseRepo , stdout , err )
7979 rollbackRemoveFn ()
8080 return fmt .Errorf ("git clone: %v" , err )
8181 }
@@ -103,7 +103,7 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
103103 if err = repo .UpdateSize (ctx ); err != nil {
104104 log .Error ("Failed to update size for repository: %v" , err )
105105 }
106- if err := models .CopyLanguageStat (oldRepo , repo ); err != nil {
106+ if err := models .CopyLanguageStat (opts . BaseRepo , repo ); err != nil {
107107 log .Error ("Copy language stat from oldRepo failed" )
108108 }
109109
0 commit comments