##// END OF EJS Templates
tests: skip a detailed exit status in test-lfs-test-server...
Matt Harbison -
r47062:47b11629 stable
parent child Browse files
Show More
@@ -1,943 +1,946
1 #require no-reposimplestore no-chg
1 #require no-reposimplestore no-chg
2 #testcases git-server hg-server
2 #testcases git-server hg-server
3
3
4 #if git-server
4 #if git-server
5 #require lfs-test-server
5 #require lfs-test-server
6 #else
6 #else
7 #require serve
7 #require serve
8 #endif
8 #endif
9
9
10 #if git-server
10 #if git-server
11 $ LFS_LISTEN="tcp://:$HGPORT"
11 $ LFS_LISTEN="tcp://:$HGPORT"
12 $ LFS_HOST="localhost:$HGPORT"
12 $ LFS_HOST="localhost:$HGPORT"
13 $ LFS_PUBLIC=1
13 $ LFS_PUBLIC=1
14 $ export LFS_LISTEN LFS_HOST LFS_PUBLIC
14 $ export LFS_LISTEN LFS_HOST LFS_PUBLIC
15 #else
15 #else
16 $ LFS_HOST="localhost:$HGPORT/.git/info/lfs"
16 $ LFS_HOST="localhost:$HGPORT/.git/info/lfs"
17 #endif
17 #endif
18
18
19 #if no-windows git-server
19 #if no-windows git-server
20 $ lfs-test-server &> lfs-server.log &
20 $ lfs-test-server &> lfs-server.log &
21 $ echo $! >> $DAEMON_PIDS
21 $ echo $! >> $DAEMON_PIDS
22 #endif
22 #endif
23
23
24 #if windows git-server
24 #if windows git-server
25 $ cat >> $TESTTMP/spawn.py <<EOF
25 $ cat >> $TESTTMP/spawn.py <<EOF
26 > import os
26 > import os
27 > import subprocess
27 > import subprocess
28 > import sys
28 > import sys
29 >
29 >
30 > for path in os.environ["PATH"].split(os.pathsep):
30 > for path in os.environ["PATH"].split(os.pathsep):
31 > exe = os.path.join(path, 'lfs-test-server.exe')
31 > exe = os.path.join(path, 'lfs-test-server.exe')
32 > if os.path.exists(exe):
32 > if os.path.exists(exe):
33 > with open('lfs-server.log', 'wb') as out:
33 > with open('lfs-server.log', 'wb') as out:
34 > p = subprocess.Popen(exe, stdout=out, stderr=out)
34 > p = subprocess.Popen(exe, stdout=out, stderr=out)
35 > sys.stdout.write('%s\n' % p.pid)
35 > sys.stdout.write('%s\n' % p.pid)
36 > sys.exit(0)
36 > sys.exit(0)
37 > sys.exit(1)
37 > sys.exit(1)
38 > EOF
38 > EOF
39 $ "$PYTHON" $TESTTMP/spawn.py >> $DAEMON_PIDS
39 $ "$PYTHON" $TESTTMP/spawn.py >> $DAEMON_PIDS
40 #endif
40 #endif
41
41
42 $ cat >> $HGRCPATH <<EOF
42 $ cat >> $HGRCPATH <<EOF
43 > [experimental]
43 > [experimental]
44 > lfs.worker-enable = False
44 > lfs.worker-enable = False
45 > [extensions]
45 > [extensions]
46 > lfs=
46 > lfs=
47 > [lfs]
47 > [lfs]
48 > url=http://foo:bar@$LFS_HOST
48 > url=http://foo:bar@$LFS_HOST
49 > track=all()
49 > track=all()
50 > [web]
50 > [web]
51 > push_ssl = False
51 > push_ssl = False
52 > allow-push = *
52 > allow-push = *
53 > EOF
53 > EOF
54
54
55 Use a separate usercache, otherwise the server sees what the client commits, and
55 Use a separate usercache, otherwise the server sees what the client commits, and
56 never requests a transfer.
56 never requests a transfer.
57
57
58 #if hg-server
58 #if hg-server
59 $ hg init server
59 $ hg init server
60 $ hg --config "lfs.usercache=$TESTTMP/servercache" -R server serve -d \
60 $ hg --config "lfs.usercache=$TESTTMP/servercache" -R server serve -d \
61 > -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
61 > -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
62 $ cat hg.pid >> $DAEMON_PIDS
62 $ cat hg.pid >> $DAEMON_PIDS
63 #endif
63 #endif
64
64
65 $ hg init repo1
65 $ hg init repo1
66 $ cd repo1
66 $ cd repo1
67 $ echo THIS-IS-LFS > a
67 $ echo THIS-IS-LFS > a
68 $ hg commit -m a -A a
68 $ hg commit -m a -A a
69
69
70 A push can be serviced directly from the usercache if it isn't in the local
70 A push can be serviced directly from the usercache if it isn't in the local
71 store.
71 store.
72
72
73 $ hg init ../repo2
73 $ hg init ../repo2
74 $ mv .hg/store/lfs .hg/store/lfs_
74 $ mv .hg/store/lfs .hg/store/lfs_
75 $ hg push ../repo2 --debug
75 $ hg push ../repo2 --debug
76 http auth: user foo, password ***
76 http auth: user foo, password ***
77 pushing to ../repo2
77 pushing to ../repo2
78 http auth: user foo, password ***
78 http auth: user foo, password ***
79 http auth: user foo, password ***
79 http auth: user foo, password ***
80 query 1; heads
80 query 1; heads
81 searching for changes
81 searching for changes
82 1 total queries in *s (glob)
82 1 total queries in *s (glob)
83 listing keys for "phases"
83 listing keys for "phases"
84 checking for updated bookmarks
84 checking for updated bookmarks
85 listing keys for "bookmarks"
85 listing keys for "bookmarks"
86 lfs: computing set of blobs to upload
86 lfs: computing set of blobs to upload
87 Status: 200
87 Status: 200
88 Content-Length: 309 (git-server !)
88 Content-Length: 309 (git-server !)
89 Content-Length: 350 (hg-server !)
89 Content-Length: 350 (hg-server !)
90 Content-Type: application/vnd.git-lfs+json
90 Content-Type: application/vnd.git-lfs+json
91 Date: $HTTP_DATE$
91 Date: $HTTP_DATE$
92 Server: testing stub value (hg-server !)
92 Server: testing stub value (hg-server !)
93 {
93 {
94 "objects": [
94 "objects": [
95 {
95 {
96 "actions": {
96 "actions": {
97 "upload": {
97 "upload": {
98 "expires_at": "$ISO_8601_DATE_TIME$"
98 "expires_at": "$ISO_8601_DATE_TIME$"
99 "header": {
99 "header": {
100 "Accept": "application/vnd.git-lfs"
100 "Accept": "application/vnd.git-lfs"
101 }
101 }
102 "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (git-server !)
102 "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (git-server !)
103 "href": "http://localhost:$HGPORT/.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (hg-server !)
103 "href": "http://localhost:$HGPORT/.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (hg-server !)
104 }
104 }
105 }
105 }
106 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
106 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
107 "size": 12
107 "size": 12
108 }
108 }
109 ]
109 ]
110 "transfer": "basic" (hg-server !)
110 "transfer": "basic" (hg-server !)
111 }
111 }
112 lfs: uploading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
112 lfs: uploading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
113 Status: 200 (git-server !)
113 Status: 200 (git-server !)
114 Status: 201 (hg-server !)
114 Status: 201 (hg-server !)
115 Content-Length: 0
115 Content-Length: 0
116 Content-Type: text/plain; charset=utf-8
116 Content-Type: text/plain; charset=utf-8
117 Date: $HTTP_DATE$
117 Date: $HTTP_DATE$
118 Server: testing stub value (hg-server !)
118 Server: testing stub value (hg-server !)
119 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
119 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
120 lfs: uploaded 1 files (12 bytes)
120 lfs: uploaded 1 files (12 bytes)
121 1 changesets found
121 1 changesets found
122 list of changesets:
122 list of changesets:
123 99a7098854a3984a5c9eab0fc7a2906697b7cb5c
123 99a7098854a3984a5c9eab0fc7a2906697b7cb5c
124 bundle2-output-bundle: "HG20", 4 parts total
124 bundle2-output-bundle: "HG20", 4 parts total
125 bundle2-output-part: "replycaps" * bytes payload (glob)
125 bundle2-output-part: "replycaps" * bytes payload (glob)
126 bundle2-output-part: "check:heads" streamed payload
126 bundle2-output-part: "check:heads" streamed payload
127 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
127 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
128 bundle2-output-part: "phase-heads" 24 bytes payload
128 bundle2-output-part: "phase-heads" 24 bytes payload
129 bundle2-input-bundle: with-transaction
129 bundle2-input-bundle: with-transaction
130 bundle2-input-part: "replycaps" supported
130 bundle2-input-part: "replycaps" supported
131 bundle2-input-part: total payload size * (glob)
131 bundle2-input-part: total payload size * (glob)
132 bundle2-input-part: "check:heads" supported
132 bundle2-input-part: "check:heads" supported
133 bundle2-input-part: total payload size 20
133 bundle2-input-part: total payload size 20
134 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
134 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
135 adding changesets
135 adding changesets
136 add changeset 99a7098854a3
136 add changeset 99a7098854a3
137 adding manifests
137 adding manifests
138 adding file changes
138 adding file changes
139 adding a revisions
139 adding a revisions
140 calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
140 calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
141 bundle2-input-part: total payload size 617
141 bundle2-input-part: total payload size 617
142 bundle2-input-part: "phase-heads" supported
142 bundle2-input-part: "phase-heads" supported
143 bundle2-input-part: total payload size 24
143 bundle2-input-part: total payload size 24
144 bundle2-input-bundle: 4 parts total
144 bundle2-input-bundle: 4 parts total
145 updating the branch cache
145 updating the branch cache
146 added 1 changesets with 1 changes to 1 files
146 added 1 changesets with 1 changes to 1 files
147 bundle2-output-bundle: "HG20", 1 parts total
147 bundle2-output-bundle: "HG20", 1 parts total
148 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
148 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
149 bundle2-input-bundle: no-transaction
149 bundle2-input-bundle: no-transaction
150 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
150 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
151 bundle2-input-bundle: 1 parts total
151 bundle2-input-bundle: 1 parts total
152 listing keys for "phases"
152 listing keys for "phases"
153 $ mv .hg/store/lfs_ .hg/store/lfs
153 $ mv .hg/store/lfs_ .hg/store/lfs
154
154
155 Clear the cache to force a download
155 Clear the cache to force a download
156 $ rm -rf `hg config lfs.usercache`
156 $ rm -rf `hg config lfs.usercache`
157 $ cd ../repo2
157 $ cd ../repo2
158 $ hg update tip --debug
158 $ hg update tip --debug
159 http auth: user foo, password ***
159 http auth: user foo, password ***
160 resolving manifests
160 resolving manifests
161 branchmerge: False, force: False, partial: False
161 branchmerge: False, force: False, partial: False
162 ancestor: 000000000000, local: 000000000000+, remote: 99a7098854a3
162 ancestor: 000000000000, local: 000000000000+, remote: 99a7098854a3
163 http auth: user foo, password ***
163 http auth: user foo, password ***
164 Status: 200
164 Status: 200
165 Content-Length: 311 (git-server !)
165 Content-Length: 311 (git-server !)
166 Content-Length: 352 (hg-server !)
166 Content-Length: 352 (hg-server !)
167 Content-Type: application/vnd.git-lfs+json
167 Content-Type: application/vnd.git-lfs+json
168 Date: $HTTP_DATE$
168 Date: $HTTP_DATE$
169 Server: testing stub value (hg-server !)
169 Server: testing stub value (hg-server !)
170 {
170 {
171 "objects": [
171 "objects": [
172 {
172 {
173 "actions": {
173 "actions": {
174 "download": {
174 "download": {
175 "expires_at": "$ISO_8601_DATE_TIME$"
175 "expires_at": "$ISO_8601_DATE_TIME$"
176 "header": {
176 "header": {
177 "Accept": "application/vnd.git-lfs"
177 "Accept": "application/vnd.git-lfs"
178 }
178 }
179 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
179 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
180 }
180 }
181 }
181 }
182 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
182 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
183 "size": 12
183 "size": 12
184 }
184 }
185 ]
185 ]
186 "transfer": "basic" (hg-server !)
186 "transfer": "basic" (hg-server !)
187 }
187 }
188 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
188 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
189 Status: 200
189 Status: 200
190 Content-Length: 12
190 Content-Length: 12
191 Content-Type: text/plain; charset=utf-8 (git-server !)
191 Content-Type: text/plain; charset=utf-8 (git-server !)
192 Content-Type: application/octet-stream (hg-server !)
192 Content-Type: application/octet-stream (hg-server !)
193 Date: $HTTP_DATE$
193 Date: $HTTP_DATE$
194 Server: testing stub value (hg-server !)
194 Server: testing stub value (hg-server !)
195 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
195 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
196 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
196 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
197 lfs: downloaded 1 files (12 bytes)
197 lfs: downloaded 1 files (12 bytes)
198 a: remote created -> g
198 a: remote created -> g
199 getting a
199 getting a
200 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
200 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
201 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
201 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
202
202
203 When the server has some blobs already. `hg serve` doesn't offer to upload
203 When the server has some blobs already. `hg serve` doesn't offer to upload
204 blobs that it already knows about. Note that lfs-test-server is simply
204 blobs that it already knows about. Note that lfs-test-server is simply
205 toggling the action to 'download'. The Batch API spec says it should omit the
205 toggling the action to 'download'. The Batch API spec says it should omit the
206 actions property completely.
206 actions property completely.
207
207
208 $ hg mv a b
208 $ hg mv a b
209 $ echo ANOTHER-LARGE-FILE > c
209 $ echo ANOTHER-LARGE-FILE > c
210 $ echo ANOTHER-LARGE-FILE2 > d
210 $ echo ANOTHER-LARGE-FILE2 > d
211 $ hg commit -m b-and-c -A b c d
211 $ hg commit -m b-and-c -A b c d
212 $ hg push ../repo1 --debug
212 $ hg push ../repo1 --debug
213 http auth: user foo, password ***
213 http auth: user foo, password ***
214 pushing to ../repo1
214 pushing to ../repo1
215 http auth: user foo, password ***
215 http auth: user foo, password ***
216 http auth: user foo, password ***
216 http auth: user foo, password ***
217 query 1; heads
217 query 1; heads
218 searching for changes
218 searching for changes
219 all remote heads known locally
219 all remote heads known locally
220 listing keys for "phases"
220 listing keys for "phases"
221 checking for updated bookmarks
221 checking for updated bookmarks
222 listing keys for "bookmarks"
222 listing keys for "bookmarks"
223 listing keys for "bookmarks"
223 listing keys for "bookmarks"
224 lfs: computing set of blobs to upload
224 lfs: computing set of blobs to upload
225 Status: 200
225 Status: 200
226 Content-Length: 901 (git-server !)
226 Content-Length: 901 (git-server !)
227 Content-Length: 755 (hg-server !)
227 Content-Length: 755 (hg-server !)
228 Content-Type: application/vnd.git-lfs+json
228 Content-Type: application/vnd.git-lfs+json
229 Date: $HTTP_DATE$
229 Date: $HTTP_DATE$
230 Server: testing stub value (hg-server !)
230 Server: testing stub value (hg-server !)
231 {
231 {
232 "objects": [
232 "objects": [
233 {
233 {
234 "actions": { (git-server !)
234 "actions": { (git-server !)
235 "download": { (git-server !)
235 "download": { (git-server !)
236 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
236 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
237 "header": { (git-server !)
237 "header": { (git-server !)
238 "Accept": "application/vnd.git-lfs" (git-server !)
238 "Accept": "application/vnd.git-lfs" (git-server !)
239 } (git-server !)
239 } (git-server !)
240 "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (git-server !)
240 "href": "http://localhost:$HGPORT/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (git-server !)
241 } (git-server !)
241 } (git-server !)
242 } (git-server !)
242 } (git-server !)
243 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
243 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
244 "size": 12
244 "size": 12
245 }
245 }
246 {
246 {
247 "actions": {
247 "actions": {
248 "upload": {
248 "upload": {
249 "expires_at": "$ISO_8601_DATE_TIME$"
249 "expires_at": "$ISO_8601_DATE_TIME$"
250 "header": {
250 "header": {
251 "Accept": "application/vnd.git-lfs"
251 "Accept": "application/vnd.git-lfs"
252 }
252 }
253 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
253 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
254 }
254 }
255 }
255 }
256 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
256 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
257 "size": 20
257 "size": 20
258 }
258 }
259 {
259 {
260 "actions": {
260 "actions": {
261 "upload": {
261 "upload": {
262 "expires_at": "$ISO_8601_DATE_TIME$"
262 "expires_at": "$ISO_8601_DATE_TIME$"
263 "header": {
263 "header": {
264 "Accept": "application/vnd.git-lfs"
264 "Accept": "application/vnd.git-lfs"
265 }
265 }
266 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
266 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
267 }
267 }
268 }
268 }
269 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
269 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
270 "size": 19
270 "size": 19
271 }
271 }
272 ]
272 ]
273 "transfer": "basic" (hg-server !)
273 "transfer": "basic" (hg-server !)
274 }
274 }
275 lfs: need to transfer 2 objects (39 bytes)
275 lfs: need to transfer 2 objects (39 bytes)
276 lfs: uploading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
276 lfs: uploading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
277 Status: 200 (git-server !)
277 Status: 200 (git-server !)
278 Status: 201 (hg-server !)
278 Status: 201 (hg-server !)
279 Content-Length: 0
279 Content-Length: 0
280 Content-Type: text/plain; charset=utf-8
280 Content-Type: text/plain; charset=utf-8
281 Date: $HTTP_DATE$
281 Date: $HTTP_DATE$
282 Server: testing stub value (hg-server !)
282 Server: testing stub value (hg-server !)
283 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
283 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
284 lfs: uploading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
284 lfs: uploading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
285 Status: 200 (git-server !)
285 Status: 200 (git-server !)
286 Status: 201 (hg-server !)
286 Status: 201 (hg-server !)
287 Content-Length: 0
287 Content-Length: 0
288 Content-Type: text/plain; charset=utf-8
288 Content-Type: text/plain; charset=utf-8
289 Date: $HTTP_DATE$
289 Date: $HTTP_DATE$
290 Server: testing stub value (hg-server !)
290 Server: testing stub value (hg-server !)
291 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
291 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
292 lfs: uploaded 2 files (39 bytes)
292 lfs: uploaded 2 files (39 bytes)
293 1 changesets found
293 1 changesets found
294 list of changesets:
294 list of changesets:
295 dfca2c9e2ef24996aa61ba2abd99277d884b3d63
295 dfca2c9e2ef24996aa61ba2abd99277d884b3d63
296 bundle2-output-bundle: "HG20", 5 parts total
296 bundle2-output-bundle: "HG20", 5 parts total
297 bundle2-output-part: "replycaps" * bytes payload (glob)
297 bundle2-output-part: "replycaps" * bytes payload (glob)
298 bundle2-output-part: "check:phases" 24 bytes payload
298 bundle2-output-part: "check:phases" 24 bytes payload
299 bundle2-output-part: "check:updated-heads" streamed payload
299 bundle2-output-part: "check:updated-heads" streamed payload
300 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
300 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
301 bundle2-output-part: "phase-heads" 24 bytes payload
301 bundle2-output-part: "phase-heads" 24 bytes payload
302 bundle2-input-bundle: with-transaction
302 bundle2-input-bundle: with-transaction
303 bundle2-input-part: "replycaps" supported
303 bundle2-input-part: "replycaps" supported
304 bundle2-input-part: total payload size * (glob)
304 bundle2-input-part: total payload size * (glob)
305 bundle2-input-part: "check:phases" supported
305 bundle2-input-part: "check:phases" supported
306 bundle2-input-part: total payload size 24
306 bundle2-input-part: total payload size 24
307 bundle2-input-part: "check:updated-heads" supported
307 bundle2-input-part: "check:updated-heads" supported
308 bundle2-input-part: total payload size 20
308 bundle2-input-part: total payload size 20
309 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
309 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
310 adding changesets
310 adding changesets
311 add changeset dfca2c9e2ef2
311 add changeset dfca2c9e2ef2
312 adding manifests
312 adding manifests
313 adding file changes
313 adding file changes
314 adding b revisions
314 adding b revisions
315 adding c revisions
315 adding c revisions
316 adding d revisions
316 adding d revisions
317 bundle2-input-part: total payload size 1315
317 bundle2-input-part: total payload size 1315
318 bundle2-input-part: "phase-heads" supported
318 bundle2-input-part: "phase-heads" supported
319 bundle2-input-part: total payload size 24
319 bundle2-input-part: total payload size 24
320 bundle2-input-bundle: 5 parts total
320 bundle2-input-bundle: 5 parts total
321 updating the branch cache
321 updating the branch cache
322 added 1 changesets with 3 changes to 3 files
322 added 1 changesets with 3 changes to 3 files
323 bundle2-output-bundle: "HG20", 1 parts total
323 bundle2-output-bundle: "HG20", 1 parts total
324 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
324 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
325 bundle2-input-bundle: no-transaction
325 bundle2-input-bundle: no-transaction
326 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
326 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
327 bundle2-input-bundle: 1 parts total
327 bundle2-input-bundle: 1 parts total
328 listing keys for "phases"
328 listing keys for "phases"
329
329
330 Clear the cache to force a download
330 Clear the cache to force a download
331 $ rm -rf `hg config lfs.usercache`
331 $ rm -rf `hg config lfs.usercache`
332 $ hg --repo ../repo1 update tip --debug
332 $ hg --repo ../repo1 update tip --debug
333 http auth: user foo, password ***
333 http auth: user foo, password ***
334 resolving manifests
334 resolving manifests
335 branchmerge: False, force: False, partial: False
335 branchmerge: False, force: False, partial: False
336 ancestor: 99a7098854a3, local: 99a7098854a3+, remote: dfca2c9e2ef2
336 ancestor: 99a7098854a3, local: 99a7098854a3+, remote: dfca2c9e2ef2
337 http auth: user foo, password ***
337 http auth: user foo, password ***
338 Status: 200
338 Status: 200
339 Content-Length: 608 (git-server !)
339 Content-Length: 608 (git-server !)
340 Content-Length: 670 (hg-server !)
340 Content-Length: 670 (hg-server !)
341 Content-Type: application/vnd.git-lfs+json
341 Content-Type: application/vnd.git-lfs+json
342 Date: $HTTP_DATE$
342 Date: $HTTP_DATE$
343 Server: testing stub value (hg-server !)
343 Server: testing stub value (hg-server !)
344 {
344 {
345 "objects": [
345 "objects": [
346 {
346 {
347 "actions": {
347 "actions": {
348 "download": {
348 "download": {
349 "expires_at": "$ISO_8601_DATE_TIME$"
349 "expires_at": "$ISO_8601_DATE_TIME$"
350 "header": {
350 "header": {
351 "Accept": "application/vnd.git-lfs"
351 "Accept": "application/vnd.git-lfs"
352 }
352 }
353 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
353 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
354 }
354 }
355 }
355 }
356 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
356 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
357 "size": 20
357 "size": 20
358 }
358 }
359 {
359 {
360 "actions": {
360 "actions": {
361 "download": {
361 "download": {
362 "expires_at": "$ISO_8601_DATE_TIME$"
362 "expires_at": "$ISO_8601_DATE_TIME$"
363 "header": {
363 "header": {
364 "Accept": "application/vnd.git-lfs"
364 "Accept": "application/vnd.git-lfs"
365 }
365 }
366 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
366 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
367 }
367 }
368 }
368 }
369 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
369 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
370 "size": 19
370 "size": 19
371 }
371 }
372 ]
372 ]
373 "transfer": "basic" (hg-server !)
373 "transfer": "basic" (hg-server !)
374 }
374 }
375 lfs: need to transfer 2 objects (39 bytes)
375 lfs: need to transfer 2 objects (39 bytes)
376 lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
376 lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
377 Status: 200
377 Status: 200
378 Content-Length: 20
378 Content-Length: 20
379 Content-Type: text/plain; charset=utf-8 (git-server !)
379 Content-Type: text/plain; charset=utf-8 (git-server !)
380 Content-Type: application/octet-stream (hg-server !)
380 Content-Type: application/octet-stream (hg-server !)
381 Date: $HTTP_DATE$
381 Date: $HTTP_DATE$
382 Server: testing stub value (hg-server !)
382 Server: testing stub value (hg-server !)
383 lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache
383 lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache
384 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
384 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
385 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
385 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
386 Status: 200
386 Status: 200
387 Content-Length: 19
387 Content-Length: 19
388 Content-Type: text/plain; charset=utf-8 (git-server !)
388 Content-Type: text/plain; charset=utf-8 (git-server !)
389 Content-Type: application/octet-stream (hg-server !)
389 Content-Type: application/octet-stream (hg-server !)
390 Date: $HTTP_DATE$
390 Date: $HTTP_DATE$
391 Server: testing stub value (hg-server !)
391 Server: testing stub value (hg-server !)
392 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
392 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
393 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
393 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
394 lfs: downloaded 2 files (39 bytes)
394 lfs: downloaded 2 files (39 bytes)
395 b: remote created -> g
395 b: remote created -> g
396 getting b
396 getting b
397 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
397 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
398 c: remote created -> g
398 c: remote created -> g
399 getting c
399 getting c
400 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
400 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
401 d: remote created -> g
401 d: remote created -> g
402 getting d
402 getting d
403 lfs: found 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 in the local lfs store
403 lfs: found 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 in the local lfs store
404 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
404 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
405
405
406 Test a corrupt file download, but clear the cache first to force a download.
406 Test a corrupt file download, but clear the cache first to force a download.
407 `hg serve` indicates a corrupt file without transferring it, unlike
407 `hg serve` indicates a corrupt file without transferring it, unlike
408 lfs-test-server.
408 lfs-test-server.
409
409
410 $ rm -rf `hg config lfs.usercache`
410 $ rm -rf `hg config lfs.usercache`
411 #if git-server
411 #if git-server
412 $ cp $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob
412 $ cp $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob
413 $ echo 'damage' > $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
413 $ echo 'damage' > $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
414 #else
414 #else
415 $ cp $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob
415 $ cp $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 blob
416 $ echo 'damage' > $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
416 $ echo 'damage' > $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
417 #endif
417 #endif
418 $ rm ../repo1/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
418 $ rm ../repo1/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
419 $ rm ../repo1/*
419 $ rm ../repo1/*
420
420
421 TODO: give the proper error indication from `hg serve`
421 TODO: give the proper error indication from `hg serve`
422
422
423 $ hg --repo ../repo1 update -C tip --debug
423 TODO: reconsider the except base class so that the git and hg errors yield the
424 same exit status.
425
426 $ hg --repo ../repo1 update -C tip --debug --config ui.detailed-exit-code=False
424 http auth: user foo, password ***
427 http auth: user foo, password ***
425 resolving manifests
428 resolving manifests
426 branchmerge: False, force: True, partial: False
429 branchmerge: False, force: True, partial: False
427 ancestor: dfca2c9e2ef2+, local: dfca2c9e2ef2+, remote: dfca2c9e2ef2
430 ancestor: dfca2c9e2ef2+, local: dfca2c9e2ef2+, remote: dfca2c9e2ef2
428 http auth: user foo, password ***
431 http auth: user foo, password ***
429 Status: 200
432 Status: 200
430 Content-Length: 311 (git-server !)
433 Content-Length: 311 (git-server !)
431 Content-Length: 183 (hg-server !)
434 Content-Length: 183 (hg-server !)
432 Content-Type: application/vnd.git-lfs+json
435 Content-Type: application/vnd.git-lfs+json
433 Date: $HTTP_DATE$
436 Date: $HTTP_DATE$
434 Server: testing stub value (hg-server !)
437 Server: testing stub value (hg-server !)
435 {
438 {
436 "objects": [
439 "objects": [
437 {
440 {
438 "actions": { (git-server !)
441 "actions": { (git-server !)
439 "download": { (git-server !)
442 "download": { (git-server !)
440 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
443 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
441 "header": { (git-server !)
444 "header": { (git-server !)
442 "Accept": "application/vnd.git-lfs" (git-server !)
445 "Accept": "application/vnd.git-lfs" (git-server !)
443 } (git-server !)
446 } (git-server !)
444 "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (git-server !)
447 "href": "http://localhost:$HGPORT/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (git-server !)
445 } (git-server !)
448 } (git-server !)
446 "error": { (hg-server !)
449 "error": { (hg-server !)
447 "code": 422 (hg-server !)
450 "code": 422 (hg-server !)
448 "message": "The object is corrupt" (hg-server !)
451 "message": "The object is corrupt" (hg-server !)
449 }
452 }
450 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
453 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
451 "size": 19
454 "size": 19
452 }
455 }
453 ]
456 ]
454 "transfer": "basic" (hg-server !)
457 "transfer": "basic" (hg-server !)
455 }
458 }
456 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) (git-server !)
459 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes) (git-server !)
457 Status: 200 (git-server !)
460 Status: 200 (git-server !)
458 Content-Length: 7 (git-server !)
461 Content-Length: 7 (git-server !)
459 Content-Type: text/plain; charset=utf-8 (git-server !)
462 Content-Type: text/plain; charset=utf-8 (git-server !)
460 Date: $HTTP_DATE$ (git-server !)
463 Date: $HTTP_DATE$ (git-server !)
461 abort: corrupt remote lfs object: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (git-server !)
464 abort: corrupt remote lfs object: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (git-server !)
462 abort: LFS server error for "c": Validation error (hg-server !)
465 abort: LFS server error for "c": Validation error (hg-server !)
463 [50]
466 [255]
464
467
465 The corrupted blob is not added to the usercache or local store
468 The corrupted blob is not added to the usercache or local store
466
469
467 $ test -f ../repo1/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
470 $ test -f ../repo1/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
468 [1]
471 [1]
469 $ test -f `hg config lfs.usercache`/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
472 $ test -f `hg config lfs.usercache`/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
470 [1]
473 [1]
471 #if git-server
474 #if git-server
472 $ cp blob $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
475 $ cp blob $TESTTMP/lfs-content/d1/1e/1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
473 #else
476 #else
474 $ cp blob $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
477 $ cp blob $TESTTMP/server/.hg/store/lfs/objects/d1/1e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
475 #endif
478 #endif
476
479
477 Test a corrupted file upload
480 Test a corrupted file upload
478
481
479 $ echo 'another lfs blob' > b
482 $ echo 'another lfs blob' > b
480 $ hg ci -m 'another blob'
483 $ hg ci -m 'another blob'
481 $ echo 'damage' > .hg/store/lfs/objects/e6/59058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0
484 $ echo 'damage' > .hg/store/lfs/objects/e6/59058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0
482 $ hg push --debug ../repo1
485 $ hg push --debug ../repo1
483 http auth: user foo, password ***
486 http auth: user foo, password ***
484 pushing to ../repo1
487 pushing to ../repo1
485 http auth: user foo, password ***
488 http auth: user foo, password ***
486 http auth: user foo, password ***
489 http auth: user foo, password ***
487 query 1; heads
490 query 1; heads
488 searching for changes
491 searching for changes
489 all remote heads known locally
492 all remote heads known locally
490 listing keys for "phases"
493 listing keys for "phases"
491 checking for updated bookmarks
494 checking for updated bookmarks
492 listing keys for "bookmarks"
495 listing keys for "bookmarks"
493 listing keys for "bookmarks"
496 listing keys for "bookmarks"
494 lfs: computing set of blobs to upload
497 lfs: computing set of blobs to upload
495 Status: 200
498 Status: 200
496 Content-Length: 309 (git-server !)
499 Content-Length: 309 (git-server !)
497 Content-Length: 350 (hg-server !)
500 Content-Length: 350 (hg-server !)
498 Content-Type: application/vnd.git-lfs+json
501 Content-Type: application/vnd.git-lfs+json
499 Date: $HTTP_DATE$
502 Date: $HTTP_DATE$
500 Server: testing stub value (hg-server !)
503 Server: testing stub value (hg-server !)
501 {
504 {
502 "objects": [
505 "objects": [
503 {
506 {
504 "actions": {
507 "actions": {
505 "upload": {
508 "upload": {
506 "expires_at": "$ISO_8601_DATE_TIME$"
509 "expires_at": "$ISO_8601_DATE_TIME$"
507 "header": {
510 "header": {
508 "Accept": "application/vnd.git-lfs"
511 "Accept": "application/vnd.git-lfs"
509 }
512 }
510 "href": "http://localhost:$HGPORT/*/e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0" (glob)
513 "href": "http://localhost:$HGPORT/*/e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0" (glob)
511 }
514 }
512 }
515 }
513 "oid": "e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0"
516 "oid": "e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0"
514 "size": 17
517 "size": 17
515 }
518 }
516 ]
519 ]
517 "transfer": "basic" (hg-server !)
520 "transfer": "basic" (hg-server !)
518 }
521 }
519 lfs: uploading e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0 (17 bytes)
522 lfs: uploading e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0 (17 bytes)
520 abort: detected corrupt lfs object: e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0
523 abort: detected corrupt lfs object: e659058e26b07b39d2a9c7145b3f99b41f797b6621c8076600e9cb7ee88291f0
521 (run hg verify)
524 (run hg verify)
522 [255]
525 [255]
523
526
524 Archive will prefetch blobs in a group
527 Archive will prefetch blobs in a group
525
528
526 $ rm -rf .hg/store/lfs `hg config lfs.usercache`
529 $ rm -rf .hg/store/lfs `hg config lfs.usercache`
527 $ hg archive --debug -r 1 ../archive
530 $ hg archive --debug -r 1 ../archive
528 http auth: user foo, password ***
531 http auth: user foo, password ***
529 http auth: user foo, password ***
532 http auth: user foo, password ***
530 Status: 200
533 Status: 200
531 Content-Length: 905 (git-server !)
534 Content-Length: 905 (git-server !)
532 Content-Length: 988 (hg-server !)
535 Content-Length: 988 (hg-server !)
533 Content-Type: application/vnd.git-lfs+json
536 Content-Type: application/vnd.git-lfs+json
534 Date: $HTTP_DATE$
537 Date: $HTTP_DATE$
535 Server: testing stub value (hg-server !)
538 Server: testing stub value (hg-server !)
536 {
539 {
537 "objects": [
540 "objects": [
538 {
541 {
539 "actions": {
542 "actions": {
540 "download": {
543 "download": {
541 "expires_at": "$ISO_8601_DATE_TIME$"
544 "expires_at": "$ISO_8601_DATE_TIME$"
542 "header": {
545 "header": {
543 "Accept": "application/vnd.git-lfs"
546 "Accept": "application/vnd.git-lfs"
544 }
547 }
545 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
548 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
546 }
549 }
547 }
550 }
548 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
551 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
549 "size": 12
552 "size": 12
550 }
553 }
551 {
554 {
552 "actions": {
555 "actions": {
553 "download": {
556 "download": {
554 "expires_at": "$ISO_8601_DATE_TIME$"
557 "expires_at": "$ISO_8601_DATE_TIME$"
555 "header": {
558 "header": {
556 "Accept": "application/vnd.git-lfs"
559 "Accept": "application/vnd.git-lfs"
557 }
560 }
558 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
561 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
559 }
562 }
560 }
563 }
561 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
564 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
562 "size": 20
565 "size": 20
563 }
566 }
564 {
567 {
565 "actions": {
568 "actions": {
566 "download": {
569 "download": {
567 "expires_at": "$ISO_8601_DATE_TIME$"
570 "expires_at": "$ISO_8601_DATE_TIME$"
568 "header": {
571 "header": {
569 "Accept": "application/vnd.git-lfs"
572 "Accept": "application/vnd.git-lfs"
570 }
573 }
571 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
574 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
572 }
575 }
573 }
576 }
574 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
577 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
575 "size": 19
578 "size": 19
576 }
579 }
577 ]
580 ]
578 "transfer": "basic" (hg-server !)
581 "transfer": "basic" (hg-server !)
579 }
582 }
580 lfs: need to transfer 3 objects (51 bytes)
583 lfs: need to transfer 3 objects (51 bytes)
581 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
584 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
582 Status: 200
585 Status: 200
583 Content-Length: 12
586 Content-Length: 12
584 Content-Type: text/plain; charset=utf-8 (git-server !)
587 Content-Type: text/plain; charset=utf-8 (git-server !)
585 Content-Type: application/octet-stream (hg-server !)
588 Content-Type: application/octet-stream (hg-server !)
586 Date: $HTTP_DATE$
589 Date: $HTTP_DATE$
587 Server: testing stub value (hg-server !)
590 Server: testing stub value (hg-server !)
588 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
591 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
589 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
592 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
590 lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
593 lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
591 Status: 200
594 Status: 200
592 Content-Length: 20
595 Content-Length: 20
593 Content-Type: text/plain; charset=utf-8 (git-server !)
596 Content-Type: text/plain; charset=utf-8 (git-server !)
594 Content-Type: application/octet-stream (hg-server !)
597 Content-Type: application/octet-stream (hg-server !)
595 Date: $HTTP_DATE$
598 Date: $HTTP_DATE$
596 Server: testing stub value (hg-server !)
599 Server: testing stub value (hg-server !)
597 lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache
600 lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache
598 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
601 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
599 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
602 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
600 Status: 200
603 Status: 200
601 Content-Length: 19
604 Content-Length: 19
602 Content-Type: text/plain; charset=utf-8 (git-server !)
605 Content-Type: text/plain; charset=utf-8 (git-server !)
603 Content-Type: application/octet-stream (hg-server !)
606 Content-Type: application/octet-stream (hg-server !)
604 Date: $HTTP_DATE$
607 Date: $HTTP_DATE$
605 Server: testing stub value (hg-server !)
608 Server: testing stub value (hg-server !)
606 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
609 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
607 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
610 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
608 lfs: downloaded 3 files (51 bytes)
611 lfs: downloaded 3 files (51 bytes)
609 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
612 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
610 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
613 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
611 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
614 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
612 lfs: found 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 in the local lfs store
615 lfs: found 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 in the local lfs store
613 $ find ../archive | sort
616 $ find ../archive | sort
614 ../archive
617 ../archive
615 ../archive/.hg_archival.txt
618 ../archive/.hg_archival.txt
616 ../archive/a
619 ../archive/a
617 ../archive/b
620 ../archive/b
618 ../archive/c
621 ../archive/c
619 ../archive/d
622 ../archive/d
620
623
621 Cat will prefetch blobs in a group
624 Cat will prefetch blobs in a group
622
625
623 $ rm -rf .hg/store/lfs `hg config lfs.usercache`
626 $ rm -rf .hg/store/lfs `hg config lfs.usercache`
624 $ hg cat --debug -r 1 a b c nonexistent
627 $ hg cat --debug -r 1 a b c nonexistent
625 http auth: user foo, password ***
628 http auth: user foo, password ***
626 http auth: user foo, password ***
629 http auth: user foo, password ***
627 Status: 200
630 Status: 200
628 Content-Length: 608 (git-server !)
631 Content-Length: 608 (git-server !)
629 Content-Length: 670 (hg-server !)
632 Content-Length: 670 (hg-server !)
630 Content-Type: application/vnd.git-lfs+json
633 Content-Type: application/vnd.git-lfs+json
631 Date: $HTTP_DATE$
634 Date: $HTTP_DATE$
632 Server: testing stub value (hg-server !)
635 Server: testing stub value (hg-server !)
633 {
636 {
634 "objects": [
637 "objects": [
635 {
638 {
636 "actions": {
639 "actions": {
637 "download": {
640 "download": {
638 "expires_at": "$ISO_8601_DATE_TIME$"
641 "expires_at": "$ISO_8601_DATE_TIME$"
639 "header": {
642 "header": {
640 "Accept": "application/vnd.git-lfs"
643 "Accept": "application/vnd.git-lfs"
641 }
644 }
642 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
645 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
643 }
646 }
644 }
647 }
645 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
648 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
646 "size": 12
649 "size": 12
647 }
650 }
648 {
651 {
649 "actions": {
652 "actions": {
650 "download": {
653 "download": {
651 "expires_at": "$ISO_8601_DATE_TIME$"
654 "expires_at": "$ISO_8601_DATE_TIME$"
652 "header": {
655 "header": {
653 "Accept": "application/vnd.git-lfs"
656 "Accept": "application/vnd.git-lfs"
654 }
657 }
655 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
658 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
656 }
659 }
657 }
660 }
658 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
661 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
659 "size": 19
662 "size": 19
660 }
663 }
661 ]
664 ]
662 "transfer": "basic" (hg-server !)
665 "transfer": "basic" (hg-server !)
663 }
666 }
664 lfs: need to transfer 2 objects (31 bytes)
667 lfs: need to transfer 2 objects (31 bytes)
665 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
668 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
666 Status: 200
669 Status: 200
667 Content-Length: 12
670 Content-Length: 12
668 Content-Type: text/plain; charset=utf-8 (git-server !)
671 Content-Type: text/plain; charset=utf-8 (git-server !)
669 Content-Type: application/octet-stream (hg-server !)
672 Content-Type: application/octet-stream (hg-server !)
670 Date: $HTTP_DATE$
673 Date: $HTTP_DATE$
671 Server: testing stub value (hg-server !)
674 Server: testing stub value (hg-server !)
672 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
675 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
673 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
676 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
674 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
677 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
675 Status: 200
678 Status: 200
676 Content-Length: 19
679 Content-Length: 19
677 Content-Type: text/plain; charset=utf-8 (git-server !)
680 Content-Type: text/plain; charset=utf-8 (git-server !)
678 Content-Type: application/octet-stream (hg-server !)
681 Content-Type: application/octet-stream (hg-server !)
679 Date: $HTTP_DATE$
682 Date: $HTTP_DATE$
680 Server: testing stub value (hg-server !)
683 Server: testing stub value (hg-server !)
681 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
684 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
682 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
685 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
683 lfs: downloaded 2 files (31 bytes)
686 lfs: downloaded 2 files (31 bytes)
684 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
687 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
685 THIS-IS-LFS
688 THIS-IS-LFS
686 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
689 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
687 THIS-IS-LFS
690 THIS-IS-LFS
688 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
691 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
689 ANOTHER-LARGE-FILE
692 ANOTHER-LARGE-FILE
690 nonexistent: no such file in rev dfca2c9e2ef2
693 nonexistent: no such file in rev dfca2c9e2ef2
691
694
692 Revert will prefetch blobs in a group
695 Revert will prefetch blobs in a group
693
696
694 $ rm -rf .hg/store/lfs
697 $ rm -rf .hg/store/lfs
695 $ rm -rf `hg config lfs.usercache`
698 $ rm -rf `hg config lfs.usercache`
696 $ rm *
699 $ rm *
697 $ hg revert --all -r 1 --debug
700 $ hg revert --all -r 1 --debug
698 http auth: user foo, password ***
701 http auth: user foo, password ***
699 http auth: user foo, password ***
702 http auth: user foo, password ***
700 Status: 200
703 Status: 200
701 Content-Length: 905 (git-server !)
704 Content-Length: 905 (git-server !)
702 Content-Length: 988 (hg-server !)
705 Content-Length: 988 (hg-server !)
703 Content-Type: application/vnd.git-lfs+json
706 Content-Type: application/vnd.git-lfs+json
704 Date: $HTTP_DATE$
707 Date: $HTTP_DATE$
705 Server: testing stub value (hg-server !)
708 Server: testing stub value (hg-server !)
706 {
709 {
707 "objects": [
710 "objects": [
708 {
711 {
709 "actions": {
712 "actions": {
710 "download": {
713 "download": {
711 "expires_at": "$ISO_8601_DATE_TIME$"
714 "expires_at": "$ISO_8601_DATE_TIME$"
712 "header": {
715 "header": {
713 "Accept": "application/vnd.git-lfs"
716 "Accept": "application/vnd.git-lfs"
714 }
717 }
715 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
718 "href": "http://localhost:$HGPORT/*/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b" (glob)
716 }
719 }
717 }
720 }
718 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
721 "oid": "31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b"
719 "size": 12
722 "size": 12
720 }
723 }
721 {
724 {
722 "actions": {
725 "actions": {
723 "download": {
726 "download": {
724 "expires_at": "$ISO_8601_DATE_TIME$"
727 "expires_at": "$ISO_8601_DATE_TIME$"
725 "header": {
728 "header": {
726 "Accept": "application/vnd.git-lfs"
729 "Accept": "application/vnd.git-lfs"
727 }
730 }
728 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
731 "href": "http://localhost:$HGPORT/*/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19" (glob)
729 }
732 }
730 }
733 }
731 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
734 "oid": "37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19"
732 "size": 20
735 "size": 20
733 }
736 }
734 {
737 {
735 "actions": {
738 "actions": {
736 "download": {
739 "download": {
737 "expires_at": "$ISO_8601_DATE_TIME$"
740 "expires_at": "$ISO_8601_DATE_TIME$"
738 "header": {
741 "header": {
739 "Accept": "application/vnd.git-lfs"
742 "Accept": "application/vnd.git-lfs"
740 }
743 }
741 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
744 "href": "http://localhost:$HGPORT/*/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998" (glob)
742 }
745 }
743 }
746 }
744 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
747 "oid": "d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998"
745 "size": 19
748 "size": 19
746 }
749 }
747 ]
750 ]
748 "transfer": "basic" (hg-server !)
751 "transfer": "basic" (hg-server !)
749 }
752 }
750 lfs: need to transfer 3 objects (51 bytes)
753 lfs: need to transfer 3 objects (51 bytes)
751 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
754 lfs: downloading 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b (12 bytes)
752 Status: 200
755 Status: 200
753 Content-Length: 12
756 Content-Length: 12
754 Content-Type: text/plain; charset=utf-8 (git-server !)
757 Content-Type: text/plain; charset=utf-8 (git-server !)
755 Content-Type: application/octet-stream (hg-server !)
758 Content-Type: application/octet-stream (hg-server !)
756 Date: $HTTP_DATE$
759 Date: $HTTP_DATE$
757 Server: testing stub value (hg-server !)
760 Server: testing stub value (hg-server !)
758 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
761 lfs: adding 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b to the usercache
759 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
762 lfs: processed: 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b
760 lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
763 lfs: downloading 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 (20 bytes)
761 Status: 200
764 Status: 200
762 Content-Length: 20
765 Content-Length: 20
763 Content-Type: text/plain; charset=utf-8 (git-server !)
766 Content-Type: text/plain; charset=utf-8 (git-server !)
764 Content-Type: application/octet-stream (hg-server !)
767 Content-Type: application/octet-stream (hg-server !)
765 Date: $HTTP_DATE$
768 Date: $HTTP_DATE$
766 Server: testing stub value (hg-server !)
769 Server: testing stub value (hg-server !)
767 lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache
770 lfs: adding 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 to the usercache
768 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
771 lfs: processed: 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19
769 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
772 lfs: downloading d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (19 bytes)
770 Status: 200
773 Status: 200
771 Content-Length: 19
774 Content-Length: 19
772 Content-Type: text/plain; charset=utf-8 (git-server !)
775 Content-Type: text/plain; charset=utf-8 (git-server !)
773 Content-Type: application/octet-stream (hg-server !)
776 Content-Type: application/octet-stream (hg-server !)
774 Date: $HTTP_DATE$
777 Date: $HTTP_DATE$
775 Server: testing stub value (hg-server !)
778 Server: testing stub value (hg-server !)
776 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
779 lfs: adding d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 to the usercache
777 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
780 lfs: processed: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998
778 lfs: downloaded 3 files (51 bytes)
781 lfs: downloaded 3 files (51 bytes)
779 reverting b
782 reverting b
780 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
783 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
781 reverting c
784 reverting c
782 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
785 lfs: found d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 in the local lfs store
783 reverting d
786 reverting d
784 lfs: found 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 in the local lfs store
787 lfs: found 37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 in the local lfs store
785 adding a
788 adding a
786 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
789 lfs: found 31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b in the local lfs store
787
790
788 Check error message when the remote missed a blob:
791 Check error message when the remote missed a blob:
789
792
790 $ echo FFFFF > b
793 $ echo FFFFF > b
791 $ hg commit -m b -A b
794 $ hg commit -m b -A b
792 $ echo FFFFF >> b
795 $ echo FFFFF >> b
793 $ hg commit -m b b
796 $ hg commit -m b b
794 $ rm -rf .hg/store/lfs
797 $ rm -rf .hg/store/lfs
795 $ rm -rf `hg config lfs.usercache`
798 $ rm -rf `hg config lfs.usercache`
796 $ hg update -C '.^' --debug
799 $ hg update -C '.^' --debug
797 http auth: user foo, password ***
800 http auth: user foo, password ***
798 resolving manifests
801 resolving manifests
799 branchmerge: False, force: True, partial: False
802 branchmerge: False, force: True, partial: False
800 ancestor: 62fdbaf221c6+, local: 62fdbaf221c6+, remote: ef0564edf47e
803 ancestor: 62fdbaf221c6+, local: 62fdbaf221c6+, remote: ef0564edf47e
801 http auth: user foo, password ***
804 http auth: user foo, password ***
802 Status: 200
805 Status: 200
803 Content-Length: 308 (git-server !)
806 Content-Length: 308 (git-server !)
804 Content-Length: 186 (hg-server !)
807 Content-Length: 186 (hg-server !)
805 Content-Type: application/vnd.git-lfs+json
808 Content-Type: application/vnd.git-lfs+json
806 Date: $HTTP_DATE$
809 Date: $HTTP_DATE$
807 Server: testing stub value (hg-server !)
810 Server: testing stub value (hg-server !)
808 {
811 {
809 "objects": [
812 "objects": [
810 {
813 {
811 "actions": { (git-server !)
814 "actions": { (git-server !)
812 "upload": { (git-server !)
815 "upload": { (git-server !)
813 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
816 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
814 "header": { (git-server !)
817 "header": { (git-server !)
815 "Accept": "application/vnd.git-lfs" (git-server !)
818 "Accept": "application/vnd.git-lfs" (git-server !)
816 } (git-server !)
819 } (git-server !)
817 "href": "http://localhost:$HGPORT/objects/8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13" (git-server !)
820 "href": "http://localhost:$HGPORT/objects/8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13" (git-server !)
818 } (git-server !)
821 } (git-server !)
819 "error": { (hg-server !)
822 "error": { (hg-server !)
820 "code": 404 (hg-server !)
823 "code": 404 (hg-server !)
821 "message": "The object does not exist" (hg-server !)
824 "message": "The object does not exist" (hg-server !)
822 }
825 }
823 "oid": "8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13"
826 "oid": "8e6ea5f6c066b44a0efa43bcce86aea73f17e6e23f0663df0251e7524e140a13"
824 "size": 6
827 "size": 6
825 }
828 }
826 ]
829 ]
827 "transfer": "basic" (hg-server !)
830 "transfer": "basic" (hg-server !)
828 }
831 }
829 abort: LFS server error for "b": The object does not exist
832 abort: LFS server error for "b": The object does not exist
830 [50]
833 [50]
831
834
832 Check error message when object does not exist:
835 Check error message when object does not exist:
833
836
834 $ cd $TESTTMP
837 $ cd $TESTTMP
835 $ hg init test && cd test
838 $ hg init test && cd test
836 $ echo "[extensions]" >> .hg/hgrc
839 $ echo "[extensions]" >> .hg/hgrc
837 $ echo "lfs=" >> .hg/hgrc
840 $ echo "lfs=" >> .hg/hgrc
838 $ echo "[lfs]" >> .hg/hgrc
841 $ echo "[lfs]" >> .hg/hgrc
839 $ echo "threshold=1" >> .hg/hgrc
842 $ echo "threshold=1" >> .hg/hgrc
840 $ echo a > a
843 $ echo a > a
841 $ hg add a
844 $ hg add a
842 $ hg commit -m 'test'
845 $ hg commit -m 'test'
843 $ echo aaaaa > a
846 $ echo aaaaa > a
844 $ hg commit -m 'largefile'
847 $ hg commit -m 'largefile'
845 $ hg debugdata a 1 # verify this is no the file content but includes "oid", the LFS "pointer".
848 $ hg debugdata a 1 # verify this is no the file content but includes "oid", the LFS "pointer".
846 version https://git-lfs.github.com/spec/v1
849 version https://git-lfs.github.com/spec/v1
847 oid sha256:bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a
850 oid sha256:bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a
848 size 6
851 size 6
849 x-is-binary 0
852 x-is-binary 0
850 $ cd ..
853 $ cd ..
851 $ rm -rf `hg config lfs.usercache`
854 $ rm -rf `hg config lfs.usercache`
852
855
853 (Restart the server in a different location so it no longer has the content)
856 (Restart the server in a different location so it no longer has the content)
854
857
855 $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
858 $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
856
859
857 #if hg-server
860 #if hg-server
858 $ cat $TESTTMP/access.log $TESTTMP/errors.log
861 $ cat $TESTTMP/access.log $TESTTMP/errors.log
859 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
862 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
860 $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 201 - (glob)
863 $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 201 - (glob)
861 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
864 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
862 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
865 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
863 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
866 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
864 $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 201 - (glob)
867 $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 201 - (glob)
865 $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 201 - (glob)
868 $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 201 - (glob)
866 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
869 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
867 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob)
870 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob)
868 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
871 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
869 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
872 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
870 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
873 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
871 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
874 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
872 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
875 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
873 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob)
876 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob)
874 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
877 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
875 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
878 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
876 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
879 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
877 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
880 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
878 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
881 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
879 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
882 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1" 200 - (glob)
880 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob)
883 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/37a65ab78d5ecda767e8622c248b5dbff1e68b1678ab0e730d5eb8601ec8ad19 HTTP/1.1" 200 - (glob)
881 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
884 $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 HTTP/1.1" 200 - (glob)
882 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
885 $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
883 #endif
886 #endif
884
887
885 $ mkdir $TESTTMP/lfs-server2
888 $ mkdir $TESTTMP/lfs-server2
886 $ cd $TESTTMP/lfs-server2
889 $ cd $TESTTMP/lfs-server2
887 #if no-windows git-server
890 #if no-windows git-server
888 $ lfs-test-server &> lfs-server.log &
891 $ lfs-test-server &> lfs-server.log &
889 $ echo $! >> $DAEMON_PIDS
892 $ echo $! >> $DAEMON_PIDS
890 #endif
893 #endif
891
894
892 #if windows git-server
895 #if windows git-server
893 $ "$PYTHON" $TESTTMP/spawn.py >> $DAEMON_PIDS
896 $ "$PYTHON" $TESTTMP/spawn.py >> $DAEMON_PIDS
894 #endif
897 #endif
895
898
896 #if hg-server
899 #if hg-server
897 $ hg init server2
900 $ hg init server2
898 $ hg --config "lfs.usercache=$TESTTMP/servercache2" -R server2 serve -d \
901 $ hg --config "lfs.usercache=$TESTTMP/servercache2" -R server2 serve -d \
899 > -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
902 > -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
900 $ cat hg.pid >> $DAEMON_PIDS
903 $ cat hg.pid >> $DAEMON_PIDS
901 #endif
904 #endif
902
905
903 $ cd $TESTTMP
906 $ cd $TESTTMP
904 $ hg --debug clone test test2
907 $ hg --debug clone test test2
905 http auth: user foo, password ***
908 http auth: user foo, password ***
906 linked 6 files
909 linked 6 files
907 http auth: user foo, password ***
910 http auth: user foo, password ***
908 updating to branch default
911 updating to branch default
909 resolving manifests
912 resolving manifests
910 branchmerge: False, force: False, partial: False
913 branchmerge: False, force: False, partial: False
911 ancestor: 000000000000, local: 000000000000+, remote: d2a338f184a8
914 ancestor: 000000000000, local: 000000000000+, remote: d2a338f184a8
912 http auth: user foo, password ***
915 http auth: user foo, password ***
913 Status: 200
916 Status: 200
914 Content-Length: 308 (git-server !)
917 Content-Length: 308 (git-server !)
915 Content-Length: 186 (hg-server !)
918 Content-Length: 186 (hg-server !)
916 Content-Type: application/vnd.git-lfs+json
919 Content-Type: application/vnd.git-lfs+json
917 Date: $HTTP_DATE$
920 Date: $HTTP_DATE$
918 Server: testing stub value (hg-server !)
921 Server: testing stub value (hg-server !)
919 {
922 {
920 "objects": [
923 "objects": [
921 {
924 {
922 "actions": { (git-server !)
925 "actions": { (git-server !)
923 "upload": { (git-server !)
926 "upload": { (git-server !)
924 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
927 "expires_at": "$ISO_8601_DATE_TIME$" (git-server !)
925 "header": { (git-server !)
928 "header": { (git-server !)
926 "Accept": "application/vnd.git-lfs" (git-server !)
929 "Accept": "application/vnd.git-lfs" (git-server !)
927 } (git-server !)
930 } (git-server !)
928 "href": "http://localhost:$HGPORT/objects/bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a" (git-server !)
931 "href": "http://localhost:$HGPORT/objects/bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a" (git-server !)
929 } (git-server !)
932 } (git-server !)
930 "error": { (hg-server !)
933 "error": { (hg-server !)
931 "code": 404 (hg-server !)
934 "code": 404 (hg-server !)
932 "message": "The object does not exist" (hg-server !)
935 "message": "The object does not exist" (hg-server !)
933 }
936 }
934 "oid": "bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a"
937 "oid": "bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a"
935 "size": 6
938 "size": 6
936 }
939 }
937 ]
940 ]
938 "transfer": "basic" (hg-server !)
941 "transfer": "basic" (hg-server !)
939 }
942 }
940 abort: LFS server error for "a": The object does not exist
943 abort: LFS server error for "a": The object does not exist
941 [50]
944 [50]
942
945
943 $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
946 $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
General Comments 0
You need to be logged in to leave comments. Login now