avoid surprising "not found" error when copying to a http remote
authorJoey Hess <joeyh@joeyh.name>
Mon, 8 Aug 2022 15:57:24 +0000 (11:57 -0400)
committerJoey Hess <joeyh@joeyh.name>
Mon, 8 Aug 2022 15:57:24 +0000 (11:57 -0400)
git-annex copy --to a http remote will of course fail, as that's not
supported. But git-annex copy first checks if the content is already
present in the remote, and that threw a "not found".

Looks to me like other remotes that use Url.checkBoth in their checkPresent
do just return false when it fails. And Url.checkBoth does display
errors when unusual errors occur. So I'm pretty sure removing this error
message is ok.

Sponsored-by: Jarkko Kniivilä on Patreon
Remote/Git.hs
doc/bugs/GIN_is_not_recognized_as_a_git-annex_enabled_repos/comment_4_f97de485f97d8016a5ab4e276799d230._comment [new file with mode: 0644]

index 0af5a3eb984ddb6a782bba4c89a1fc3ce959c2c7..48f2422cd85292982980ebc27df530e1ecec5dff 100644 (file)
@@ -407,10 +407,9 @@ inAnnex' repo rmt st@(State connpool duc _ _ _) key
   where
        checkhttp = do
                gc <- Annex.getGitConfig
-               ifM (Url.withUrlOptionsPromptingCreds $ \uo -> anyM (\u -> Url.checkBoth u (fromKey keySize key) uo) (keyUrls gc repo rmt key))
-                       ( return True
-                       , giveup "not found"
-                       )
+               Url.withUrlOptionsPromptingCreds $ \uo -> 
+                       anyM (\u -> Url.checkBoth u (fromKey keySize key) uo)
+                               (keyUrls gc repo rmt key)
        checkremote = P2PHelper.checkpresent (Ssh.runProto rmt connpool (cantCheck rmt)) key
        checklocal = ifM duc
                ( guardUsable repo (cantCheck repo) $
diff --git a/doc/bugs/GIN_is_not_recognized_as_a_git-annex_enabled_repos/comment_4_f97de485f97d8016a5ab4e276799d230._comment b/doc/bugs/GIN_is_not_recognized_as_a_git-annex_enabled_repos/comment_4_f97de485f97d8016a5ab4e276799d230._comment
new file mode 100644 (file)
index 0000000..d2d44cd
--- /dev/null
@@ -0,0 +1,36 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2022-08-08T15:27:21Z"
+ content="""
+Well, that is a different problem than the problem you reported, isn't it?
+You seem to have shown that git-annex does in fact recognize your GIN
+remote as a git-annex repo.
+
+git-annex does not support uploading files to a git repo on GIN using http.
+
+The datalad documentation says to add a remote using the ssh url of the GIN
+repository, which git-annex can store files on. See 
+<http://handbook.datalad.org/en/0.13_a/basics/101-139-gin.html#publishing-your-dataset-to-gin>
+
+Without using datalad, the equivilant commands would be something like:
+
+       git remote add gin git@gin.g-node.org:/ivis-mizuguchi/https.git
+       git-annex copy --to gin
+
+---
+
+So this leaves the question of why git-annex tries to do a http request
+when you ask it to copy the content to the http repo. That http request
+failing is what results in the "(not found)" message.
+
+Looks like that is due to `git-annex copy` checking to see if the content
+exists on the remote. It does not. So it ought to try to send it,
+which would fail with a better "copying to non-ssh repo not supported" error message.
+However, intstead it displays the error.
+
+I've fixed this bug, and now it fails with this message:
+
+       copy test3.txt (to origin...) 
+         copying to non-ssh repo not supported
+"""]]