Skip to content

Commit 9e7e112

Browse files
authored
Fix potential copy lfs records failure when fork a repository (#15441) (#15485)
1 parent 85880b2 commit 9e7e112

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

modules/repository/fork.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
6464
return err
6565
}
6666

67+
// copy lfs files failure should not be ignored
68+
if err := models.CopyLFS(ctx, repo, oldRepo); err != nil {
69+
rollbackRemoveFn()
70+
return err
71+
}
72+
6773
repoPath := models.RepoPath(owner.Name, repo.Name)
6874
if stdout, err := git.NewCommand(
6975
"clone", "--bare", oldRepoPath, repoPath).
@@ -92,6 +98,7 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
9298
return nil, err
9399
}
94100

101+
// even if below operations failed, it could be ignored. And they will be retried
95102
ctx := models.DefaultDBContext()
96103
if err = repo.UpdateSize(ctx); err != nil {
97104
log.Error("Failed to update size for repository: %v", err)
@@ -100,11 +107,5 @@ func ForkRepository(doer, owner *models.User, oldRepo *models.Repository, name,
100107
log.Error("Copy language stat from oldRepo failed")
101108
}
102109

103-
if err := models.CopyLFS(ctx, repo, oldRepo); err != nil {
104-
if errDelete := models.DeleteRepository(doer, owner.ID, repo.ID); errDelete != nil {
105-
log.Error("Rollback deleteRepository: %v", errDelete)
106-
}
107-
return nil, err
108-
}
109110
return repo, nil
110111
}

0 commit comments

Comments
 (0)