Implement git_repository_set_config (#735) #743
|
@ -165,6 +165,17 @@ func (v *Repository) Config() (*Config, error) {
|
||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetConfig sets the configuration file for this repository.
|
||||||
|
//
|
||||||
|
// This configuration file will be used for all configuration queries involving
|
||||||
|
// this repository.
|
||||||
|
func (v *Repository) SetConfig(c *Config) error {
|
||||||
|
C.git_repository_set_config(v.ptr, c.ptr)
|
||||||
|
runtime.KeepAlive(v)
|
||||||
|
runtime.KeepAlive(c)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (v *Repository) Index() (*Index, error) {
|
func (v *Repository) Index() (*Index, error) {
|
||||||
var ptr *C.git_index
|
var ptr *C.git_index
|
||||||
|
|
||||||
|
|
|
@ -40,3 +40,55 @@ func TestCreateCommitFromIds(t *testing.T) {
|
||||||
t.Errorf("mismatched commit ids, expected %v, got %v", expectedCommitId.String(), commitId.String())
|
t.Errorf("mismatched commit ids, expected %v, got %v", expectedCommitId.String(), commitId.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRepositorySetConfig(t *testing.T) {
|
||||||
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
|
loc, err := time.LoadLocation("Europe/Berlin")
|
||||||
|
checkFatal(t, err)
|
||||||
|
sig := &Signature{
|
||||||
|
Name: "Rand Om Hacker",
|
||||||
|
Email: "random@hacker.com",
|
||||||
|
When: time.Date(2013, 03, 06, 14, 30, 0, 0, loc),
|
||||||
|
}
|
||||||
|
|
||||||
|
idx, err := repo.Index()
|
||||||
|
checkFatal(t, err)
|
||||||
|
err = idx.AddByPath("README")
|
||||||
|
|
||||||
|
treeId, err := idx.WriteTree()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
message := "This is a commit\n"
|
||||||
|
tree, err := repo.LookupTree(treeId)
|
||||||
|
checkFatal(t, err)
|
||||||
|
_, err = repo.CreateCommit("HEAD", sig, sig, message, tree)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
repoConfig, err := repo.Config()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
temp := Config{}
|
||||||
|
localConfig, err := temp.OpenLevel(repoConfig, ConfigLevelLocal)
|
||||||
|
checkFatal(t, err)
|
||||||
|
repoConfig = nil
|
||||||
|
|
||||||
|
err = repo.SetConfig(localConfig)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
configFieldName := "core.filemode"
|
||||||
|
err = localConfig.SetBool(configFieldName, true)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
localConfig = nil
|
||||||
|
|
||||||
|
repoConfig, err = repo.Config()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
result, err := repoConfig.LookupBool(configFieldName)
|
||||||
|
checkFatal(t, err)
|
||||||
|
if result != true {
|
||||||
|
t.Fatal("result must be true")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue