@@ -120,6 +120,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
120120 }
121121
122122 // last - clean up if something goes wrong
123+ // WARNING: Don't override all later err with local variables
123124 defer func () {
124125 if err != nil {
125126 if errDelete := DeleteRepositoryDirectly (ctx , doer , repo .ID ); errDelete != nil {
@@ -133,20 +134,22 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
133134 if opts .SingleBranch != "" {
134135 cloneCmd .AddArguments ("--single-branch" , "--branch" ).AddDynamicArguments (opts .SingleBranch )
135136 }
136- if stdout , _ , err := cloneCmd .AddDynamicArguments (opts .BaseRepo .RepoPath (), repo .RepoPath ()).
137+ var stdout []byte
138+ if stdout , _ , err = cloneCmd .AddDynamicArguments (opts .BaseRepo .RepoPath (), repo .RepoPath ()).
137139 RunStdBytes (ctx , & git.RunOpts {Timeout : 10 * time .Minute }); err != nil {
138140 log .Error ("Fork Repository (git clone) Failed for %v (from %v):\n Stdout: %s\n Error: %v" , repo , opts .BaseRepo , stdout , err )
139141 return nil , fmt .Errorf ("git clone: %w" , err )
140142 }
141143
142144 // 3 - Update the repository
143- if err : = repo_module .CheckDaemonExportOK (ctx , repo ); err != nil {
145+ if err = repo_module .CheckDaemonExportOK (ctx , repo ); err != nil {
144146 return nil , fmt .Errorf ("checkDaemonExportOK: %w" , err )
145147 }
146148
147- if stdout , _ , err := git .NewCommand ("update-server-info" ).
149+ var output string
150+ if output , _ , err = git .NewCommand ("update-server-info" ).
148151 RunStdString (ctx , & git.RunOpts {Dir : repo .RepoPath ()}); err != nil {
149- log .Error ("Fork Repository (git update-server-info) failed for %v:\n Stdout: %s\n Error: %v" , repo , stdout , err )
152+ log .Error ("Fork Repository (git update-server-info) failed for %v:\n Stdout: %s\n Error: %v" , repo , output , err )
150153 return nil , fmt .Errorf ("git update-server-info: %w" , err )
151154 }
152155
@@ -156,7 +159,8 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
156159 }
157160
158161 // 5 - Sync the repository branches and tags
159- gitRepo , err := gitrepo .OpenRepository (ctx , repo )
162+ var gitRepo * git.Repository
163+ gitRepo , err = gitrepo .OpenRepository (ctx , repo )
160164 if err != nil {
161165 return nil , fmt .Errorf ("OpenRepository: %w" , err )
162166 }
@@ -165,19 +169,21 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
165169 if _ , err = repo_module .SyncRepoBranchesWithRepo (ctx , repo , gitRepo , doer .ID ); err != nil {
166170 return nil , fmt .Errorf ("SyncRepoBranchesWithRepo: %w" , err )
167171 }
168- if err : = repo_module .SyncReleasesWithTags (ctx , repo , gitRepo ); err != nil {
172+ if err = repo_module .SyncReleasesWithTags (ctx , repo , gitRepo ); err != nil {
169173 return nil , fmt .Errorf ("Sync releases from git tags failed: %v" , err )
170174 }
171175
172176 // 6 - Update the repository
173177 // even if below operations failed, it could be ignored. And they will be retried
174- if err : = repo_module .UpdateRepoSize (ctx , repo ); err != nil {
178+ if err = repo_module .UpdateRepoSize (ctx , repo ); err != nil {
175179 log .Error ("Failed to update size for repository: %v" , err )
180+ err = nil
176181 }
177- if err : = repo_model .CopyLanguageStat (ctx , opts .BaseRepo , repo ); err != nil {
182+ if err = repo_model .CopyLanguageStat (ctx , opts .BaseRepo , repo ); err != nil {
178183 log .Error ("Copy language stat from oldRepo failed: %v" , err )
184+ err = nil
179185 }
180- if err : = repo_model .CopyLicense (ctx , opts .BaseRepo , repo ); err != nil {
186+ if err = repo_model .CopyLicense (ctx , opts .BaseRepo , repo ); err != nil {
181187 return nil , err
182188 }
183189
0 commit comments