aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Git/LsFiles.hs2
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/unexpected_double_wildcard_expansion.mdwn15
-rw-r--r--doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite/comment_5_a02c3cd804c2f6fd80d8839cc5c81af4._comment12
4 files changed, 30 insertions, 1 deletions
diff --git a/Git/LsFiles.hs b/Git/LsFiles.hs
index 1006be808..3f001f513 100644
--- a/Git/LsFiles.hs
+++ b/Git/LsFiles.hs
@@ -41,7 +41,7 @@ mkFile :: FilePath -> CommandParam
mkFile = File . concatMap go
where
go c
- | c == '*' = ['\\', c]
+ | c `elem` "*?[]" = ['\\', c]
| otherwise = [c]
{- Scans for files that are checked into git at the specified locations. -}
diff --git a/debian/changelog b/debian/changelog
index 4577a67dc..e2bfe362c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,8 @@ git-annex (5.20150328) UNRELEASED; urgency=medium
* Better fix for standalone tarball git-annex sync linker shim bug,
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
diff --git a/doc/bugs/unexpected_double_wildcard_expansion.mdwn b/doc/bugs/unexpected_double_wildcard_expansion.mdwn
new file mode 100644
index 000000000..f898a0c84
--- /dev/null
+++ b/doc/bugs/unexpected_double_wildcard_expansion.mdwn
@@ -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]]
diff --git a/doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite/comment_5_a02c3cd804c2f6fd80d8839cc5c81af4._comment b/doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite/comment_5_a02c3cd804c2f6fd80d8839cc5c81af4._comment
new file mode 100644
index 000000000..14560b023
--- /dev/null
+++ b/doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite/comment_5_a02c3cd804c2f6fd80d8839cc5c81af4._comment
@@ -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>
+"""]]