aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
Diffstat (limited to 'storage')
-rw-r--r--storage/filesystem/config.go52
-rw-r--r--storage/filesystem/dotgit/dotgit.go50
-rw-r--r--storage/filesystem/dotgit/dotgit_test.go6
3 files changed, 22 insertions, 86 deletions
diff --git a/storage/filesystem/config.go b/storage/filesystem/config.go
index dbdce54..01b35b4 100644
--- a/storage/filesystem/config.go
+++ b/storage/filesystem/config.go
@@ -5,7 +5,6 @@ import (
"os"
"github.com/go-git/go-git/v5/config"
- format "github.com/go-git/go-git/v5/plumbing/format/config"
"github.com/go-git/go-git/v5/storage/filesystem/dotgit"
"github.com/go-git/go-git/v5/utils/ioutil"
)
@@ -14,11 +13,10 @@ type ConfigStorage struct {
dir *dotgit.DotGit
}
-func (c *ConfigStorage) Config() (*config.Config, error) {
+func (c *ConfigStorage) Config() (conf *config.Config, err error) {
cfg := config.NewConfig()
- // local config (./.git/config)
- f, err := c.dir.LocalConfig()
+ f, err := c.dir.Config()
if err != nil {
if os.IsNotExist(err) {
return cfg, nil
@@ -31,55 +29,13 @@ func (c *ConfigStorage) Config() (*config.Config, error) {
b, err := stdioutil.ReadAll(f)
if err != nil {
- return cfg, err
- }
-
- if err = cfg.UnmarshalScoped(format.LocalScope, b); err != nil {
- return cfg, err
- }
-
- // global config (~/.gitconfig)
- f, err = c.dir.GlobalConfig()
- if err != nil {
- if os.IsNotExist(err) {
- return cfg, nil
- }
-
return nil, err
}
- defer ioutil.CheckClose(f, &err)
-
- b, err = stdioutil.ReadAll(f)
- if err != nil {
- return cfg, err
- }
-
- if err = cfg.UnmarshalScoped(format.GlobalScope, b); err != nil {
- return cfg, err
- }
-
- // system config (/etc/gitconfig)
- f, err = c.dir.SystemConfig()
- if err != nil {
- if os.IsNotExist(err) {
- return cfg, nil
- }
-
+ if err = cfg.Unmarshal(b); err != nil {
return nil, err
}
- defer ioutil.CheckClose(f, &err)
-
- b, err = stdioutil.ReadAll(f)
- if err != nil {
- return cfg, err
- }
-
- if err = cfg.UnmarshalScoped(format.SystemScope, b); err != nil {
- return cfg, err
- }
-
return cfg, err
}
@@ -88,7 +44,7 @@ func (c *ConfigStorage) SetConfig(cfg *config.Config) (err error) {
return err
}
- f, err := c.dir.LocalConfigWriter()
+ f, err := c.dir.ConfigWriter()
if err != nil {
return err
}
diff --git a/storage/filesystem/dotgit/dotgit.go b/storage/filesystem/dotgit/dotgit.go
index 8c3896b..83c7683 100644
--- a/storage/filesystem/dotgit/dotgit.go
+++ b/storage/filesystem/dotgit/dotgit.go
@@ -21,17 +21,15 @@ import (
)
const (
- suffix = ".git"
- packedRefsPath = "packed-refs"
- localConfigPath = "config"
- globalConfigPath = ".gitconfig"
- systemConfigPath = "/etc/gitconfig"
- indexPath = "index"
- shallowPath = "shallow"
- modulePath = "modules"
- objectsPath = "objects"
- packPath = "pack"
- refsPath = "refs"
+ suffix = ".git"
+ packedRefsPath = "packed-refs"
+ configPath = "config"
+ indexPath = "index"
+ shallowPath = "shallow"
+ modulePath = "modules"
+ objectsPath = "objects"
+ packPath = "pack"
+ refsPath = "refs"
tmpPackedRefsPrefix = "._packed-refs"
@@ -157,32 +155,14 @@ func (d *DotGit) Close() error {
return nil
}
-// LocalConfigWriter returns a file pointer for write to the local config file
-func (d *DotGit) LocalConfigWriter() (billy.File, error) {
- return d.fs.Create(localConfigPath)
+// ConfigWriter returns a file pointer for write to the config file
+func (d *DotGit) ConfigWriter() (billy.File, error) {
+ return d.fs.Create(configPath)
}
-// LocalConfig returns a file pointer for read to the local config file
-func (d *DotGit) LocalConfig() (billy.File, error) {
- return d.fs.Open(localConfigPath)
-}
-
-// GlobalConfigWriter returns a file pointer for write to the global config file
-func (d *DotGit) GlobalConfigWriter() (billy.File, error) {
- return osfs.New(os.Getenv("HOME")).Create(globalConfigPath)
-}
-
-// GlobalConfig returns a file pointer for read to the global config file
-func (d *DotGit) GlobalConfig() (billy.File, error) {
- return osfs.New(os.Getenv("HOME")).Open(globalConfigPath)
-}
-
-// SystemConfigWriter doesn't exist because we typically do not have permission
-// to write to files in /etc.
-
-// SystemConfig returns a file pointer for read to the system config file
-func (d *DotGit) SystemConfig() (billy.File, error) {
- return osfs.New("/").Open(systemConfigPath)
+// Config returns a file pointer for read to the config file
+func (d *DotGit) Config() (billy.File, error) {
+ return d.fs.Open(configPath)
}
// IndexWriter returns a file pointer for write to the index file
diff --git a/storage/filesystem/dotgit/dotgit_test.go b/storage/filesystem/dotgit/dotgit_test.go
index 519f601..0a72aa6 100644
--- a/storage/filesystem/dotgit/dotgit_test.go
+++ b/storage/filesystem/dotgit/dotgit_test.go
@@ -344,7 +344,7 @@ func (s *SuiteDotGit) TestConfig(c *C) {
fs := fixtures.Basic().ByTag(".git").One().DotGit()
dir := New(fs)
- file, err := dir.LocalConfig()
+ file, err := dir.Config()
c.Assert(err, IsNil)
c.Assert(filepath.Base(file.Name()), Equals, "config")
}
@@ -357,13 +357,13 @@ func (s *SuiteDotGit) TestConfigWriteAndConfig(c *C) {
fs := osfs.New(tmp)
dir := New(fs)
- f, err := dir.LocalConfigWriter()
+ f, err := dir.ConfigWriter()
c.Assert(err, IsNil)
_, err = f.Write([]byte("foo"))
c.Assert(err, IsNil)
- f, err = dir.LocalConfig()
+ f, err = dir.Config()
c.Assert(err, IsNil)
cnt, err := ioutil.ReadAll(f)