From 444d5591ee31835bda75c208d4a061f0865cbd93 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 20 Dec 2019 18:01:29 -0400 Subject: [PATCH] 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 --- CHANGELOG | 2 ++ Utility/Path.hs | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 3380003fd9..4cde472e26 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 Wed, 18 Dec 2019 15:12:40 -0400 diff --git a/Utility/Path.hs b/Utility/Path.hs index 3f34156e88..ecc752c123 100644 --- a/Utility/Path.hs +++ b/Utility/Path.hs @@ -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 -- 2.30.2