aboutsummaryrefslogtreecommitdiffstats
path: root/storage/filesystem
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2017-02-12 23:03:30 +0100
committerMáximo Cuadros <mcuadros@gmail.com>2017-02-12 23:03:30 +0100
commit498dbf7dc92e288641f1af1acc52704150e8a6c0 (patch)
tree7be1fab61a2eead003f07249c0312f71decaccf7 /storage/filesystem
parent87a84b1cb90149cf81e76be46811341a30e4a367 (diff)
downloadgo-git-498dbf7dc92e288641f1af1acc52704150e8a6c0.tar.gz
storage: git.Storer move to storage.Storer and module handling
Diffstat (limited to 'storage/filesystem')
-rw-r--r--storage/filesystem/internal/dotgit/dotgit.go13
-rw-r--r--storage/filesystem/module.go14
-rw-r--r--storage/filesystem/storage.go2
3 files changed, 25 insertions, 4 deletions
diff --git a/storage/filesystem/internal/dotgit/dotgit.go b/storage/filesystem/internal/dotgit/dotgit.go
index accf9ca..360b3d1 100644
--- a/storage/filesystem/internal/dotgit/dotgit.go
+++ b/storage/filesystem/internal/dotgit/dotgit.go
@@ -20,10 +20,10 @@ const (
configPath = "config"
indexPath = "index"
shallowPath = "shallow"
-
- objectsPath = "objects"
- packPath = "pack"
- refsPath = "refs"
+ modulePath = "module"
+ objectsPath = "objects"
+ packPath = "pack"
+ refsPath = "refs"
packExt = ".pack"
idxExt = ".idx"
@@ -390,6 +390,11 @@ func (d *DotGit) readReferenceFile(refsPath, refFile string) (ref *plumbing.Refe
return plumbing.NewReferenceFromStrings(refFile, line), nil
}
+// Module return a billy.Filesystem poiting to the module folder
+func (d *DotGit) Module(name string) billy.Filesystem {
+ return d.fs.Dir(d.fs.Join(modulePath, name))
+}
+
func isHex(s string) bool {
for _, b := range []byte(s) {
if isNum(b) {
diff --git a/storage/filesystem/module.go b/storage/filesystem/module.go
new file mode 100644
index 0000000..e8985d8
--- /dev/null
+++ b/storage/filesystem/module.go
@@ -0,0 +1,14 @@
+package filesystem
+
+import (
+ "srcd.works/go-git.v4/storage"
+ "srcd.works/go-git.v4/storage/filesystem/internal/dotgit"
+)
+
+type ModuleStorage struct {
+ dir *dotgit.DotGit
+}
+
+func (s *ModuleStorage) Module(name string) (storage.Storer, error) {
+ return NewStorage(s.dir.Module(name))
+}
diff --git a/storage/filesystem/storage.go b/storage/filesystem/storage.go
index 7021d3a..27dd07f 100644
--- a/storage/filesystem/storage.go
+++ b/storage/filesystem/storage.go
@@ -16,6 +16,7 @@ type Storage struct {
IndexStorage
ShallowStorage
ConfigStorage
+ ModuleStorage
}
// NewStorage returns a new Storage backed by a given `fs.Filesystem`
@@ -32,5 +33,6 @@ func NewStorage(fs billy.Filesystem) (*Storage, error) {
IndexStorage: IndexStorage{dir: dir},
ShallowStorage: ShallowStorage{dir: dir},
ConfigStorage: ConfigStorage{dir: dir},
+ ModuleStorage: ModuleStorage{dir: dir},
}, nil
}