summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-07-07 13:35:06 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-07-07 13:35:56 -0400
commitc5c157803bf0119b697a662f278134c2bada3079 (patch)
tree06c969a2f112a511d7b6a8774fe8a8833be75a2e
parentcd5e8755042eca6254111375e9040f45cb848279 (diff)
Windows: Fix url to object when using a http remote.
annexLocations uses OS-native directory separators, but for an url, it needs to use / even on Windows. This is an ugly workaround. Could parameterize a lot of stuff in annexLocations to fix it better. I suspect this is probably the only place it's needed though.
-rw-r--r--Remote/Git.hs7
-rw-r--r--debian/changelog1
-rw-r--r--doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn7
-rw-r--r--doc/bugs/On_Windows__44___annex_get_over_HTTP_sends_URLs_with_incorrect_separator.mdwn2
4 files changed, 16 insertions, 1 deletions
diff --git a/Remote/Git.hs b/Remote/Git.hs
index 3a277a82a..1e106f2e5 100644
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -266,9 +266,14 @@ onLocal r a = do
a
keyUrls :: Git.Repo -> Key -> [String]
-keyUrls r key = map tourl (annexLocations key)
+keyUrls r key = map tourl locs
where
tourl l = Git.repoLocation r ++ "/" ++ l
+#ifndef __WINDOWS__
+ locs = annexLocations key
+#else
+ locs = replace "\\" "/" $ annexLocations key
+#endif
dropKey :: Remote -> Key -> Annex Bool
dropKey r key
diff --git a/debian/changelog b/debian/changelog
index 740f34ed5..582f4eab7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,7 @@ git-annex (4.20130628) UNRELEASED; urgency=low
than the urls's path.
* Windows: Look for .exe extension when searching for a command in path.
* Pass -f to curl when downloading a file with it, so it propigates failure.
+ * Windows: Fix url to object when using a http remote.
-- Joey Hess <joeyh@debian.org> Tue, 02 Jul 2013 15:40:55 -0400
diff --git a/doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn b/doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn
index 9604042e2..b34befcc0 100644
--- a/doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn
+++ b/doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn
@@ -171,3 +171,10 @@ C:\Users\test-git-annex\test_annex>type file1.txt
192.168.0.2 - - [<datetime>] "GET /test_annex/.git/annex\objects\c96\53e\SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729\SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729 HTTP/1.1" 404 -
192.168.0.2 - - [<datetime>] code 404, message File not found
"""]]
+
+> This seems to be two distinct bugs. First, curl was not propigating the exit
+> status. I already fixed that.
+>
+> Second, it's using DOS style path separators when constructing the url.
+> `http://192.168.0.8:8000/test_annex/.git/annex\\objects\\c96`
+> I've put in an (ugly) fix for that. [[done]] --[[Joey]]
diff --git a/doc/bugs/On_Windows__44___annex_get_over_HTTP_sends_URLs_with_incorrect_separator.mdwn b/doc/bugs/On_Windows__44___annex_get_over_HTTP_sends_URLs_with_incorrect_separator.mdwn
index 5b97cfa1e..08bc76ed1 100644
--- a/doc/bugs/On_Windows__44___annex_get_over_HTTP_sends_URLs_with_incorrect_separator.mdwn
+++ b/doc/bugs/On_Windows__44___annex_get_over_HTTP_sends_URLs_with_incorrect_separator.mdwn
@@ -182,3 +182,5 @@ git-annex: get: 1 failed
192.168.0.2 - - [<datetime>] code 404, message File not found
192.168.0.2 - - [<datetime>] "GET /test_annex/.git/annex%5Cobjects%5CJ9%5Cm6%5CSHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729%5CSHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729 HTTP/1.1" 404 -
"""]]
+
+> [[fixed|done]] --[[Joey]]