6eba2455d03c3ddd009ec04235d6a30fb897bc65

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

fix(backend): delete repo when importing existing one

Fixes: bb40f89b34de ("fix(server): bound the current context to the underlying operation")

Diff

 1diff --git a/server/backend/sqlite/error.go b/server/backend/sqlite/error.go
 2index 1422697a9ba60dd105fb31af5ed2f0d68c047f04..8476f640ccd3fb0728e5521e1e2db2d1ec268ce0 100644
 3--- a/server/backend/sqlite/error.go
 4+++ b/server/backend/sqlite/error.go
 5@@ -14,4 +14,7 @@ var (
 6 
 7 	// ErrRepoNotExist is returned when a repository does not exist.
 8 	ErrRepoNotExist = fmt.Errorf("repository does not exist")
 9+
10+	// ErrRepoExist is returned when a repository already exists.
11+	ErrRepoExist = fmt.Errorf("repository already exists")
12 )
13diff --git a/server/backend/sqlite/sqlite.go b/server/backend/sqlite/sqlite.go
14index 25d396a352f1911949db410f96182acf5351888b..d45a9f4052394438b56ac5719afb3e15c25d0eb8 100644
15--- a/server/backend/sqlite/sqlite.go
16+++ b/server/backend/sqlite/sqlite.go
17@@ -184,6 +184,10 @@ func (d *SqliteBackend) ImportRepository(name string, remote string, opts backen
18 	repo := name + ".git"
19 	rp := filepath.Join(d.reposPath(), repo)
20 
21+	if _, err := os.Stat(rp); err == nil || os.IsExist(err) {
22+		return nil, ErrRepoExist
23+	}
24+
25 	copts := git.CloneOptions{
26 		Bare:    true,
27 		Mirror:  opts.Mirror,