summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-05-07 15:43:36 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-05-07 15:53:03 -0400
commitc60ba579661ed502d361eca0e7ce94c8a6544fc7 (patch)
tree4745de66b582314a529f7a7428aa0e41264ac0c5
parent118932d39319b467f2b2e8c244cd722bafd19298 (diff)
Windows: Remove cygwin ssh, the newer version of which has stopped honoring the setting of HOME. Instead, copy msysgit's ssh into PATH.
-rw-r--r--Build/BundledPrograms.hs5
-rw-r--r--Build/NullSoftInstaller.hs5
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/rsync_on_windows_broken_by_upgrade.mdwn26
4 files changed, 31 insertions, 7 deletions
diff --git a/Build/BundledPrograms.hs b/Build/BundledPrograms.hs
index 1e826cb10..4ceee3b52 100644
--- a/Build/BundledPrograms.hs
+++ b/Build/BundledPrograms.hs
@@ -35,13 +35,14 @@ bundledPrograms = catMaybes
#endif
, Just "rsync"
#ifndef darwin_HOST_OS
+#ifndef mingw32_HOST_OS
-- OS X has ssh installed by default.
-- Linux probably has ssh, but not guaranteed.
- -- On Windows, msysgit provides ssh, but not in PATH,
- -- so we ship our own.
+ -- On Windows, msysgit provides ssh.
, Just "ssh"
, Just "ssh-keygen"
#endif
+#endif
#ifndef mingw32_HOST_OS
, Just "sh"
#endif
diff --git a/Build/NullSoftInstaller.hs b/Build/NullSoftInstaller.hs
index 0abd07f95..e9a22d843 100644
--- a/Build/NullSoftInstaller.hs
+++ b/Build/NullSoftInstaller.hs
@@ -92,7 +92,7 @@ uninstaller = "git-annex-uninstall.exe"
gitInstallDir :: Exp FilePath
gitInstallDir = fromString "$PROGRAMFILES\\Git"
--- This intentionall has a different name than git-annex or
+-- This intentionally has a different name than git-annex or
-- git-annex-webapp, since it is itself treated as an executable file.
-- Also, on XP, the filename is displayed, not the description.
startMenuItem :: Exp FilePath
@@ -152,6 +152,9 @@ makeInstaller gitannex license htmlhelp extrabins launchers = nsis $ do
section "cmd" [] $ do
setOutPath "$INSTDIR\\cmd"
mapM_ addfile (gitannex:extrabins)
+ -- copy msysgit's ssh into cmd so it's always in PATH
+ -- (bin is only in PATH from git bash)
+ copyFiles [] "$INSTDIR\\bin\\ssh.exe" "$INSTDIR\\cmd\\ssh.exe"
section "meta" [] $ do
setOutPath "$INSTDIR\\doc\\git\\html"
addfile htmlhelp
diff --git a/debian/changelog b/debian/changelog
index ef1357324..d59e21bcc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -36,6 +36,8 @@ git-annex (5.20150421) UNRELEASED; urgency=medium
Closes: #698559
(fsck can still need to write to the repository if it find problems,
but a successful fsck can be done read-only)
+ * Windows: Remove cygwin ssh, the newer version of which has stopped
+ honoring the setting of HOME. Instead, copy msysgit's ssh into PATH.
-- Joey Hess <id@joeyh.name> Tue, 21 Apr 2015 15:54:10 -0400
diff --git a/doc/bugs/rsync_on_windows_broken_by_upgrade.mdwn b/doc/bugs/rsync_on_windows_broken_by_upgrade.mdwn
index 47f061659..cb58e009f 100644
--- a/doc/bugs/rsync_on_windows_broken_by_upgrade.mdwn
+++ b/doc/bugs/rsync_on_windows_broken_by_upgrade.mdwn
@@ -14,10 +14,13 @@ Problem doesn't seem to affect the bundled ssh, just rsync. --[[Joey]]
> So the workaround is to
> delete Git/bin/ssh.exe and leave Git/cmd/ssh.exe. Then rsync works.
> However, this may screw up git's use of ssh or other stuff.
+>
+> Particularly, cygwin's ssh doesn't honor HOME anymore, instead using
+> the getpwent home, which doesn't exist.
>
> Also, see
> [[webapp_fails_to_connect_to_ssh_repository___40__windows__41__]]
-> which is the inverse of this bug.
+> which is the inverse of this bug perhaps, or at least seems related.
>
> Using 2 ssh's that try to use config from different places seems like
> a losing propisition. Need to find an rsync that works with git's ssh.
@@ -38,13 +41,28 @@ Problem doesn't seem to affect the bundled ssh, just rsync. --[[Joey]]
>>> Possible fixes:
>>>
>>> * Roll the bundled ssh and rsync back to the older versions.
->>> (But, this seems like it would leave
->>> [[webapp_fails_to_connect_to_ssh_repository___40__windows__41__]]
->>> unfixed, unless the old version of ssh didn't have that problem.)
+>>>
+>>> **This works**. And, seems that the older version of ssh from cygwin
+>>> looks at HOME, rather than getpwent home which the newer
+>>> cygwin ssh does.
+>>>
>>> * Roll the bundled rsync back, drop ssh. Rely on msysgit's bundled ssh,
>>> copying it into cmd so it's in PATH. Check: Does this combo work?
+>>>
+>>> **This works**! rsync 3.0.9 works ok with msysgit's bundled ssh.
+>>> rsync 3.1.1 is the one that needs a newer ssh.
+>>>
+>>> Note that this means we're using an old version of rsync
+>>> from cygwin with libraries from a newer cygwin. That might prove
+>>> fragile as cygwin is upgraded.
+>>>
>>> * Hope that msysgit gets updated to include a newer version of ssh
>>> which works with the new rsync.
+>>>
+>>> (Seems reasonable as a long-term plan, assuming that the
+>>> new rsync's problem with ssh is that it needs a new one, and not some
+>>> special cygwin thing.)
+>>>
>>> * Get rsync from somewhere else, perhaps msysgit. (Maybe also get ssh
>>> from msysgit?)
>>> * Keep the new rsync from cygwin, and build ssh from source,