aboutsummaryrefslogtreecommitdiffstats
path: root/repository
diff options
context:
space:
mode:
Diffstat (limited to 'repository')
-rw-r--r--repository/git.go5
-rw-r--r--repository/git_test.go17
-rw-r--r--repository/mock_repo.go1
3 files changed, 22 insertions, 1 deletions
diff --git a/repository/git.go b/repository/git.go
index 801504f2..c8c45d6a 100644
--- a/repository/git.go
+++ b/repository/git.go
@@ -261,7 +261,12 @@ func (repo *GitRepo) ReadConfigString(key string) (string, error) {
// RmConfigs remove all key/value pair matching the key prefix
func (repo *GitRepo) RmConfigs(keyPrefix string) error {
+ // try to remove key/value pair by key
_, err := repo.runGitCommand("config", "--unset-all", keyPrefix)
+ if err != nil {
+ // try to remove section
+ _, err = repo.runGitCommand("config", "--remove-section", keyPrefix)
+ }
return err
}
diff --git a/repository/git_test.go b/repository/git_test.go
index 32634cfb..8bd3aa8e 100644
--- a/repository/git_test.go
+++ b/repository/git_test.go
@@ -35,7 +35,6 @@ func TestConfig(t *testing.T) {
configs, err = repo.ReadConfigs("section")
assert.NoError(t, err)
-
assert.Equal(t, configs, map[string]string{
"section.key": "value",
})
@@ -43,9 +42,25 @@ func TestConfig(t *testing.T) {
_, err = repo.ReadConfigBool("section.true")
assert.Equal(t, ErrNoConfigEntry, err)
+ err = repo.RmConfigs("section.nonexistingkey")
+ assert.Error(t, err)
+
err = repo.RmConfigs("section.key")
assert.NoError(t, err)
_, err = repo.ReadConfigString("section.key")
assert.Equal(t, ErrNoConfigEntry, err)
+
+ err = repo.RmConfigs("nonexistingsection")
+ assert.Error(t, err)
+
+ err = repo.RmConfigs("section")
+ assert.NoError(t, err)
+
+ _, err = repo.ReadConfigString("section.key")
+ assert.Error(t, err)
+
+ err = repo.RmConfigs("section.key")
+ assert.Error(t, err)
+
}
diff --git a/repository/mock_repo.go b/repository/mock_repo.go
index 2dc4868e..8dac1a66 100644
--- a/repository/mock_repo.go
+++ b/repository/mock_repo.go
@@ -103,6 +103,7 @@ func (r *mockRepoForTest) ReadConfigString(key string) (string, error) {
return val, nil
}
+// RmConfig remove all key/value pair matching the key prefix
func (r *mockRepoForTest) RmConfigs(keyPrefix string) error {
for key := range r.config {
if strings.HasPrefix(key, keyPrefix) {