diff options
Diffstat (limited to 'doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn')
-rw-r--r-- | doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn | 180 |
1 files changed, 0 insertions, 180 deletions
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 deleted file mode 100644 index b34befcc0..000000000 --- a/doc/bugs/On_Windows__44___annex_get_fails_with_HTTP_Remote__44___but_believes_it_has_succeeded..mdwn +++ /dev/null @@ -1,180 +0,0 @@ -### Please describe the problem. -On Windows, with a remote annex configured for HTTP access, attempting to annex get a file will not result in the content being downloaded, but will download a 404 error page as the file. - -### What steps will reproduce the problem? -1. Create an annex (A1) on a Linux system. -2. "git update-server-info" -3. run an HTTP server with, a directory up. python -m SimpleHTTPServer -4. on a Windows system, clone the annex with 'git clone http://remote_host/annex_dir/.git' -5. "git annex get <file>" - -the resulting file will not have the correct content, but rather a 404 error page. In addition, subsequent attempts to "git annex get <file>" will fail, unless you "git annex drop <file>" first. (it appears to believe it correctly retrieved the file). - - -### What version of git-annex are you using? On what operating system? -Windows 7: 4.20140627-g8a36ec5 (from the git-annex download page) - -Debian Linux: 3.20120629 (from the package manager) - -### Please provide any additional information below. -After some debugging, I believe the issue is related to the way git-annex uses curl. it appears that git-annex uses the return code of curl or wget to determine if a download was successful, but curl by default will return status code 0 on a 404, unless the -f option is used (which it is not). - -getting git-annex on windows to use wget works around the issue. - - - -###Full Transcript - -#### 1. setup of linux repo -[[!format sh """ -test-git-annex@linux_host:~/test_annex$ git version -git version 1.7.10.4 -test-git-annex@linux_host:~/test_annex$ git annex version -git-annex version: 3.20120629 -local repository version: 3 -default repository version: 3 -supported repository versions: 3 -upgrade supported from repository versions: 0 1 2 -test-git-annex@linux_host: ~test-git-annex@linux_host:~$ mkdir test_annex -test-git-annex@linux_host: ~test-git-annex@linux_host:~$ cd test_annex/ -test-git-annex@linux_host:~/test_annex$ git init . -Initialized empty Git repository in /home/test-git-annex/test_annex/.git/ -test-git-annex@linux_host:~/test_annex$ annex init laptop -init laptop ok -(Recording state in git...) -~/test_annextest-git-annex@linux_host:~/test_annex$ echo "this is some content" > file1.txt -test-git-annex@linux_host:~/test_annex$ git annex add file1.txt -add file1.txt (checksum...) ok -(Recording state in git...) -test-git-annex@linux_host:~/test_annex$ git commit -a -m "initial commit" -[master (root-commit) 821c6c1] initial commit - 1 file changed, 1 insertion(+) - create mode 120000 file1.txt -test-git-annex@linux_host:~/test_annex$ ls -l -total 4 -lrwxrwxrwx 1 test-git-annex test-git-annex 178 Jul 6 11:33 file1.txt -> .git/annex/objects/J9/m6/SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729/SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729 -test-git-annex@linux_host:~/test_annex$ cat file1.txt -this is some content -"""]] - -#### 2. set up and run http server -[[!format sh """ -test-git-annex@MrLinuxTablet:~/test_annex$ git update-server-info -cd .. -test-git-annex@MrLinuxTablet:~$ python -m SimpleHTTPServer -Serving HTTP on 0.0.0.0 port 8000 ... - -"""]] - -#### 3. Set up Windows, clone repo, init annex - -[[!format sh """ - -#Windows 7 -#download and install git from git-scm.com/download/win -#Git-1.8.3-preview20130601.exe -#on install, selecting "Run Git from the Windows Command Prompt" -#on install, selecting "checkout as-is, commit as-is" -#installs to C:\Program Files (x86)\Git -#download and install git-annex from http://git-annex.branchable.com/install/ -#git-annex-installer.exe -#need to right-click 'run as administrator', per reported bug (link here) -#installs to C:\Program Files (x86)\Git\cmd -#also installs some utilities, including wget.exe - -C:\Users\test-git-annex>git clone http://192.168.0.8:8000/test_annex/.git -Cloning into 'test_annex'... - -C:\Users\test-git-annex>cd test_annex - -C:\Users\test-git-annex\test_annex>dir - Volume in drive C has no label. - - Directory of C:\Users\test-git-annex\test_annex - -<DIR> . -<DIR> .. - 178 file1.txt - 1 File(s) 178 bytes - -C:\Users\test-git-annex\test_annex>type file1.txt -.git/annex/objects/J9/m6/SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729/SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729 - -C:\Users\test-git-annex\test_annex>git annex init windows -init windows - Detected a crippled filesystem. - - Enabling direct mode. - - Detected a filesystem without fifo support. - - Disabling ssh connection caching. -ok -(Recording state in git...) - -"""]] - -####4. annex get - -[[!format sh """ -#copy Git\bin\libcurl.dll to Git\bin\libcurl-4.dll - -C:\Users\test-git-annex\test_annex>git annex -vd get file1.txt -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","ls-files","--cached","-z","--","file1.txt"] -get file1.txt [<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","show-ref","git-annex"] -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","show-ref","--hash","refs/heads/git-annex"] -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","log","refs/heads/git-annex..36508d74a05fd93daee965f2f73c977852e4b626","--oneline","-n1"] -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","log","refs/heads/git-annex..304263841906c0b4dda39d0fdbe54e4af4307cb8","--oneline","-n1"] -(merging origin/git-annex into git-annex...) -[<datetime>] chat: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","cat-file","--batch"] -[<datetime>] feed: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","update-index","-z","--index-info"] -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","diff-index","--raw","-z","-r","--no-renames","-l0","--cached","304263841906c0b4dda39d0fdbe54e4af4307cb8"] -[<datetime>] chat: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","hash-object","-t","blob","-w","--stdin","--no-filters"] -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","log","304263841906c0b4dda39d0fdbe54e4af4307cb8..refs/heads/git-annex","--oneline","-n1"] -(Recording state in git...) -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","write-tree"] -[<datetime>] chat: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","commit-tree","103a0273cf24deec587295845f761b172a63ea19","-p","refs/heads/git-annex","-p","304263841906c0b4dda39d0fdbe54e4af4307cb8"] -[<datetime>] call: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","update-ref","refs/heads/git-annex","538f6b44a762be415ec6fef2b6644c10bc1f3780"] -[<datetime>] call: curl ["-s","-L","-C","-","-#","-o","C:\\Users\\test-git-annex\\AppData\\Local\\Temp\\git-annex8156.tmp","http://192.168.0.8:8000/test_annex/.git/config"] -[<datetime>] read: git ["config","--null","--list","--file","C:\\Users\\test-git-annex\\AppData\\Local\\Temp\\git-annex8156.tmp"] -[<datetime>] call: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","config","remote.origin.annex-uuid","64000156-e66a-11e2-aa76-131bb0a453f3"] -[<datetime>] read: git ["config","--null","--list"] -(from origin...) [<datetime>] call: curl ["-L","-C","-","-#","-o","C:\\Users\\test-git-annex\\test_annex\\.git\\annex\\tmp\\SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729","http://192.168.0.8:8000/test_annex/.git/annex\\objects\\c96\\53e\\SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729\\SHA256-s21--6ed275e9e01c84a57fdd99d6af793c5d587d02e699cd2c28b32b7dc90f73e729"] -######################################################################## 100.0% -ok -[<datetime>] chat: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","hash-object","-w","--stdin-paths","--no-filters"] -[<datetime>] feed: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","update-index","-z","--index-info"] -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","show-ref","--hash","refs/heads/git-annex"] -(Recording state in git...) -[<datetime>] read: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","write-tree"] -[<datetime>] chat: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","commit-tree","b81dc8e53f4c02d433288d7f073be501d27c3648","-p","refs/heads/git-annex"] -[<datetime>] call: git ["--git-dir=C:\\Users\\test-git-annex\\test_annex\\.git","--work-tree=C:\\Users\\test-git-annex\\test_annex","update-ref","refs/heads/git-annex","949181f4978c2654e156f1e4250f67135ddc2774"] - -C:\Users\test-git-annex\test_annex>git annex find . -file1.txt - -C:\Users\test-git-annex\test_annex>type file1.txt -<head> -<title>Error response</title> -</head> -<body> -<h1>Error response</h1> -<p>Error code 404. -<p>Message: File not found. -<p>Error code explanation: 404 = Nothing matches the given URI. -</body> -"""]] - -#### http server output from above - -[[!format sh """ -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]] |