diff --git a/tests/test-lfs-test-server.t b/tests/test-lfs-test-server.t index 0348c778bf70ae096707e2fd39fd1c79e694dfab_dGVzdHMvdGVzdC1sZnMtdGVzdC1zZXJ2ZXIudA==..f51c2780db3ae7df4a899f97b9816f85f675a527_dGVzdHMvdGVzdC1sZnMtdGVzdC1zZXJ2ZXIudA== 100644 --- a/tests/test-lfs-test-server.t +++ b/tests/test-lfs-test-server.t @@ -1,1 +1,4 @@ +#testcases git-server hg-server + +#if git-server #require lfs-test-server @@ -1,2 +4,5 @@ #require lfs-test-server +#else +#require serve +#endif @@ -2,5 +8,6 @@ +#if git-server $ LFS_LISTEN="tcp://:$HGPORT" $ LFS_HOST="localhost:$HGPORT" $ LFS_PUBLIC=1 $ export LFS_LISTEN LFS_HOST LFS_PUBLIC @@ -3,7 +10,11 @@ $ LFS_LISTEN="tcp://:$HGPORT" $ LFS_HOST="localhost:$HGPORT" $ LFS_PUBLIC=1 $ export LFS_LISTEN LFS_HOST LFS_PUBLIC -#if no-windows +#else + $ LFS_HOST="localhost:$HGPORT/.git/info/lfs" +#endif + +#if no-windows git-server $ lfs-test-server &> lfs-server.log & $ echo $! >> $DAEMON_PIDS @@ -8,6 +19,8 @@ $ lfs-test-server &> lfs-server.log & $ echo $! >> $DAEMON_PIDS -#else +#endif + +#if windows git-server $ cat >> $TESTTMP/spawn.py <<EOF > import os > import subprocess @@ -29,5 +42,5 @@ > [extensions] > lfs= > [lfs] - > url=http://foo:bar@$LFS_HOST/ + > url=http://foo:bar@$LFS_HOST > track=all() @@ -33,3 +46,6 @@ > track=all() + > [web] + > push_ssl = False + > allow-push = * > EOF @@ -34,5 +50,15 @@ > EOF +Use a separate usercache, otherwise the server sees what the client commits, and +never requests a transfer. + +#if hg-server + $ hg init server + $ hg --config "lfs.usercache=$TESTTMP/servercache" -R server serve -d \ + > -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log + $ cat hg.pid >> $DAEMON_PIDS +#endif + $ hg init repo1 $ cd repo1 $ echo THIS-IS-LFS > a @@ -55,6 +81,7 @@ listing keys for "bookmarks" lfs: computing set of blobs to upload Status: 200 - Content-Length: 309 + Content-Length: 309 (git-server !) + Content-Length: 350 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -59,5 +86,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -67,10 +95,11 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" + "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (git-server !) + "href": "http://localhost:$HGPORT/.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (hg-server !) } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" "size": 12 } ] @@ -71,8 +100,9 @@ } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" "size": 12 } ] + "transfer": "basic" (hg-server !) } lfs: uploading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) @@ -77,6 +107,7 @@ } lfs: uploading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) - Status: 200 + Status: 200 (git-server !) + Status: 201 (hg-server !) Content-Length: 0 Content-Type: text/plain; charset=utf-8 Date: $HTTP_DATE$ @@ -80,6 +111,7 @@ Content-Length: 0 Content-Type: text/plain; charset=utf-8 Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: uploaded 1 files (12 bytes) 1 changesets found @@ -125,6 +157,7 @@ branchmerge: False, force: False, partial: False ancestor: 000000000000, local: 000000000000+, remote: 99a7098854a3 Status: 200 - Content-Length: 311 + Content-Length: 311 (git-server !) + Content-Length: 352 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -129,5 +162,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -137,10 +171,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" + "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob) } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" "size": 12 } ] @@ -141,10 +175,11 @@ } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" "size": 12 } ] + "transfer": "basic" (hg-server !) } lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 @@ -147,6 +182,7 @@ } lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -152,4 +188,5 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b a: remote created -> g @@ -157,7 +194,10 @@ lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store 1 files updated, 0 files merged, 0 files removed, 0 files unresolved -When the server has some blobs already +When the server has some blobs already. `hg serve` doesn't offer to upload +blobs that it already knows about. Note that lfs-test-server is simply +toggling the action to 'download'. The Batch API spec says it should omit the +actions property completely. $ hg mv a b $ echo ANOTHER-LARGE-FILE > c @@ -176,6 +216,7 @@ listing keys for "bookmarks" lfs: computing set of blobs to upload Status: 200 - Content-Length: 901 + Content-Length: 901 (git-server !) + Content-Length: 755 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -180,5 +221,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -182,15 +224,15 @@ { "objects": [ { - "actions": { - "download": { - "expires_at": "$ISO_8601_DATE_TIME$" - "header": { - "Accept": "application/vnd.git-lfs" - } - "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" - } - } + "actions": { (git-server !) + "download": { (git-server !) + "expires_at": "$ISO_8601_DATE_TIME$" (git-server !) + "header": { (git-server !) + "Accept": "application/vnd.git-lfs" (git-server !) + } (git-server !) + "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (git-server !) + } (git-server !) + } (git-server !) "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" "size": 12 } @@ -201,7 +243,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" + "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob) } } "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" @@ -214,10 +256,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" + "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob) } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] @@ -218,9 +260,10 @@ } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] + "transfer": "basic" (hg-server !) } lfs: need to transfer 2 objects (39 bytes) lfs: uploading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) @@ -224,7 +267,8 @@ } lfs: need to transfer 2 objects (39 bytes) lfs: uploading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) - Status: 200 + Status: 200 (git-server !) + Status: 201 (hg-server !) Content-Length: 0 Content-Type: text/plain; charset=utf-8 Date: $HTTP_DATE$ @@ -228,5 +272,6 @@ Content-Length: 0 Content-Type: text/plain; charset=utf-8 Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: uploading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) @@ -231,6 +276,7 @@ lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: uploading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) - Status: 200 + Status: 200 (git-server !) + Status: 201 (hg-server !) Content-Length: 0 Content-Type: text/plain; charset=utf-8 Date: $HTTP_DATE$ @@ -234,6 +280,7 @@ Content-Length: 0 Content-Type: text/plain; charset=utf-8 Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 lfs: uploaded 2 files (39 bytes) 1 changesets found @@ -281,6 +328,7 @@ branchmerge: False, force: False, partial: False ancestor: 99a7098854a3, local: 99a7098854a3+, remote: dfca2c9e2ef2 Status: 200 - Content-Length: 608 + Content-Length: 608 (git-server !) + Content-Length: 670 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -285,5 +333,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -293,7 +342,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" + "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob) } } "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" @@ -306,10 +355,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" + "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob) } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] @@ -310,11 +359,12 @@ } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] + "transfer": "basic" (hg-server !) } lfs: need to transfer 2 objects (39 bytes) lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) Status: 200 Content-Length: 20 @@ -316,7 +366,8 @@ } lfs: need to transfer 2 objects (39 bytes) lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) Status: 200 Content-Length: 20 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -322,6 +373,7 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 @@ -323,7 +375,8 @@ lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -329,4 +382,5 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 b: remote created -> g @@ -341,5 +395,7 @@ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved Test a corrupt file download, but clear the cache first to force a download. +`hg serve` indicates a corrupt file without transferring it, unlike +lfs-test-server. $ rm -rf `hg config lfs.usercache` @@ -344,4 +400,5 @@ $ rm -rf `hg config lfs.usercache` +#if git-server $ cp $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob $ echo 'damage' > $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 @@ -346,5 +403,9 @@ $ cp $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob $ echo 'damage' > $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 +#else + $ cp $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob + $ echo 'damage' > $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 +#endif $ rm ../repo1/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 $ rm ../repo1/* @@ -348,9 +409,11 @@ $ rm ../repo1/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 $ rm ../repo1/* +TODO: give the proper error indication from `hg serve` + $ hg --repo ../repo1 update -C tip --debug http auth: user foo, password *** resolving manifests branchmerge: False, force: True, partial: False ancestor: dfca2c9e2ef2+, local: dfca2c9e2ef2+, remote: dfca2c9e2ef2 Status: 200 @@ -351,9 +414,10 @@ $ hg --repo ../repo1 update -C tip --debug http auth: user foo, password *** resolving manifests branchmerge: False, force: True, partial: False ancestor: dfca2c9e2ef2+, local: dfca2c9e2ef2+, remote: dfca2c9e2ef2 Status: 200 - Content-Length: 311 + Content-Length: 311 (git-server !) + Content-Length: 183 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -358,5 +422,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -360,16 +425,19 @@ { "objects": [ { - "actions": { - "download": { - "expires_at": "$ISO_8601_DATE_TIME$" - "header": { - "Accept": "application/vnd.git-lfs" - } - "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" - } + "actions": { (git-server !) + "download": { (git-server !) + "expires_at": "$ISO_8601_DATE_TIME$" (git-server !) + "header": { (git-server !) + "Accept": "application/vnd.git-lfs" (git-server !) + } (git-server !) + "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (git-server !) + } (git-server !) + "error": { (hg-server !) + "code": 422 (hg-server !) + "message": "The object is corrupt" (hg-server !) } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] @@ -371,6 +439,7 @@ } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] + "transfer": "basic" (hg-server !) } @@ -376,10 +445,11 @@ } - lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) - Status: 200 - Content-Length: 7 - Content-Type: text/plain; charset=utf-8 - Date: $HTTP_DATE$ - abort: corrupt remote lfs object: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 + lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) (git-server !) + Status: 200 (git-server !) + Content-Length: 7 (git-server !) + Content-Type: text/plain; charset=utf-8 (git-server !) + Date: $HTTP_DATE$ (git-server !) + abort: corrupt remote lfs object: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (git-server !) + abort: LFS server error. Remote object for "c" not found: *! (glob) (hg-server !) [255] The corrupted blob is not added to the usercache or local store @@ -388,4 +458,5 @@ [1] $ test -f `hg config lfs.usercache`/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 [1] +#if git-server $ cp blob $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 @@ -391,4 +462,7 @@ $ cp blob $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 +#else + $ cp blob $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 +#endif Test a corrupted file upload @@ -408,6 +482,7 @@ listing keys for "bookmarks" lfs: computing set of blobs to upload Status: 200 - Content-Length: 309 + Content-Length: 309 (git-server !) + Content-Length: 350 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -412,5 +487,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -420,10 +496,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0" + "href": "http://localhost:$HGPORT/*/e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0" (glob) } } "oid": "e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0" "size": 17 } ] @@ -424,9 +500,10 @@ } } "oid": "e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0" "size": 17 } ] + "transfer": "basic" (hg-server !) } lfs: uploading e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0 (17 bytes) abort: detected corrupt lfs object: e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0 @@ -439,6 +516,7 @@ $ hg archive --debug -r 1 ../archive http auth: user foo, password *** Status: 200 - Content-Length: 905 + Content-Length: 905 (git-server !) + Content-Length: 988 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -443,5 +521,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -451,7 +530,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" + "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob) } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" @@ -464,7 +543,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" + "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob) } } "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" @@ -477,10 +556,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" + "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob) } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] @@ -481,11 +560,12 @@ } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] + "transfer": "basic" (hg-server !) } lfs: need to transfer 3 objects (51 bytes) lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 @@ -487,7 +567,8 @@ } lfs: need to transfer 3 objects (51 bytes) lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -493,6 +574,7 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) Status: 200 Content-Length: 20 @@ -494,7 +576,8 @@ lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) Status: 200 Content-Length: 20 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -500,6 +583,7 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 @@ -501,7 +585,8 @@ lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -507,4 +592,5 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store @@ -525,6 +611,7 @@ $ hg cat --debug -r 1 a b c http auth: user foo, password *** Status: 200 - Content-Length: 608 + Content-Length: 608 (git-server !) + Content-Length: 670 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -529,5 +616,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -537,7 +625,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" + "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob) } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" @@ -550,10 +638,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" + "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob) } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] @@ -554,11 +642,12 @@ } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] + "transfer": "basic" (hg-server !) } lfs: need to transfer 2 objects (31 bytes) lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 @@ -560,7 +649,8 @@ } lfs: need to transfer 2 objects (31 bytes) lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -566,6 +656,7 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 @@ -567,7 +658,8 @@ lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -573,4 +665,5 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store @@ -592,6 +685,7 @@ reverting c reverting d Status: 200 - Content-Length: 905 + Content-Length: 905 (git-server !) + Content-Length: 988 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -596,5 +690,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -604,7 +699,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" + "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob) } } "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" @@ -617,7 +712,7 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" + "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob) } } "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" @@ -630,10 +725,10 @@ "header": { "Accept": "application/vnd.git-lfs" } - "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" + "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob) } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] @@ -634,11 +729,12 @@ } } "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" "size": 19 } ] + "transfer": "basic" (hg-server !) } lfs: need to transfer 3 objects (51 bytes) lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 @@ -640,7 +736,8 @@ } lfs: need to transfer 3 objects (51 bytes) lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes) Status: 200 Content-Length: 12 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -646,6 +743,7 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) Status: 200 Content-Length: 20 @@ -647,7 +745,8 @@ lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes) Status: 200 Content-Length: 20 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -653,6 +752,7 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 @@ -654,7 +754,8 @@ lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) Status: 200 Content-Length: 19 - Content-Type: text/plain; charset=utf-8 + Content-Type: text/plain; charset=utf-8 (git-server !) + Content-Type: application/octet-stream (hg-server !) Date: $HTTP_DATE$ @@ -660,4 +761,5 @@ Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store @@ -679,6 +781,7 @@ branchmerge: False, force: True, partial: False ancestor: 62fdbaf221c6+, local: 62fdbaf221c6+, remote: ef0564edf47e Status: 200 - Content-Length: 308 + Content-Length: 308 (git-server !) + Content-Length: 186 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -683,5 +786,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -685,16 +789,19 @@ { "objects": [ { - "actions": { - "upload": { - "expires_at": "$ISO_8601_DATE_TIME$" - "header": { - "Accept": "application/vnd.git-lfs" - } - "href": "http://localhost:$HGPORT/objects/8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13" - } + "actions": { (git-server !) + "upload": { (git-server !) + "expires_at": "$ISO_8601_DATE_TIME$" (git-server !) + "header": { (git-server !) + "Accept": "application/vnd.git-lfs" (git-server !) + } (git-server !) + "href": "http://localhost:$HGPORT/objects/8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13" (git-server !) + } (git-server !) + "error": { (hg-server !) + "code": 404 (hg-server !) + "message": "The object does not exist" (hg-server !) } "oid": "8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13" "size": 6 } ] @@ -696,8 +803,9 @@ } "oid": "8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13" "size": 6 } ] + "transfer": "basic" (hg-server !) } abort: LFS server error. Remote object for "b" not found:(.*)! (re) [255] @@ -726,6 +834,35 @@ (Restart the server in a different location so it no longer has the content) $ $PYTHON $RUNTESTDIR/killdaemons.py $DAEMON_PIDS + +#if hg-server + $ cat $TESTTMP/access.log $TESTTMP/errors.log + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 201 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 201 - (glob) + $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 201 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob) + $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob) +#endif + $ rm $DAEMON_PIDS $ mkdir $TESTTMP/lfs-server2 $ cd $TESTTMP/lfs-server2 @@ -729,6 +866,6 @@ $ rm $DAEMON_PIDS $ mkdir $TESTTMP/lfs-server2 $ cd $TESTTMP/lfs-server2 -#if no-windows +#if no-windows git-server $ lfs-test-server &> lfs-server.log & $ echo $! >> $DAEMON_PIDS @@ -733,6 +870,8 @@ $ lfs-test-server &> lfs-server.log & $ echo $! >> $DAEMON_PIDS -#else +#endif + +#if windows git-server $ $PYTHON $TESTTMP/spawn.py >> $DAEMON_PIDS #endif @@ -736,6 +875,13 @@ $ $PYTHON $TESTTMP/spawn.py >> $DAEMON_PIDS #endif +#if hg-server + $ hg init server2 + $ hg --config "lfs.usercache=$TESTTMP/servercache2" -R server2 serve -d \ + > -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log + $ cat hg.pid >> $DAEMON_PIDS +#endif + $ cd $TESTTMP $ hg --debug clone test test2 http auth: user foo, password *** @@ -746,6 +892,7 @@ branchmerge: False, force: False, partial: False ancestor: 000000000000, local: 000000000000+, remote: d2a338f184a8 Status: 200 - Content-Length: 308 + Content-Length: 308 (git-server !) + Content-Length: 186 (hg-server !) Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ @@ -750,5 +897,6 @@ Content-Type: application/vnd.git-lfs+json Date: $HTTP_DATE$ + Server: testing stub value (hg-server !) { "objects": [ { @@ -752,16 +900,19 @@ { "objects": [ { - "actions": { - "upload": { - "expires_at": "$ISO_8601_DATE_TIME$" - "header": { - "Accept": "application/vnd.git-lfs" - } - "href": "http://localhost:$HGPORT/objects/bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a" - } + "actions": { (git-server !) + "upload": { (git-server !) + "expires_at": "$ISO_8601_DATE_TIME$" (git-server !) + "header": { (git-server !) + "Accept": "application/vnd.git-lfs" (git-server !) + } (git-server !) + "href": "http://localhost:$HGPORT/objects/bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a" (git-server !) + } (git-server !) + "error": { (hg-server !) + "code": 404 (hg-server !) + "message": "The object does not exist" (hg-server !) } "oid": "bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a" "size": 6 } ] @@ -763,8 +914,9 @@ } "oid": "bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a" "size": 6 } ] + "transfer": "basic" (hg-server !) } abort: LFS server error. Remote object for "a" not found:(.*)! (re) [255]