Skip to content

Commit 603776e

Browse files
committed
fix: binary config output parsing can now deal with quotes on windows. (#790)
Previously we would return paths that contained quotes. Note that we don't properly unquote C-style strings (which this is: https://github.com/git/git/blob/d9d677b2d8cc5f70499db04e633ba7a400f64cbf/builtin/config.c#L197) thinking that the git-binary configuration paths are well-known and don't need the complete decoding. If so, this is already implemented in `gix_quote::ansi_c::undo()`.
1 parent 7bd8823 commit 603776e

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

Diff for: gix-config/src/source.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ mod git {
127127
fn first_file_from_config_with_origin(source: &BStr) -> Option<&BStr> {
128128
let file = source.strip_prefix(b"file:")?;
129129
let end_pos = file.find_byte(b'\t')?;
130-
file[..end_pos].as_bstr().into()
130+
file[..end_pos].trim_with(|c| c == '"').as_bstr().into()
131131
}
132132

133133
#[cfg(test)]
@@ -138,6 +138,7 @@ mod git {
138138
let win_msys =
139139
"file:C:/git-sdk-64/etc/gitconfig core.symlinks=false\r\nfile:C:/git-sdk-64/etc/gitconfig core.autocrlf=true";
140140
let win_cmd = "file:C:/Program Files/Git/etc/gitconfig diff.astextplain.textconv=astextplain\r\nfile:C:/Program Files/Git/etc/gitconfig filter.lfs.clean=gix-lfs clean -- %f\r\n";
141+
let win_msys_old = "file:\"C:\\ProgramData/Git/config\" diff.astextplain.textconv=astextplain\r\nfile:\"C:\\ProgramData/Git/config\" filter.lfs.clean=git-lfs clean -- %f\r\n";
141142
let linux = "file:/home/parallels/.gitconfig core.excludesfile=~/.gitignore\n";
142143
let bogus = "something unexpected";
143144
let empty = "";
@@ -148,6 +149,7 @@ mod git {
148149
Some("/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig"),
149150
),
150151
(win_msys, Some("C:/git-sdk-64/etc/gitconfig")),
152+
(win_msys_old, Some("C:\\ProgramData/Git/config")),
151153
(win_cmd, Some("C:/Program Files/Git/etc/gitconfig")),
152154
(linux, Some("/home/parallels/.gitconfig")),
153155
(bogus, None),

0 commit comments

Comments
 (0)