Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <jfargher@gitlab.com>2023-05-26 01:11:48 +0300
committerJames Fargher <jfargher@gitlab.com>2023-06-01 03:52:26 +0300
commitb256361ad89292246032543fb712b8ff503be5f9 (patch)
tree79b6a6c0d70aedafd0102ac94df6f2a51a22e97e
parentf5d65cd7bd229eb29c603584d1d2a04ab7e6450c (diff)
backup: Implement create repository for backup.Repository
In preparation for server-side backups here we extract the RPC implementation of create repository and add a corresponding server-side implementation.
-rw-r--r--internal/backup/backup.go15
-rw-r--r--internal/backup/repository.go24
2 files changed, 27 insertions, 12 deletions
diff --git a/internal/backup/backup.go b/internal/backup/backup.go
index 3acaf36a3..545f50efe 100644
--- a/internal/backup/backup.go
+++ b/internal/backup/backup.go
@@ -85,6 +85,8 @@ type Repository interface {
// Remove removes the repository. Does not return an error if the
// repository cannot be found.
Remove(ctx context.Context) error
+ // Create creates the repository.
+ Create(ctx context.Context) error
}
// ResolveLocator returns a locator implementation based on a locator identifier.
@@ -269,7 +271,7 @@ func (mgr *Manager) Restore(ctx context.Context, req *RestoreRequest) error {
return fmt.Errorf("manager: %w", err)
}
- if err := mgr.createRepository(ctx, req.Server, req.Repository); err != nil {
+ if err := repo.Create(ctx); err != nil {
return fmt.Errorf("manager: %w", err)
}
@@ -315,17 +317,6 @@ func setContextServerInfo(ctx context.Context, server *storage.ServerInfo, stora
return nil
}
-func (mgr *Manager) createRepository(ctx context.Context, server storage.ServerInfo, repo *gitalypb.Repository) error {
- repoClient, err := mgr.newRepoClient(ctx, server)
- if err != nil {
- return fmt.Errorf("create repository: %w", err)
- }
- if _, err := repoClient.CreateRepository(ctx, &gitalypb.CreateRepositoryRequest{Repository: repo}); err != nil {
- return fmt.Errorf("create repository: %w", err)
- }
- return nil
-}
-
func (mgr *Manager) writeBundle(ctx context.Context, repo Repository, step *Step, refs []git.Reference) (returnErr error) {
negatedRefs, err := mgr.negatedKnownRefs(ctx, step)
if err != nil {
diff --git a/internal/backup/repository.go b/internal/backup/repository.go
index 6c66b29af..204ee1e8c 100644
--- a/internal/backup/repository.go
+++ b/internal/backup/repository.go
@@ -165,6 +165,15 @@ func (rr *remoteRepository) Remove(ctx context.Context) error {
return nil
}
+// Create creates the repository.
+func (rr *remoteRepository) Create(ctx context.Context) error {
+ repoClient := rr.newRepoClient()
+ if _, err := repoClient.CreateRepository(ctx, &gitalypb.CreateRepositoryRequest{Repository: rr.repo}); err != nil {
+ return fmt.Errorf("remote repository: create: %w", err)
+ }
+ return nil
+}
+
func (rr *remoteRepository) newRepoClient() gitalypb.RepositoryServiceClient {
return gitalypb.NewRepositoryServiceClient(rr.conn)
}
@@ -268,3 +277,18 @@ func (r *localRepository) Remove(ctx context.Context) error {
}
return nil
}
+
+// Create creates the repository.
+func (r *localRepository) Create(ctx context.Context) error {
+ if err := repoutil.Create(
+ ctx,
+ r.locator,
+ r.gitCmdFactory,
+ r.txManager,
+ r.repo,
+ func(repository *gitalypb.Repository) error { return nil },
+ ); err != nil {
+ return fmt.Errorf("local repository: create: %w", err)
+ }
+ return nil
+}