The implementation of CredentialsHelper::add_command of git2-rs is different from that of the git CLI.
While git2-rs checks whether a command contains a / or \ anywhere, the git CLI checks whether the command is an absolute path (roughly whether it starts with / or \)
Compare
|
} else if cmd.contains("/") || cmd.contains("\\") { |
|
self.commands.push(cmd.to_string()); |
with
https://github.com/git/git/blob/6a64ac7b014fa2cfa7a69af3c253bcd53a94b428/credential.c#L492-L493
This leads to rather surprise behaviour when using the store helper with a nontrivial --file argument. For example git config credential.helper "store --file /path/to/credentials" should be interpreted as git credential-store --file /path/to/credentials, but it is not .
The implementation of
CredentialsHelper::add_commandofgit2-rsis different from that of thegitCLI.While
git2-rschecks whether a command contains a/or\anywhere, thegitCLI checks whether the command is an absolute path (roughly whether it starts with/or\)Compare
git2-rs/src/cred.rs
Lines 302 to 303 in d1ae3b6
with
https://github.com/git/git/blob/6a64ac7b014fa2cfa7a69af3c253bcd53a94b428/credential.c#L492-L493
This leads to rather surprise behaviour when using the
storehelper with a nontrivial--fileargument. For examplegit config credential.helper "store --file /path/to/credentials"should be interpreted asgit credential-store --file /path/to/credentials, but it is not .