The Salt function 'git.config_set' and the state 'git.config' (which relies
on the former) don't escape the value to be set in the configuration file
passed by Salt. For example, this doesn't work:
mylocalrepo:
git.config:
- name: user.name
- value: "Jonathan Ballet"
- repo: file://my/path/to/repo
This set the 'user.name' configuration value to "Jonathan" only.
(Additionally, the state discovers that the value set is not the one
specified, and keeps trying to set the right value, which ends up with lot
of "name = Jonathan" into the "[user]" section of Git's config file.)
This commit fixes the problem and adds some unit tests to verify it's
working properly.
The problem here is that we will need to create a small static
git repo somewhere first, relying on the mozilla one causes
other tests to fail due to timeouts and makes the test run VERY
long
* Always remove the repository directory.
* When testing recursive with git 1.7.9.5, we cannot test for a directory because it's a plain file with the contents:
gitdir: /tmp/salt-tests-tmpdir/salt_repo/.git/modules/vendor/modules/js/receiptverifier
* don't overwrite or delete when the force option is not true
* when the user `runas` doesn't have permission to create a directory in the
parent directory of `target` or `name`, the directory may be created in
preparation of git. So, don't remove the empty directory before cloning.
* the force option still removes the directory even if it is empty
* ensure submodules are initiated recursively everywhere for consistency
* catch all module calls for consistency
* tests to test