Prevent git-ls-files from double-expanding wildcards when an unexpanded wildcard is passed to a git-annex command like add or find.
Note that previously, `git annex find *.jpg` would find eg, foo/bar.jpg. That was never intended or documented behavior, so I'm going to change it. But this is potentially a behavior change if someone discovered that behavior and relied on it despite it being accidental. Oh well.. can't make an omlette w/o breaking some eggs.
This commit is contained in:
parent
cedca095b9
commit
f35d0bf4b2
4 changed files with 30 additions and 1 deletions
|
@ -41,7 +41,7 @@ mkFile :: FilePath -> CommandParam
|
||||||
mkFile = File . concatMap go
|
mkFile = File . concatMap go
|
||||||
where
|
where
|
||||||
go c
|
go c
|
||||||
| c == '*' = ['\\', c]
|
| c `elem` "*?[]" = ['\\', c]
|
||||||
| otherwise = [c]
|
| otherwise = [c]
|
||||||
|
|
||||||
{- Scans for files that are checked into git at the specified locations. -}
|
{- Scans for files that are checked into git at the specified locations. -}
|
||||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -2,6 +2,8 @@ git-annex (5.20150328) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
* Better fix for standalone tarball git-annex sync linker shim bug,
|
* Better fix for standalone tarball git-annex sync linker shim bug,
|
||||||
that works for "git annex sync" as well as "git-annex sync".
|
that works for "git annex sync" as well as "git-annex sync".
|
||||||
|
* Prevent git-ls-files from double-expanding wildcards when an
|
||||||
|
unexpanded wildcard is passed to a git-annex command like add or find.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Fri, 27 Mar 2015 16:04:43 -0400
|
-- Joey Hess <id@joeyh.name> Fri, 27 Mar 2015 16:04:43 -0400
|
||||||
|
|
||||||
|
|
15
doc/bugs/unexpected_double_wildcard_expansion.mdwn
Normal file
15
doc/bugs/unexpected_double_wildcard_expansion.mdwn
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
From the forum, it seems that git-ls-files very unexpectedly expands
|
||||||
|
wildcards in filenames passed to it. (Not a documented or an expected
|
||||||
|
behavior.)
|
||||||
|
|
||||||
|
This causes problems when eg, the user does `git annex add *.jpeg` and that
|
||||||
|
matches no files, but there are some jpegs in subdirectories. git-ls-files
|
||||||
|
re-expands the wildcard and finds those.
|
||||||
|
|
||||||
|
Seems that the best fix is to make Git.LsFiles paper over this git
|
||||||
|
misfeature, by always escaping wildcards in paths passed
|
||||||
|
to git-ls-files. AFAIK, no callers of Git.LsFiles expect to provide it
|
||||||
|
wildcards, because I was completely surprised when I learned they were
|
||||||
|
expanded.. --[[Joey]]
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
|
@ -0,0 +1,12 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 5"""
|
||||||
|
date="2015-03-27T20:42:21Z"
|
||||||
|
content="""
|
||||||
|
I've fixed this; now you'll see:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
git annex add *.jpg
|
||||||
|
git-annex: *.jpg not found
|
||||||
|
</pre>
|
||||||
|
"""]]
|
Loading…
Add table
Reference in a new issue