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 = configlist =
onRemote r (pipedconfig, Nothing) "configlist" [] onRemote r (pipedconfig, Nothing) "configlist" []
manualconfiglist = do manualconfiglist = do
let sshcmd =
"cd " ++ shellEscape(Git.workTree r) ++ " && " ++
"git config --list"
sshparams <- sshToRepo r [Param sshcmd] sshparams <- sshToRepo r [Param sshcmd]
liftIO $ pipedconfig "ssh" sshparams 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, -- First, try sshing and running git config manually,
-- only fall back to git-annex-shell configlist if that -- 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, * Handle a case where an annexed file is moved into a gitignored directory,
by having fix --force add its change. by having fix --force add its change.
@ -7,8 +7,9 @@ git-annex (3.20111108) UNRELEASED; urgency=low
for files that are already present. for files that are already present.
* Automatically fix up badly formatted uuid.log entries produced by * Automatically fix up badly formatted uuid.log entries produced by
3.20111105, whenever the uuid.log is changed (ie, by init or describe). 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 git-annex (3.20111107) unstable; urgency=low

View file

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