Improve file ordering behavior when one parameter is "." and other parameters are other directories

eg, `git-annex get . ..` used to order the files strangly, because it
did not realize that when git ls-files output eg "foo", that should be
grouped with the first set of files and not the second set.

Fixed by making            dirContains "." "./foo" = True
which makes sense, because dirContains ".." "../foo" = True
This commit is contained in:
Joey Hess 2019-12-20 18:01:29 -04:00
parent 14897ec8e2
commit 444d5591ee
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 6 additions and 1 deletions

View file

@ -17,6 +17,8 @@ git-annex (7.20191219) UNRELEASED; urgency=medium
* annex.addunlocked can be configured by git-annex config.
* git-annex-config --set/--unset: No longer change the local git config
setting, except for in the special case of annex.securehashesonly.
* Improve file ordering behavior when one parameter is "." and other
parameters are other directories.
-- Joey Hess <id@joeyh.name> Wed, 18 Dec 2019 15:12:40 -0400

View file

@ -113,7 +113,10 @@ prop_upFrom_basics dir
- are all equivilant.
-}
dirContains :: FilePath -> FilePath -> Bool
dirContains a b = a == b || a' == b' || (addTrailingPathSeparator a') `isPrefixOf` b'
dirContains a b = a == b
|| a' == b'
|| (addTrailingPathSeparator a') `isPrefixOf` b'
|| a' == "." && normalise ("." </> b') == b'
where
a' = norm a
b' = norm b