Skip to content

Commit

Permalink
add documentation for writing config files
Browse files Browse the repository at this point in the history
Replace TODO introduced in commit 9c3c22 with documentation
explaining Git config API functions for writing configuration
files.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tanay Abhra authored and Junio C Hamano committed Jul 30, 2014
1 parent d299e9e commit 97d6e79
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 additions & 1 deletion Documentation/technical/api-config.txt
Original file line number Diff line number Diff line change
@@ -137,4 +137,33 @@ int read_file_with_include(const char *file, config_fn_t fn, void *data)
Writing Config Files
--------------------

TODO
Git gives multiple entry points in the Config API to write config values to
files namely `git_config_set_in_file` and `git_config_set`, which write to
a specific config file or to `.git/config` respectively. They both take a
key/value pair as parameter.
In the end they both call `git_config_set_multivar_in_file` which takes four
parameters:

- the name of the file, as a string, to which key/value pairs will be written.

- the name of key, as a string. This is in canonical "flat" form: the section,
subsection, and variable segments will be separated by dots, and the section
and variable segments will be all lowercase.
E.g., `core.ignorecase`, `diff.SomeType.textconv`.

- the value of the variable, as a string. If value is equal to NULL, it will
remove the matching key from the config file.

- the value regex, as a string. It will disregard key/value pairs where value
does not match.

- a multi_replace value, as an int. If value is equal to zero, nothing or only
one matching key/value is replaced, else all matching key/values (regardless
how many) are removed, before the new pair is written.

It returns 0 on success.

Also, there are functions `git_config_rename_section` and
`git_config_rename_section_in_file` with parameters `old_name` and `new_name`
for renaming or removing sections in the config files. If NULL is passed
through `new_name` parameter, the section will be removed from the config file.

0 comments on commit 97d6e79

Please sign in to comment.