The previous patch series can be found at [1]. [1] http://thread.gmane.org/gmane.comp.version-control.git/265042 The changes for "git-credential-store: support multiple credential files" are as follows: * store_credential(), instead of taking an index to the string_list for the default filename, takes a filename string instead as it leads to a more flexible API. The changes for "t0302: test credential-store support for XDG_CONFIG_HOME" are as follows: * Corrected code style violations: All tests are now separated by newlines. * After $XDG_CONFIG_HOME is set to "$HOME/xdg", use $XDG_CONFIG_HOME directly for all paths instead of "$HOME/xdg". Thanks Matthieu for the code review. The diff between the previous patch series is as follows: diff --git a/credential-store.c b/credential-store.c index 7b22a3a..b00f80f 100644 --- a/credential-store.c +++ b/credential-store.c @@ -88,7 +88,7 @@ static void store_credential_file(const char *fn, struct credential *c) } static void store_credential(const struct string_list *fns, struct credential *c, - unsigned int default_index) + const char *default_fn) { struct string_list_item *fn; @@ -107,8 +107,9 @@ static void store_credential(const struct string_list *fns, struct credential *c store_credential_file(fn->string, c); return; } - /* Write credential to the filename at default_index, creating it */ - store_credential_file(fns->items[default_index].string, c); + /* Write credential to default_fn, thus creating it */ + if (default_fn) + store_credential_file(default_fn, c); } static void remove_credential(const struct string_list *fns, struct credential *c) @@ -182,7 +183,7 @@ int main(int argc, char **argv) else if (!strcmp(op, "erase")) remove_credential(&fns, &c); else if (!strcmp(op, "store")) - store_credential(&fns, &c, 0); + store_credential(&fns, &c, fns.items[0].string); else ; /* Ignore unknown operation. */ diff --git a/t/t0302-credential-store.sh b/t/t0302-credential-store.sh index 7fe832d..34752ea 100755 --- a/t/t0302-credential-store.sh +++ b/t/t0302-credential-store.sh @@ -5,41 +5,53 @@ test_description='credential-store tests' . "$TEST_DIRECTORY"/lib-credential.sh helper_test store + test_expect_success '~/.git-credentials is written to when xdg credentials file does not exist' ' test -s "$HOME/.git-credentials" ' + test_expect_success 'xdg credentials file will not be created if it does not exist' ' test_path_is_missing "$HOME/.config/git/credentials" ' + test_expect_success 'create $XDG_CONFIG_HOME/git/credentials file' ' test_might_fail rm "$HOME/.git-credentials" && mkdir -p "$HOME/.config/git" && >"$HOME/.config/git/credentials" ' + helper_test store + test_expect_success 'xdg credentials file will be written to if it exists' ' test -s "$HOME/.config/git/credentials" ' + test_expect_success '~/.git-credentials will not be created if xdg credentials file exists' ' test_path_is_missing "$HOME/.git-credentials" ' + test_expect_success 'set up custom XDG_CONFIG_HOME credential file' ' XDG_CONFIG_HOME="$HOME/xdg" && export XDG_CONFIG_HOME && - mkdir -p "$HOME/xdg/git" && - >"$HOME/xdg/git/credentials" && + mkdir -p "$XDG_CONFIG_HOME/git" && + >"$XDG_CONFIG_HOME/git/credentials" && >"$HOME/.config/git/credentials" ' + helper_test store + test_expect_success 'custom XDG_CONFIG_HOME credentials file will be written to if it exists' ' - unset XDG_CONFIG_HOME && - test -s "$HOME/xdg/git/credentials" + test_when_finished "unset XDG_CONFIG_HOME" && + test -s "$XDG_CONFIG_HOME/git/credentials" ' + test_expect_success '~/.config/git/credentials file will not be written to if a custom XDG_CONFIG_HOME is set' ' test_must_be_empty "$HOME/.config/git/credentials" ' + test_expect_success '~/.git-credentials will not be created if xdg credentials file exists' ' test_path_is_missing "$HOME/.git-credentials" ' + test_expect_success 'get: return credentials from home file if matches are found in both home and xdg files' ' mkdir -p "$HOME/.config/git" && echo "https://xdg-user:xdg-pass@xxxxxxxxxxx" >"$HOME/.config/git/credentials" && @@ -55,6 +67,7 @@ test_expect_success 'get: return credentials from home file if matches are found -- EOF ' + test_expect_success 'get: return credentials from xdg file if the home files do not have them' ' mkdir -p "$HOME/.config/git" && >"$HOME/.git-credentials" && @@ -70,6 +83,7 @@ test_expect_success 'get: return credentials from xdg file if the home files do -- EOF ' + test_expect_success 'get: return credentials from home file if xdg files are unreadable' ' mkdir -p "$HOME/.config/git" && echo "https://xdg-user:xdg-pass@xxxxxxxxxxx" >"$HOME/.config/git/credentials" && @@ -86,6 +100,7 @@ test_expect_success 'get: return credentials from home file if xdg files are unr -- EOF ' + test_expect_success 'erase: erase matching credentials from both xdg and home files' ' mkdir -p "$HOME/.config/git" && echo "https://xdg-user:xdg-pass@xxxxxxxxxxx" >"$HOME/.config/git/credentials" && Paul Tan (4): git-credential-store: support multiple credential files git-credential-store: support XDG_CONFIG_HOME docs/git-credential-store: document XDG file and precedence t0302: test credential-store support for XDG_CONFIG_HOME Documentation/git-credential-store.txt | 37 +++++++++++- credential-store.c | 87 ++++++++++++++++++--------- t/t0302-credential-store.sh | 107 +++++++++++++++++++++++++++++++++ 3 files changed, 202 insertions(+), 29 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html