##// END OF EJS Templates
tests: add size and hash for Python 3...
Gregory Szorc -
r41346:8df34719 default
parent child Browse files
Show More
@@ -1,609 +1,609 b''
1 #require serve
1 #require serve
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo foo>foo
5 $ echo foo>foo
6 $ hg commit -Am 1 -d '1 0'
6 $ hg commit -Am 1 -d '1 0'
7 adding foo
7 adding foo
8 $ echo bar>bar
8 $ echo bar>bar
9 $ hg commit -Am 2 -d '2 0'
9 $ hg commit -Am 2 -d '2 0'
10 adding bar
10 adding bar
11 $ mkdir baz
11 $ mkdir baz
12 $ echo bletch>baz/bletch
12 $ echo bletch>baz/bletch
13 $ hg commit -Am 3 -d '1000000000 0'
13 $ hg commit -Am 3 -d '1000000000 0'
14 adding baz/bletch
14 adding baz/bletch
15 $ hg init subrepo
15 $ hg init subrepo
16 $ touch subrepo/sub
16 $ touch subrepo/sub
17 $ hg -q -R subrepo ci -Am "init subrepo"
17 $ hg -q -R subrepo ci -Am "init subrepo"
18 $ echo "subrepo = subrepo" > .hgsub
18 $ echo "subrepo = subrepo" > .hgsub
19 $ hg add .hgsub
19 $ hg add .hgsub
20 $ hg ci -m "add subrepo"
20 $ hg ci -m "add subrepo"
21
21
22 $ cat >> $HGRCPATH <<EOF
22 $ cat >> $HGRCPATH <<EOF
23 > [extensions]
23 > [extensions]
24 > share =
24 > share =
25 > EOF
25 > EOF
26
26
27 hg subrepos are shared when the parent repo is shared
27 hg subrepos are shared when the parent repo is shared
28
28
29 $ cd ..
29 $ cd ..
30 $ hg share test shared1
30 $ hg share test shared1
31 updating working directory
31 updating working directory
32 sharing subrepo subrepo from $TESTTMP/test/subrepo
32 sharing subrepo subrepo from $TESTTMP/test/subrepo
33 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 $ cat shared1/subrepo/.hg/sharedpath
34 $ cat shared1/subrepo/.hg/sharedpath
35 $TESTTMP/test/subrepo/.hg (no-eol)
35 $TESTTMP/test/subrepo/.hg (no-eol)
36
36
37 hg subrepos are shared into existence on demand if the parent was shared
37 hg subrepos are shared into existence on demand if the parent was shared
38
38
39 $ hg clone -qr 1 test clone1
39 $ hg clone -qr 1 test clone1
40 $ hg share clone1 share2
40 $ hg share clone1 share2
41 updating working directory
41 updating working directory
42 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
42 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
43 $ hg -R clone1 -q pull
43 $ hg -R clone1 -q pull
44 $ hg -R share2 update tip
44 $ hg -R share2 update tip
45 sharing subrepo subrepo from $TESTTMP/test/subrepo
45 sharing subrepo subrepo from $TESTTMP/test/subrepo
46 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
47 $ cat share2/subrepo/.hg/sharedpath
47 $ cat share2/subrepo/.hg/sharedpath
48 $TESTTMP/test/subrepo/.hg (no-eol)
48 $TESTTMP/test/subrepo/.hg (no-eol)
49 $ echo 'mod' > share2/subrepo/sub
49 $ echo 'mod' > share2/subrepo/sub
50 $ hg -R share2 ci -Sqm 'subrepo mod'
50 $ hg -R share2 ci -Sqm 'subrepo mod'
51 $ hg -R clone1 update -C tip
51 $ hg -R clone1 update -C tip
52 cloning subrepo subrepo from $TESTTMP/test/subrepo
52 cloning subrepo subrepo from $TESTTMP/test/subrepo
53 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
53 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
54 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
54 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
55 share2/.hg/sharedpath
55 share2/.hg/sharedpath
56 share2/subrepo/.hg/sharedpath
56 share2/subrepo/.hg/sharedpath
57 $ hg -R share2 unshare
57 $ hg -R share2 unshare
58 unsharing subrepo 'subrepo'
58 unsharing subrepo 'subrepo'
59 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
59 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
60 share2/.hg/00changelog.i
60 share2/.hg/00changelog.i
61 share2/.hg/sharedpath.old
61 share2/.hg/sharedpath.old
62 share2/.hg/store/00changelog.i
62 share2/.hg/store/00changelog.i
63 share2/.hg/store/00manifest.i
63 share2/.hg/store/00manifest.i
64 share2/subrepo/.hg/00changelog.i
64 share2/subrepo/.hg/00changelog.i
65 share2/subrepo/.hg/sharedpath.old
65 share2/subrepo/.hg/sharedpath.old
66 share2/subrepo/.hg/store/00changelog.i
66 share2/subrepo/.hg/store/00changelog.i
67 share2/subrepo/.hg/store/00manifest.i
67 share2/subrepo/.hg/store/00manifest.i
68 $ hg -R share2/subrepo log -r tip -T compact
68 $ hg -R share2/subrepo log -r tip -T compact
69 1[tip] 559dcc9bfa65 1970-01-01 00:00 +0000 test
69 1[tip] 559dcc9bfa65 1970-01-01 00:00 +0000 test
70 subrepo mod
70 subrepo mod
71
71
72 $ rm -rf clone1
72 $ rm -rf clone1
73
73
74 $ hg clone -qr 1 test clone1
74 $ hg clone -qr 1 test clone1
75 $ hg share clone1 shared3
75 $ hg share clone1 shared3
76 updating working directory
76 updating working directory
77 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
78 $ hg -R clone1 -q pull
78 $ hg -R clone1 -q pull
79 $ hg -R shared3 archive --config ui.archivemeta=False -r tip -S archive
79 $ hg -R shared3 archive --config ui.archivemeta=False -r tip -S archive
80 sharing subrepo subrepo from $TESTTMP/test/subrepo
80 sharing subrepo subrepo from $TESTTMP/test/subrepo
81 $ cat shared3/subrepo/.hg/sharedpath
81 $ cat shared3/subrepo/.hg/sharedpath
82 $TESTTMP/test/subrepo/.hg (no-eol)
82 $TESTTMP/test/subrepo/.hg (no-eol)
83 $ diff -r archive test
83 $ diff -r archive test
84 Only in test: .hg
84 Only in test: .hg
85 Common subdirectories: archive/baz and test/baz (?)
85 Common subdirectories: archive/baz and test/baz (?)
86 Common subdirectories: archive/subrepo and test/subrepo (?)
86 Common subdirectories: archive/subrepo and test/subrepo (?)
87 Only in test/subrepo: .hg
87 Only in test/subrepo: .hg
88 [1]
88 [1]
89 $ rm -rf archive
89 $ rm -rf archive
90
90
91 $ cd test
91 $ cd test
92 $ echo "[web]" >> .hg/hgrc
92 $ echo "[web]" >> .hg/hgrc
93 $ echo "name = test-archive" >> .hg/hgrc
93 $ echo "name = test-archive" >> .hg/hgrc
94 $ echo "archivesubrepos = True" >> .hg/hgrc
94 $ echo "archivesubrepos = True" >> .hg/hgrc
95 $ cp .hg/hgrc .hg/hgrc-base
95 $ cp .hg/hgrc .hg/hgrc-base
96 > test_archtype() {
96 > test_archtype() {
97 > echo "allow-archive = $1" >> .hg/hgrc
97 > echo "allow-archive = $1" >> .hg/hgrc
98 > test_archtype_run "$@"
98 > test_archtype_run "$@"
99 > }
99 > }
100 > test_archtype_deprecated() {
100 > test_archtype_deprecated() {
101 > echo "allow$1 = True" >> .hg/hgrc
101 > echo "allow$1 = True" >> .hg/hgrc
102 > test_archtype_run "$@"
102 > test_archtype_run "$@"
103 > }
103 > }
104 > test_archtype_run() {
104 > test_archtype_run() {
105 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log \
105 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log \
106 > --config extensions.blackbox= --config blackbox.track=develwarn
106 > --config extensions.blackbox= --config blackbox.track=develwarn
107 > cat hg.pid >> $DAEMON_PIDS
107 > cat hg.pid >> $DAEMON_PIDS
108 > echo % $1 allowed should give 200
108 > echo % $1 allowed should give 200
109 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$2" -
109 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$2" -
110 > f --size --sha1 body
110 > f --size --sha1 body
111 > echo % $3 and $4 disallowed should both give 403
111 > echo % $3 and $4 disallowed should both give 403
112 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$3" -
112 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$3" -
113 > f --size --sha1 body
113 > f --size --sha1 body
114 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$4" -
114 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$4" -
115 > f --size --sha1 body
115 > f --size --sha1 body
116 > killdaemons.py
116 > killdaemons.py
117 > cat errors.log
117 > cat errors.log
118 > hg blackbox --config extensions.blackbox= --config blackbox.track=
118 > hg blackbox --config extensions.blackbox= --config blackbox.track=
119 > cp .hg/hgrc-base .hg/hgrc
119 > cp .hg/hgrc-base .hg/hgrc
120 > }
120 > }
121
121
122 check http return codes
122 check http return codes
123
123
124 $ test_archtype gz tar.gz tar.bz2 zip
124 $ test_archtype gz tar.gz tar.bz2 zip
125 % gz allowed should give 200
125 % gz allowed should give 200
126 200 Script output follows
126 200 Script output follows
127 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
127 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
128 content-type: application/x-gzip
128 content-type: application/x-gzip
129 date: $HTTP_DATE$
129 date: $HTTP_DATE$
130 etag: W/"*" (glob)
130 etag: W/"*" (glob)
131 server: testing stub value
131 server: testing stub value
132 transfer-encoding: chunked
132 transfer-encoding: chunked
133
133
134 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505
134 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505
135 % tar.bz2 and zip disallowed should both give 403
135 % tar.bz2 and zip disallowed should both give 403
136 403 Archive type not allowed: bz2
136 403 Archive type not allowed: bz2
137 content-type: text/html; charset=ascii
137 content-type: text/html; charset=ascii
138 date: $HTTP_DATE$
138 date: $HTTP_DATE$
139 etag: W/"*" (glob)
139 etag: W/"*" (glob)
140 server: testing stub value
140 server: testing stub value
141 transfer-encoding: chunked
141 transfer-encoding: chunked
142
142
143 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
143 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
144 403 Archive type not allowed: zip
144 403 Archive type not allowed: zip
145 content-type: text/html; charset=ascii
145 content-type: text/html; charset=ascii
146 date: $HTTP_DATE$
146 date: $HTTP_DATE$
147 etag: W/"*" (glob)
147 etag: W/"*" (glob)
148 server: testing stub value
148 server: testing stub value
149 transfer-encoding: chunked
149 transfer-encoding: chunked
150
150
151 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
151 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
152 $ test_archtype bz2 tar.bz2 zip tar.gz
152 $ test_archtype bz2 tar.bz2 zip tar.gz
153 % bz2 allowed should give 200
153 % bz2 allowed should give 200
154 200 Script output follows
154 200 Script output follows
155 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
155 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
156 content-type: application/x-bzip2
156 content-type: application/x-bzip2
157 date: $HTTP_DATE$
157 date: $HTTP_DATE$
158 etag: W/"*" (glob)
158 etag: W/"*" (glob)
159 server: testing stub value
159 server: testing stub value
160 transfer-encoding: chunked
160 transfer-encoding: chunked
161
161
162 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b
162 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b
163 % zip and tar.gz disallowed should both give 403
163 % zip and tar.gz disallowed should both give 403
164 403 Archive type not allowed: zip
164 403 Archive type not allowed: zip
165 content-type: text/html; charset=ascii
165 content-type: text/html; charset=ascii
166 date: $HTTP_DATE$
166 date: $HTTP_DATE$
167 etag: W/"*" (glob)
167 etag: W/"*" (glob)
168 server: testing stub value
168 server: testing stub value
169 transfer-encoding: chunked
169 transfer-encoding: chunked
170
170
171 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
171 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
172 403 Archive type not allowed: gz
172 403 Archive type not allowed: gz
173 content-type: text/html; charset=ascii
173 content-type: text/html; charset=ascii
174 date: $HTTP_DATE$
174 date: $HTTP_DATE$
175 etag: W/"*" (glob)
175 etag: W/"*" (glob)
176 server: testing stub value
176 server: testing stub value
177 transfer-encoding: chunked
177 transfer-encoding: chunked
178
178
179 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
179 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
180 $ test_archtype zip zip tar.gz tar.bz2
180 $ test_archtype zip zip tar.gz tar.bz2
181 % zip allowed should give 200
181 % zip allowed should give 200
182 200 Script output follows
182 200 Script output follows
183 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
183 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
184 content-type: application/zip
184 content-type: application/zip
185 date: $HTTP_DATE$
185 date: $HTTP_DATE$
186 etag: W/"*" (glob)
186 etag: W/"*" (glob)
187 server: testing stub value
187 server: testing stub value
188 transfer-encoding: chunked
188 transfer-encoding: chunked
189
189
190 body: size=(1377|1461), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537) (re)
190 body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
191 % tar.gz and tar.bz2 disallowed should both give 403
191 % tar.gz and tar.bz2 disallowed should both give 403
192 403 Archive type not allowed: gz
192 403 Archive type not allowed: gz
193 content-type: text/html; charset=ascii
193 content-type: text/html; charset=ascii
194 date: $HTTP_DATE$
194 date: $HTTP_DATE$
195 etag: W/"*" (glob)
195 etag: W/"*" (glob)
196 server: testing stub value
196 server: testing stub value
197 transfer-encoding: chunked
197 transfer-encoding: chunked
198
198
199 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
199 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
200 403 Archive type not allowed: bz2
200 403 Archive type not allowed: bz2
201 content-type: text/html; charset=ascii
201 content-type: text/html; charset=ascii
202 date: $HTTP_DATE$
202 date: $HTTP_DATE$
203 etag: W/"*" (glob)
203 etag: W/"*" (glob)
204 server: testing stub value
204 server: testing stub value
205 transfer-encoding: chunked
205 transfer-encoding: chunked
206
206
207 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
207 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
208
208
209 check http return codes (with deprecated option)
209 check http return codes (with deprecated option)
210
210
211 $ test_archtype_deprecated gz tar.gz tar.bz2 zip
211 $ test_archtype_deprecated gz tar.gz tar.bz2 zip
212 % gz allowed should give 200
212 % gz allowed should give 200
213 200 Script output follows
213 200 Script output follows
214 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
214 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
215 content-type: application/x-gzip
215 content-type: application/x-gzip
216 date: $HTTP_DATE$
216 date: $HTTP_DATE$
217 etag: W/"*" (glob)
217 etag: W/"*" (glob)
218 server: testing stub value
218 server: testing stub value
219 transfer-encoding: chunked
219 transfer-encoding: chunked
220
220
221 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505
221 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505
222 % tar.bz2 and zip disallowed should both give 403
222 % tar.bz2 and zip disallowed should both give 403
223 403 Archive type not allowed: bz2
223 403 Archive type not allowed: bz2
224 content-type: text/html; charset=ascii
224 content-type: text/html; charset=ascii
225 date: $HTTP_DATE$
225 date: $HTTP_DATE$
226 etag: W/"*" (glob)
226 etag: W/"*" (glob)
227 server: testing stub value
227 server: testing stub value
228 transfer-encoding: chunked
228 transfer-encoding: chunked
229
229
230 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
230 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
231 403 Archive type not allowed: zip
231 403 Archive type not allowed: zip
232 content-type: text/html; charset=ascii
232 content-type: text/html; charset=ascii
233 date: $HTTP_DATE$
233 date: $HTTP_DATE$
234 etag: W/"*" (glob)
234 etag: W/"*" (glob)
235 server: testing stub value
235 server: testing stub value
236 transfer-encoding: chunked
236 transfer-encoding: chunked
237
237
238 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
238 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
239 $ test_archtype_deprecated bz2 tar.bz2 zip tar.gz
239 $ test_archtype_deprecated bz2 tar.bz2 zip tar.gz
240 % bz2 allowed should give 200
240 % bz2 allowed should give 200
241 200 Script output follows
241 200 Script output follows
242 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
242 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
243 content-type: application/x-bzip2
243 content-type: application/x-bzip2
244 date: $HTTP_DATE$
244 date: $HTTP_DATE$
245 etag: W/"*" (glob)
245 etag: W/"*" (glob)
246 server: testing stub value
246 server: testing stub value
247 transfer-encoding: chunked
247 transfer-encoding: chunked
248
248
249 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b
249 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b
250 % zip and tar.gz disallowed should both give 403
250 % zip and tar.gz disallowed should both give 403
251 403 Archive type not allowed: zip
251 403 Archive type not allowed: zip
252 content-type: text/html; charset=ascii
252 content-type: text/html; charset=ascii
253 date: $HTTP_DATE$
253 date: $HTTP_DATE$
254 etag: W/"*" (glob)
254 etag: W/"*" (glob)
255 server: testing stub value
255 server: testing stub value
256 transfer-encoding: chunked
256 transfer-encoding: chunked
257
257
258 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
258 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
259 403 Archive type not allowed: gz
259 403 Archive type not allowed: gz
260 content-type: text/html; charset=ascii
260 content-type: text/html; charset=ascii
261 date: $HTTP_DATE$
261 date: $HTTP_DATE$
262 etag: W/"*" (glob)
262 etag: W/"*" (glob)
263 server: testing stub value
263 server: testing stub value
264 transfer-encoding: chunked
264 transfer-encoding: chunked
265
265
266 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
266 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
267 $ test_archtype_deprecated zip zip tar.gz tar.bz2
267 $ test_archtype_deprecated zip zip tar.gz tar.bz2
268 % zip allowed should give 200
268 % zip allowed should give 200
269 200 Script output follows
269 200 Script output follows
270 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
270 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
271 content-type: application/zip
271 content-type: application/zip
272 date: $HTTP_DATE$
272 date: $HTTP_DATE$
273 etag: W/"*" (glob)
273 etag: W/"*" (glob)
274 server: testing stub value
274 server: testing stub value
275 transfer-encoding: chunked
275 transfer-encoding: chunked
276
276
277 body: size=(1377|1461), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537) (re)
277 body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
278 % tar.gz and tar.bz2 disallowed should both give 403
278 % tar.gz and tar.bz2 disallowed should both give 403
279 403 Archive type not allowed: gz
279 403 Archive type not allowed: gz
280 content-type: text/html; charset=ascii
280 content-type: text/html; charset=ascii
281 date: $HTTP_DATE$
281 date: $HTTP_DATE$
282 etag: W/"*" (glob)
282 etag: W/"*" (glob)
283 server: testing stub value
283 server: testing stub value
284 transfer-encoding: chunked
284 transfer-encoding: chunked
285
285
286 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
286 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
287 403 Archive type not allowed: bz2
287 403 Archive type not allowed: bz2
288 content-type: text/html; charset=ascii
288 content-type: text/html; charset=ascii
289 date: $HTTP_DATE$
289 date: $HTTP_DATE$
290 etag: W/"*" (glob)
290 etag: W/"*" (glob)
291 server: testing stub value
291 server: testing stub value
292 transfer-encoding: chunked
292 transfer-encoding: chunked
293
293
294 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
294 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
295
295
296 $ echo "allow-archive = gz bz2 zip" >> .hg/hgrc
296 $ echo "allow-archive = gz bz2 zip" >> .hg/hgrc
297 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
297 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
298 $ cat hg.pid >> $DAEMON_PIDS
298 $ cat hg.pid >> $DAEMON_PIDS
299
299
300 check archive links' order
300 check archive links' order
301
301
302 $ get-with-headers.py localhost:$HGPORT "?revcount=1" | grep '/archive/tip.'
302 $ get-with-headers.py localhost:$HGPORT "?revcount=1" | grep '/archive/tip.'
303 <a href="/archive/tip.zip">zip</a>
303 <a href="/archive/tip.zip">zip</a>
304 <a href="/archive/tip.tar.gz">gz</a>
304 <a href="/archive/tip.tar.gz">gz</a>
305 <a href="/archive/tip.tar.bz2">bz2</a>
305 <a href="/archive/tip.tar.bz2">bz2</a>
306
306
307 invalid arch type should give 404
307 invalid arch type should give 404
308
308
309 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
309 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
310 404 Unsupported archive type: None
310 404 Unsupported archive type: None
311
311
312 $ TIP=`hg id -v | cut -f1 -d' '`
312 $ TIP=`hg id -v | cut -f1 -d' '`
313 $ QTIP=`hg id -q`
313 $ QTIP=`hg id -q`
314 $ cat > getarchive.py <<EOF
314 $ cat > getarchive.py <<EOF
315 > from __future__ import absolute_import
315 > from __future__ import absolute_import
316 > import os
316 > import os
317 > import sys
317 > import sys
318 > from mercurial import (
318 > from mercurial import (
319 > util,
319 > util,
320 > )
320 > )
321 > try:
321 > try:
322 > # Set stdout to binary mode for win32 platforms
322 > # Set stdout to binary mode for win32 platforms
323 > import msvcrt
323 > import msvcrt
324 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
324 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
325 > except ImportError:
325 > except ImportError:
326 > pass
326 > pass
327 > if len(sys.argv) <= 3:
327 > if len(sys.argv) <= 3:
328 > node, archive = sys.argv[1:]
328 > node, archive = sys.argv[1:]
329 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
329 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
330 > else:
330 > else:
331 > node, archive, file = sys.argv[1:]
331 > node, archive, file = sys.argv[1:]
332 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
332 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
333 > try:
333 > try:
334 > stdout = sys.stdout.buffer
334 > stdout = sys.stdout.buffer
335 > except AttributeError:
335 > except AttributeError:
336 > stdout = sys.stdout
336 > stdout = sys.stdout
337 > try:
337 > try:
338 > f = util.urlreq.urlopen('http://$LOCALIP:%s/?%s'
338 > f = util.urlreq.urlopen('http://$LOCALIP:%s/?%s'
339 > % (os.environ['HGPORT'], requeststr))
339 > % (os.environ['HGPORT'], requeststr))
340 > stdout.write(f.read())
340 > stdout.write(f.read())
341 > except util.urlerr.httperror as e:
341 > except util.urlerr.httperror as e:
342 > sys.stderr.write(str(e) + '\n')
342 > sys.stderr.write(str(e) + '\n')
343 > EOF
343 > EOF
344 $ "$PYTHON" getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
344 $ "$PYTHON" getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
345 test-archive-1701ef1f1510/.hg_archival.txt
345 test-archive-1701ef1f1510/.hg_archival.txt
346 test-archive-1701ef1f1510/.hgsub
346 test-archive-1701ef1f1510/.hgsub
347 test-archive-1701ef1f1510/.hgsubstate
347 test-archive-1701ef1f1510/.hgsubstate
348 test-archive-1701ef1f1510/bar
348 test-archive-1701ef1f1510/bar
349 test-archive-1701ef1f1510/baz/bletch
349 test-archive-1701ef1f1510/baz/bletch
350 test-archive-1701ef1f1510/foo
350 test-archive-1701ef1f1510/foo
351 test-archive-1701ef1f1510/subrepo/sub
351 test-archive-1701ef1f1510/subrepo/sub
352 $ "$PYTHON" getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
352 $ "$PYTHON" getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
353 test-archive-1701ef1f1510/.hg_archival.txt
353 test-archive-1701ef1f1510/.hg_archival.txt
354 test-archive-1701ef1f1510/.hgsub
354 test-archive-1701ef1f1510/.hgsub
355 test-archive-1701ef1f1510/.hgsubstate
355 test-archive-1701ef1f1510/.hgsubstate
356 test-archive-1701ef1f1510/bar
356 test-archive-1701ef1f1510/bar
357 test-archive-1701ef1f1510/baz/bletch
357 test-archive-1701ef1f1510/baz/bletch
358 test-archive-1701ef1f1510/foo
358 test-archive-1701ef1f1510/foo
359 test-archive-1701ef1f1510/subrepo/sub
359 test-archive-1701ef1f1510/subrepo/sub
360 $ "$PYTHON" getarchive.py "$TIP" zip > archive.zip
360 $ "$PYTHON" getarchive.py "$TIP" zip > archive.zip
361 $ unzip -t archive.zip
361 $ unzip -t archive.zip
362 Archive: archive.zip
362 Archive: archive.zip
363 testing: test-archive-1701ef1f1510/.hg_archival.txt*OK (glob)
363 testing: test-archive-1701ef1f1510/.hg_archival.txt*OK (glob)
364 testing: test-archive-1701ef1f1510/.hgsub*OK (glob)
364 testing: test-archive-1701ef1f1510/.hgsub*OK (glob)
365 testing: test-archive-1701ef1f1510/.hgsubstate*OK (glob)
365 testing: test-archive-1701ef1f1510/.hgsubstate*OK (glob)
366 testing: test-archive-1701ef1f1510/bar*OK (glob)
366 testing: test-archive-1701ef1f1510/bar*OK (glob)
367 testing: test-archive-1701ef1f1510/baz/bletch*OK (glob)
367 testing: test-archive-1701ef1f1510/baz/bletch*OK (glob)
368 testing: test-archive-1701ef1f1510/foo*OK (glob)
368 testing: test-archive-1701ef1f1510/foo*OK (glob)
369 testing: test-archive-1701ef1f1510/subrepo/sub*OK (glob)
369 testing: test-archive-1701ef1f1510/subrepo/sub*OK (glob)
370 No errors detected in compressed data of archive.zip.
370 No errors detected in compressed data of archive.zip.
371
371
372 test that we can download single directories and files
372 test that we can download single directories and files
373
373
374 $ "$PYTHON" getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
374 $ "$PYTHON" getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
375 test-archive-1701ef1f1510/baz/bletch
375 test-archive-1701ef1f1510/baz/bletch
376 $ "$PYTHON" getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
376 $ "$PYTHON" getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
377 test-archive-1701ef1f1510/foo
377 test-archive-1701ef1f1510/foo
378
378
379 test that we detect file patterns that match no files
379 test that we detect file patterns that match no files
380
380
381 $ "$PYTHON" getarchive.py "$TIP" gz foobar
381 $ "$PYTHON" getarchive.py "$TIP" gz foobar
382 HTTP Error 404: file(s) not found: foobar
382 HTTP Error 404: file(s) not found: foobar
383
383
384 test that we reject unsafe patterns
384 test that we reject unsafe patterns
385
385
386 $ "$PYTHON" getarchive.py "$TIP" gz relre:baz
386 $ "$PYTHON" getarchive.py "$TIP" gz relre:baz
387 HTTP Error 404: file(s) not found: relre:baz
387 HTTP Error 404: file(s) not found: relre:baz
388
388
389 $ killdaemons.py
389 $ killdaemons.py
390
390
391 $ hg archive -t tar test.tar
391 $ hg archive -t tar test.tar
392 $ tar tf test.tar
392 $ tar tf test.tar
393 test/.hg_archival.txt
393 test/.hg_archival.txt
394 test/.hgsub
394 test/.hgsub
395 test/.hgsubstate
395 test/.hgsubstate
396 test/bar
396 test/bar
397 test/baz/bletch
397 test/baz/bletch
398 test/foo
398 test/foo
399
399
400 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
400 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
401 archiving: 0/4 files (0.00%)
401 archiving: 0/4 files (0.00%)
402 archiving: .hgsub 1/4 files (25.00%)
402 archiving: .hgsub 1/4 files (25.00%)
403 archiving: .hgsubstate 2/4 files (50.00%)
403 archiving: .hgsubstate 2/4 files (50.00%)
404 archiving: bar 3/4 files (75.00%)
404 archiving: bar 3/4 files (75.00%)
405 archiving: foo 4/4 files (100.00%)
405 archiving: foo 4/4 files (100.00%)
406 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
406 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
407 test/.hg_archival.txt
407 test/.hg_archival.txt
408 test/.hgsub
408 test/.hgsub
409 test/.hgsubstate
409 test/.hgsubstate
410 test/bar
410 test/bar
411 test/foo
411 test/foo
412
412
413 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
413 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
414 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
414 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
415 test-1701ef1f1510/.hg_archival.txt
415 test-1701ef1f1510/.hg_archival.txt
416 test-1701ef1f1510/.hgsub
416 test-1701ef1f1510/.hgsub
417 test-1701ef1f1510/.hgsubstate
417 test-1701ef1f1510/.hgsubstate
418 test-1701ef1f1510/bar
418 test-1701ef1f1510/bar
419 test-1701ef1f1510/baz/bletch
419 test-1701ef1f1510/baz/bletch
420 test-1701ef1f1510/foo
420 test-1701ef1f1510/foo
421
421
422 $ hg archive autodetected_test.tar
422 $ hg archive autodetected_test.tar
423 $ tar tf autodetected_test.tar
423 $ tar tf autodetected_test.tar
424 autodetected_test/.hg_archival.txt
424 autodetected_test/.hg_archival.txt
425 autodetected_test/.hgsub
425 autodetected_test/.hgsub
426 autodetected_test/.hgsubstate
426 autodetected_test/.hgsubstate
427 autodetected_test/bar
427 autodetected_test/bar
428 autodetected_test/baz/bletch
428 autodetected_test/baz/bletch
429 autodetected_test/foo
429 autodetected_test/foo
430
430
431 The '-t' should override autodetection
431 The '-t' should override autodetection
432
432
433 $ hg archive -t tar autodetect_override_test.zip
433 $ hg archive -t tar autodetect_override_test.zip
434 $ tar tf autodetect_override_test.zip
434 $ tar tf autodetect_override_test.zip
435 autodetect_override_test.zip/.hg_archival.txt
435 autodetect_override_test.zip/.hg_archival.txt
436 autodetect_override_test.zip/.hgsub
436 autodetect_override_test.zip/.hgsub
437 autodetect_override_test.zip/.hgsubstate
437 autodetect_override_test.zip/.hgsubstate
438 autodetect_override_test.zip/bar
438 autodetect_override_test.zip/bar
439 autodetect_override_test.zip/baz/bletch
439 autodetect_override_test.zip/baz/bletch
440 autodetect_override_test.zip/foo
440 autodetect_override_test.zip/foo
441
441
442 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
442 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
443 > hg archive auto_test.$ext
443 > hg archive auto_test.$ext
444 > if [ -d auto_test.$ext ]; then
444 > if [ -d auto_test.$ext ]; then
445 > echo "extension $ext was not autodetected."
445 > echo "extension $ext was not autodetected."
446 > fi
446 > fi
447 > done
447 > done
448
448
449 $ cat > md5comp.py <<EOF
449 $ cat > md5comp.py <<EOF
450 > from __future__ import absolute_import, print_function
450 > from __future__ import absolute_import, print_function
451 > import hashlib
451 > import hashlib
452 > import sys
452 > import sys
453 > f1, f2 = sys.argv[1:3]
453 > f1, f2 = sys.argv[1:3]
454 > h1 = hashlib.md5(open(f1, 'rb').read()).hexdigest()
454 > h1 = hashlib.md5(open(f1, 'rb').read()).hexdigest()
455 > h2 = hashlib.md5(open(f2, 'rb').read()).hexdigest()
455 > h2 = hashlib.md5(open(f2, 'rb').read()).hexdigest()
456 > print(h1 == h2 or "md5 differ: " + repr((h1, h2)))
456 > print(h1 == h2 or "md5 differ: " + repr((h1, h2)))
457 > EOF
457 > EOF
458
458
459 archive name is stored in the archive, so create similar archives and
459 archive name is stored in the archive, so create similar archives and
460 rename them afterwards.
460 rename them afterwards.
461
461
462 $ hg archive -t tgz tip.tar.gz
462 $ hg archive -t tgz tip.tar.gz
463 $ mv tip.tar.gz tip1.tar.gz
463 $ mv tip.tar.gz tip1.tar.gz
464 $ sleep 1
464 $ sleep 1
465 $ hg archive -t tgz tip.tar.gz
465 $ hg archive -t tgz tip.tar.gz
466 $ mv tip.tar.gz tip2.tar.gz
466 $ mv tip.tar.gz tip2.tar.gz
467 $ "$PYTHON" md5comp.py tip1.tar.gz tip2.tar.gz
467 $ "$PYTHON" md5comp.py tip1.tar.gz tip2.tar.gz
468 True
468 True
469
469
470 $ hg archive -t zip -p /illegal test.zip
470 $ hg archive -t zip -p /illegal test.zip
471 abort: archive prefix contains illegal components
471 abort: archive prefix contains illegal components
472 [255]
472 [255]
473 $ hg archive -t zip -p very/../bad test.zip
473 $ hg archive -t zip -p very/../bad test.zip
474
474
475 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
475 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
476 $ unzip -t test.zip
476 $ unzip -t test.zip
477 Archive: test.zip
477 Archive: test.zip
478 testing: test/bar*OK (glob)
478 testing: test/bar*OK (glob)
479 testing: test/baz/bletch*OK (glob)
479 testing: test/baz/bletch*OK (glob)
480 testing: test/foo*OK (glob)
480 testing: test/foo*OK (glob)
481 No errors detected in compressed data of test.zip.
481 No errors detected in compressed data of test.zip.
482
482
483 $ hg archive -t tar - | tar tf - 2>/dev/null
483 $ hg archive -t tar - | tar tf - 2>/dev/null
484 test-1701ef1f1510/.hg_archival.txt
484 test-1701ef1f1510/.hg_archival.txt
485 test-1701ef1f1510/.hgsub
485 test-1701ef1f1510/.hgsub
486 test-1701ef1f1510/.hgsubstate
486 test-1701ef1f1510/.hgsubstate
487 test-1701ef1f1510/bar
487 test-1701ef1f1510/bar
488 test-1701ef1f1510/baz/bletch
488 test-1701ef1f1510/baz/bletch
489 test-1701ef1f1510/foo
489 test-1701ef1f1510/foo
490
490
491 $ hg archive -r 0 -t tar rev-%r.tar
491 $ hg archive -r 0 -t tar rev-%r.tar
492 $ [ -f rev-0.tar ]
492 $ [ -f rev-0.tar ]
493
493
494 test .hg_archival.txt
494 test .hg_archival.txt
495
495
496 $ hg archive ../test-tags
496 $ hg archive ../test-tags
497 $ cat ../test-tags/.hg_archival.txt
497 $ cat ../test-tags/.hg_archival.txt
498 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
498 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
499 node: 1701ef1f151069b8747038e93b5186bb43a47504
499 node: 1701ef1f151069b8747038e93b5186bb43a47504
500 branch: default
500 branch: default
501 latesttag: null
501 latesttag: null
502 latesttagdistance: 4
502 latesttagdistance: 4
503 changessincelatesttag: 4
503 changessincelatesttag: 4
504 $ hg tag -r 2 mytag
504 $ hg tag -r 2 mytag
505 $ hg tag -r 2 anothertag
505 $ hg tag -r 2 anothertag
506 $ hg archive -r 2 ../test-lasttag
506 $ hg archive -r 2 ../test-lasttag
507 $ cat ../test-lasttag/.hg_archival.txt
507 $ cat ../test-lasttag/.hg_archival.txt
508 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
508 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
509 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
509 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
510 branch: default
510 branch: default
511 tag: anothertag
511 tag: anothertag
512 tag: mytag
512 tag: mytag
513
513
514 $ hg archive -t bogus test.bogus
514 $ hg archive -t bogus test.bogus
515 abort: unknown archive type 'bogus'
515 abort: unknown archive type 'bogus'
516 [255]
516 [255]
517
517
518 enable progress extension:
518 enable progress extension:
519
519
520 $ cp $HGRCPATH $HGRCPATH.no-progress
520 $ cp $HGRCPATH $HGRCPATH.no-progress
521 $ cat >> $HGRCPATH <<EOF
521 $ cat >> $HGRCPATH <<EOF
522 > [progress]
522 > [progress]
523 > assume-tty = 1
523 > assume-tty = 1
524 > format = topic bar number
524 > format = topic bar number
525 > delay = 0
525 > delay = 0
526 > refresh = 0
526 > refresh = 0
527 > width = 60
527 > width = 60
528 > EOF
528 > EOF
529
529
530 $ hg archive ../with-progress
530 $ hg archive ../with-progress
531 \r (no-eol) (esc)
531 \r (no-eol) (esc)
532 archiving [ ] 0/6\r (no-eol) (esc)
532 archiving [ ] 0/6\r (no-eol) (esc)
533 archiving [======> ] 1/6\r (no-eol) (esc)
533 archiving [======> ] 1/6\r (no-eol) (esc)
534 archiving [=============> ] 2/6\r (no-eol) (esc)
534 archiving [=============> ] 2/6\r (no-eol) (esc)
535 archiving [====================> ] 3/6\r (no-eol) (esc)
535 archiving [====================> ] 3/6\r (no-eol) (esc)
536 archiving [===========================> ] 4/6\r (no-eol) (esc)
536 archiving [===========================> ] 4/6\r (no-eol) (esc)
537 archiving [==================================> ] 5/6\r (no-eol) (esc)
537 archiving [==================================> ] 5/6\r (no-eol) (esc)
538 archiving [==========================================>] 6/6\r (no-eol) (esc)
538 archiving [==========================================>] 6/6\r (no-eol) (esc)
539 \r (no-eol) (esc)
539 \r (no-eol) (esc)
540
540
541 cleanup after progress extension test:
541 cleanup after progress extension test:
542
542
543 $ cp $HGRCPATH.no-progress $HGRCPATH
543 $ cp $HGRCPATH.no-progress $HGRCPATH
544
544
545 server errors
545 server errors
546
546
547 $ cat errors.log
547 $ cat errors.log
548
548
549 empty repo
549 empty repo
550
550
551 $ hg init ../empty
551 $ hg init ../empty
552 $ cd ../empty
552 $ cd ../empty
553 $ hg archive ../test-empty
553 $ hg archive ../test-empty
554 abort: no working directory: please specify a revision
554 abort: no working directory: please specify a revision
555 [255]
555 [255]
556
556
557 old file -- date clamped to 1980
557 old file -- date clamped to 1980
558
558
559 $ touch -t 197501010000 old
559 $ touch -t 197501010000 old
560 $ hg add old
560 $ hg add old
561 $ hg commit -m old
561 $ hg commit -m old
562 $ hg archive ../old.zip
562 $ hg archive ../old.zip
563 $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$
563 $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$
564 Archive: ../old.zip
564 Archive: ../old.zip
565 \s*Length.* (re)
565 \s*Length.* (re)
566 *172*80*00:00*old/.hg_archival.txt (glob)
566 *172*80*00:00*old/.hg_archival.txt (glob)
567 *0*80*00:00*old/old (glob)
567 *0*80*00:00*old/old (glob)
568
568
569 show an error when a provided pattern matches no files
569 show an error when a provided pattern matches no files
570
570
571 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
571 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
572 abort: no files match the archive pattern
572 abort: no files match the archive pattern
573 [255]
573 [255]
574
574
575 $ hg archive -X * ../empty.zip
575 $ hg archive -X * ../empty.zip
576 abort: no files match the archive pattern
576 abort: no files match the archive pattern
577 [255]
577 [255]
578
578
579 $ cd ..
579 $ cd ..
580
580
581 issue3600: check whether "hg archive" can create archive files which
581 issue3600: check whether "hg archive" can create archive files which
582 are extracted with expected timestamp, even though TZ is not
582 are extracted with expected timestamp, even though TZ is not
583 configured as GMT.
583 configured as GMT.
584
584
585 $ mkdir issue3600
585 $ mkdir issue3600
586 $ cd issue3600
586 $ cd issue3600
587
587
588 $ hg init repo
588 $ hg init repo
589 $ echo a > repo/a
589 $ echo a > repo/a
590 $ hg -R repo add repo/a
590 $ hg -R repo add repo/a
591 $ hg -R repo commit -m '#0' -d '456789012 21600'
591 $ hg -R repo commit -m '#0' -d '456789012 21600'
592 $ cat > show_mtime.py <<EOF
592 $ cat > show_mtime.py <<EOF
593 > from __future__ import absolute_import, print_function
593 > from __future__ import absolute_import, print_function
594 > import os
594 > import os
595 > import sys
595 > import sys
596 > print(int(os.stat(sys.argv[1]).st_mtime))
596 > print(int(os.stat(sys.argv[1]).st_mtime))
597 > EOF
597 > EOF
598
598
599 $ hg -R repo archive --prefix tar-extracted archive.tar
599 $ hg -R repo archive --prefix tar-extracted archive.tar
600 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
600 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
601 $ "$PYTHON" show_mtime.py tar-extracted/a
601 $ "$PYTHON" show_mtime.py tar-extracted/a
602 456789012
602 456789012
603
603
604 $ hg -R repo archive --prefix zip-extracted archive.zip
604 $ hg -R repo archive --prefix zip-extracted archive.zip
605 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
605 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
606 $ "$PYTHON" show_mtime.py zip-extracted/a
606 $ "$PYTHON" show_mtime.py zip-extracted/a
607 456789012
607 456789012
608
608
609 $ cd ..
609 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now