map: Support remotes with /~/ and /~user/

More accurately, it was supported already when map uses git-annex-shell,
but not when it does not.

Note that the user name cannot be shell escaped using git-annex's current
approach for shell escaping. I tried and some shells like dash cannot
cd ~'joey'. Rest of directory is still shell escaped, not for security but
in case a directory has a space or other weird character.
This commit is contained in:
Joey Hess 2011-11-11 16:18:41 -04:00
parent 826d5887b2
commit 71b216d1fb
3 changed files with 14 additions and 5 deletions

View file

@ -195,11 +195,17 @@ tryScan r
configlist =
onRemote r (pipedconfig, Nothing) "configlist" []
manualconfiglist = do
let sshcmd =
"cd " ++ shellEscape(Git.workTree r) ++ " && " ++
"git config --list"
sshparams <- sshToRepo r [Param sshcmd]
liftIO $ pipedconfig "ssh" sshparams
where
sshcmd = cddir ++ " && " ++
"git config --list"
dir = Git.workTree r
cddir
| take 2 dir == "/~" =
let (userhome, reldir) = span (/= '/') (drop 1 dir)
in "cd " ++ userhome ++ " && cd " ++ shellEscape (drop 1 reldir)
| otherwise = "cd " ++ shellEscape dir
-- First, try sshing and running git config manually,
-- only fall back to git-annex-shell configlist if that

5
debian/changelog vendored
View file

@ -1,4 +1,4 @@
git-annex (3.20111108) UNRELEASED; urgency=low
git-annex (3.20111111) unstable; urgency=low
* Handle a case where an annexed file is moved into a gitignored directory,
by having fix --force add its change.
@ -7,8 +7,9 @@ git-annex (3.20111108) UNRELEASED; urgency=low
for files that are already present.
* Automatically fix up badly formatted uuid.log entries produced by
3.20111105, whenever the uuid.log is changed (ie, by init or describe).
* map: Support remotes with /~/ and /~user/
-- Joey Hess <joeyh@debian.org> Mon, 07 Nov 2011 18:08:42 -0400
-- Joey Hess <joeyh@debian.org> Fri, 11 Nov 2011 13:44:18 -0400
git-annex (3.20111107) unstable; urgency=low

View file

@ -42,3 +42,5 @@ map` works too:
ok
> [[fixed|done]] --[[Joey]]