##// END OF EJS Templates
tests: sprinkle globs over largefiles/subrepo tests for Windows
Brendan Cully -
r19117:a6542a67 stable
parent child Browse files
Show More
@@ -1,136 +1,136
1 Create user cache directory
1 Create user cache directory
2
2
3 $ USERCACHE=`pwd`/cache; export USERCACHE
3 $ USERCACHE=`pwd`/cache; export USERCACHE
4 $ cat <<EOF >> ${HGRCPATH}
4 $ cat <<EOF >> ${HGRCPATH}
5 > [extensions]
5 > [extensions]
6 > hgext.largefiles=
6 > hgext.largefiles=
7 > [largefiles]
7 > [largefiles]
8 > usercache=${USERCACHE}
8 > usercache=${USERCACHE}
9 > EOF
9 > EOF
10 $ mkdir -p ${USERCACHE}
10 $ mkdir -p ${USERCACHE}
11
11
12 Create source repo, and commit adding largefile.
12 Create source repo, and commit adding largefile.
13
13
14 $ hg init src
14 $ hg init src
15 $ cd src
15 $ cd src
16 $ echo large > large
16 $ echo large > large
17 $ hg add --large large
17 $ hg add --large large
18 $ hg commit -m 'add largefile'
18 $ hg commit -m 'add largefile'
19 $ hg rm large
19 $ hg rm large
20 $ hg commit -m 'branchhead without largefile'
20 $ hg commit -m 'branchhead without largefile'
21 $ hg up -qr 0
21 $ hg up -qr 0
22 $ cd ..
22 $ cd ..
23
23
24 Discard all cached largefiles in USERCACHE
24 Discard all cached largefiles in USERCACHE
25
25
26 $ rm -rf ${USERCACHE}
26 $ rm -rf ${USERCACHE}
27
27
28 Create mirror repo, and pull from source without largefile:
28 Create mirror repo, and pull from source without largefile:
29 "pull" is used instead of "clone" for suppression of (1) updating to
29 "pull" is used instead of "clone" for suppression of (1) updating to
30 tip (= cahcing largefile from source repo), and (2) recording source
30 tip (= cahcing largefile from source repo), and (2) recording source
31 repo as "default" path in .hg/hgrc.
31 repo as "default" path in .hg/hgrc.
32
32
33 $ hg init mirror
33 $ hg init mirror
34 $ cd mirror
34 $ cd mirror
35 $ hg pull ../src
35 $ hg pull ../src
36 pulling from ../src
36 pulling from ../src
37 requesting all changes
37 requesting all changes
38 adding changesets
38 adding changesets
39 adding manifests
39 adding manifests
40 adding file changes
40 adding file changes
41 added 2 changesets with 1 changes to 1 files
41 added 2 changesets with 1 changes to 1 files
42 (run 'hg update' to get a working copy)
42 (run 'hg update' to get a working copy)
43
43
44 Update working directory to "tip", which requires largefile("large"),
44 Update working directory to "tip", which requires largefile("large"),
45 but there is no cache file for it. So, hg must treat it as
45 but there is no cache file for it. So, hg must treat it as
46 "missing"(!) file.
46 "missing"(!) file.
47
47
48 $ hg update -r0
48 $ hg update -r0
49 getting changed largefiles
49 getting changed largefiles
50 large: largefile 7f7097b041ccf68cc5561e9600da4655d21c6d18 not available from file:$TESTTMP/mirror
50 large: largefile 7f7097b041ccf68cc5561e9600da4655d21c6d18 not available from file:$TESTTMP/mirror (glob)
51 0 largefiles updated, 0 removed
51 0 largefiles updated, 0 removed
52 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
52 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
53 $ hg status
53 $ hg status
54 ! large
54 ! large
55
55
56 Update working directory to null: this cleanup .hg/largefiles/dirstate
56 Update working directory to null: this cleanup .hg/largefiles/dirstate
57
57
58 $ hg update null
58 $ hg update null
59 getting changed largefiles
59 getting changed largefiles
60 0 largefiles updated, 0 removed
60 0 largefiles updated, 0 removed
61 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
61 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
62
62
63 Update working directory to tip, again.
63 Update working directory to tip, again.
64
64
65 $ hg update -r0
65 $ hg update -r0
66 getting changed largefiles
66 getting changed largefiles
67 large: largefile 7f7097b041ccf68cc5561e9600da4655d21c6d18 not available from file:$TESTTMP/mirror
67 large: largefile 7f7097b041ccf68cc5561e9600da4655d21c6d18 not available from file:$TESTTMP/mirror (glob)
68 0 largefiles updated, 0 removed
68 0 largefiles updated, 0 removed
69 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
69 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
70 $ hg status
70 $ hg status
71 ! large
71 ! large
72 $ cd ..
72 $ cd ..
73
73
74 Verify that largefiles from pulled branchheads are fetched, also to an empty repo
74 Verify that largefiles from pulled branchheads are fetched, also to an empty repo
75
75
76 $ hg init mirror2
76 $ hg init mirror2
77 $ hg -R mirror2 pull src -r0
77 $ hg -R mirror2 pull src -r0
78 pulling from src
78 pulling from src
79 adding changesets
79 adding changesets
80 adding manifests
80 adding manifests
81 adding file changes
81 adding file changes
82 added 1 changesets with 1 changes to 1 files
82 added 1 changesets with 1 changes to 1 files
83 (run 'hg update' to get a working copy)
83 (run 'hg update' to get a working copy)
84
84
85 #if unix-permissions
85 #if unix-permissions
86
86
87 Portable way to print file permissions:
87 Portable way to print file permissions:
88
88
89 $ cat > ls-l.py <<EOF
89 $ cat > ls-l.py <<EOF
90 > #!/usr/bin/env python
90 > #!/usr/bin/env python
91 > import sys, os
91 > import sys, os
92 > path = sys.argv[1]
92 > path = sys.argv[1]
93 > print '%03o' % (os.lstat(path).st_mode & 0777)
93 > print '%03o' % (os.lstat(path).st_mode & 0777)
94 > EOF
94 > EOF
95 $ chmod +x ls-l.py
95 $ chmod +x ls-l.py
96
96
97 Test that files in .hg/largefiles inherit mode from .hg/store, not
97 Test that files in .hg/largefiles inherit mode from .hg/store, not
98 from file in working copy:
98 from file in working copy:
99
99
100 $ cd src
100 $ cd src
101 $ chmod 750 .hg/store
101 $ chmod 750 .hg/store
102 $ chmod 660 large
102 $ chmod 660 large
103 $ echo change >> large
103 $ echo change >> large
104 $ hg commit -m change
104 $ hg commit -m change
105 created new head
105 created new head
106 $ ../ls-l.py .hg/largefiles/e151b474069de4ca6898f67ce2f2a7263adf8fea
106 $ ../ls-l.py .hg/largefiles/e151b474069de4ca6898f67ce2f2a7263adf8fea
107 640
107 640
108
108
109 Test permission of with files in .hg/largefiles created by update:
109 Test permission of with files in .hg/largefiles created by update:
110
110
111 $ cd ../mirror
111 $ cd ../mirror
112 $ rm -r "$USERCACHE" .hg/largefiles # avoid links
112 $ rm -r "$USERCACHE" .hg/largefiles # avoid links
113 $ chmod 750 .hg/store
113 $ chmod 750 .hg/store
114 $ hg pull ../src --update -q
114 $ hg pull ../src --update -q
115 $ ../ls-l.py .hg/largefiles/e151b474069de4ca6898f67ce2f2a7263adf8fea
115 $ ../ls-l.py .hg/largefiles/e151b474069de4ca6898f67ce2f2a7263adf8fea
116 640
116 640
117
117
118 Test permission of files created by push:
118 Test permission of files created by push:
119
119
120 $ hg serve -R ../src -d -p $HGPORT --pid-file hg.pid \
120 $ hg serve -R ../src -d -p $HGPORT --pid-file hg.pid \
121 > --config "web.allow_push=*" --config web.push_ssl=no
121 > --config "web.allow_push=*" --config web.push_ssl=no
122 $ cat hg.pid >> $DAEMON_PIDS
122 $ cat hg.pid >> $DAEMON_PIDS
123
123
124 $ echo change >> large
124 $ echo change >> large
125 $ hg commit -m change
125 $ hg commit -m change
126
126
127 $ rm -r "$USERCACHE"
127 $ rm -r "$USERCACHE"
128
128
129 $ hg push -q http://localhost:$HGPORT/
129 $ hg push -q http://localhost:$HGPORT/
130
130
131 $ ../ls-l.py ../src/.hg/largefiles/b734e14a0971e370408ab9bce8d56d8485e368a9
131 $ ../ls-l.py ../src/.hg/largefiles/b734e14a0971e370408ab9bce8d56d8485e368a9
132 640
132 640
133
133
134 $ cd ..
134 $ cd ..
135
135
136 #endif
136 #endif
@@ -1,2191 +1,2191
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
2 $ mkdir "${USERCACHE}"
2 $ mkdir "${USERCACHE}"
3 $ cat >> $HGRCPATH <<EOF
3 $ cat >> $HGRCPATH <<EOF
4 > [extensions]
4 > [extensions]
5 > largefiles=
5 > largefiles=
6 > purge=
6 > purge=
7 > rebase=
7 > rebase=
8 > transplant=
8 > transplant=
9 > [phases]
9 > [phases]
10 > publish=False
10 > publish=False
11 > [largefiles]
11 > [largefiles]
12 > minsize=2
12 > minsize=2
13 > patterns=glob:**.dat
13 > patterns=glob:**.dat
14 > usercache=${USERCACHE}
14 > usercache=${USERCACHE}
15 > [hooks]
15 > [hooks]
16 > precommit=sh -c "echo \\"Invoking status precommit hook\\"; hg status"
16 > precommit=sh -c "echo \\"Invoking status precommit hook\\"; hg status"
17 > EOF
17 > EOF
18
18
19 Create the repo with a couple of revisions of both large and normal
19 Create the repo with a couple of revisions of both large and normal
20 files.
20 files.
21 Test status and dirstate of largefiles and that summary output is correct.
21 Test status and dirstate of largefiles and that summary output is correct.
22
22
23 $ hg init a
23 $ hg init a
24 $ cd a
24 $ cd a
25 $ mkdir sub
25 $ mkdir sub
26 $ echo normal1 > normal1
26 $ echo normal1 > normal1
27 $ echo normal2 > sub/normal2
27 $ echo normal2 > sub/normal2
28 $ echo large1 > large1
28 $ echo large1 > large1
29 $ echo large2 > sub/large2
29 $ echo large2 > sub/large2
30 $ hg add normal1 sub/normal2
30 $ hg add normal1 sub/normal2
31 $ hg add --large large1 sub/large2
31 $ hg add --large large1 sub/large2
32 $ hg commit -m "add files"
32 $ hg commit -m "add files"
33 Invoking status precommit hook
33 Invoking status precommit hook
34 A large1
34 A large1
35 A normal1
35 A normal1
36 A sub/large2
36 A sub/large2
37 A sub/normal2
37 A sub/normal2
38 $ touch large1 sub/large2
38 $ touch large1 sub/large2
39 $ sleep 1
39 $ sleep 1
40 $ hg st
40 $ hg st
41 $ hg debugstate --nodates
41 $ hg debugstate --nodates
42 n 644 41 .hglf/large1
42 n 644 41 .hglf/large1
43 n 644 41 .hglf/sub/large2
43 n 644 41 .hglf/sub/large2
44 n 644 8 normal1
44 n 644 8 normal1
45 n 644 8 sub/normal2
45 n 644 8 sub/normal2
46 $ hg debugstate --large
46 $ hg debugstate --large
47 n 644 7 large1
47 n 644 7 large1
48 n 644 7 sub/large2
48 n 644 7 sub/large2
49 $ echo normal11 > normal1
49 $ echo normal11 > normal1
50 $ echo normal22 > sub/normal2
50 $ echo normal22 > sub/normal2
51 $ echo large11 > large1
51 $ echo large11 > large1
52 $ echo large22 > sub/large2
52 $ echo large22 > sub/large2
53 $ hg commit -m "edit files"
53 $ hg commit -m "edit files"
54 Invoking status precommit hook
54 Invoking status precommit hook
55 M large1
55 M large1
56 M normal1
56 M normal1
57 M sub/large2
57 M sub/large2
58 M sub/normal2
58 M sub/normal2
59 $ hg sum --large
59 $ hg sum --large
60 parent: 1:ce8896473775 tip
60 parent: 1:ce8896473775 tip
61 edit files
61 edit files
62 branch: default
62 branch: default
63 commit: (clean)
63 commit: (clean)
64 update: (current)
64 update: (current)
65 largefiles: (no remote repo)
65 largefiles: (no remote repo)
66
66
67 Commit preserved largefile contents.
67 Commit preserved largefile contents.
68
68
69 $ cat normal1
69 $ cat normal1
70 normal11
70 normal11
71 $ cat large1
71 $ cat large1
72 large11
72 large11
73 $ cat sub/normal2
73 $ cat sub/normal2
74 normal22
74 normal22
75 $ cat sub/large2
75 $ cat sub/large2
76 large22
76 large22
77
77
78 Test status, subdir and unknown files
78 Test status, subdir and unknown files
79
79
80 $ echo unknown > sub/unknown
80 $ echo unknown > sub/unknown
81 $ hg st --all
81 $ hg st --all
82 ? sub/unknown
82 ? sub/unknown
83 C large1
83 C large1
84 C normal1
84 C normal1
85 C sub/large2
85 C sub/large2
86 C sub/normal2
86 C sub/normal2
87 $ hg st --all sub
87 $ hg st --all sub
88 ? sub/unknown
88 ? sub/unknown
89 C sub/large2
89 C sub/large2
90 C sub/normal2
90 C sub/normal2
91 $ rm sub/unknown
91 $ rm sub/unknown
92
92
93 Test messages and exit codes for remove warning cases
93 Test messages and exit codes for remove warning cases
94
94
95 $ hg remove -A large1
95 $ hg remove -A large1
96 not removing large1: file still exists
96 not removing large1: file still exists
97 [1]
97 [1]
98 $ echo 'modified' > large1
98 $ echo 'modified' > large1
99 $ hg remove large1
99 $ hg remove large1
100 not removing large1: file is modified (use -f to force removal)
100 not removing large1: file is modified (use -f to force removal)
101 [1]
101 [1]
102 $ echo 'new' > normalnew
102 $ echo 'new' > normalnew
103 $ hg add normalnew
103 $ hg add normalnew
104 $ echo 'new' > largenew
104 $ echo 'new' > largenew
105 $ hg add --large normalnew
105 $ hg add --large normalnew
106 normalnew already tracked!
106 normalnew already tracked!
107 $ hg remove normalnew largenew
107 $ hg remove normalnew largenew
108 not removing largenew: file is untracked
108 not removing largenew: file is untracked
109 not removing normalnew: file has been marked for add (use forget to undo)
109 not removing normalnew: file has been marked for add (use forget to undo)
110 [1]
110 [1]
111 $ rm normalnew largenew
111 $ rm normalnew largenew
112 $ hg up -Cq
112 $ hg up -Cq
113
113
114 Remove both largefiles and normal files.
114 Remove both largefiles and normal files.
115
115
116 $ hg remove normal1 large1
116 $ hg remove normal1 large1
117 $ hg status large1
117 $ hg status large1
118 R large1
118 R large1
119 $ hg commit -m "remove files"
119 $ hg commit -m "remove files"
120 Invoking status precommit hook
120 Invoking status precommit hook
121 R large1
121 R large1
122 R normal1
122 R normal1
123 $ ls
123 $ ls
124 sub
124 sub
125 $ echo "testlargefile" > large1-test
125 $ echo "testlargefile" > large1-test
126 $ hg add --large large1-test
126 $ hg add --large large1-test
127 $ hg st
127 $ hg st
128 A large1-test
128 A large1-test
129 $ hg rm large1-test
129 $ hg rm large1-test
130 not removing large1-test: file has been marked for add (use forget to undo)
130 not removing large1-test: file has been marked for add (use forget to undo)
131 [1]
131 [1]
132 $ hg st
132 $ hg st
133 A large1-test
133 A large1-test
134 $ hg forget large1-test
134 $ hg forget large1-test
135 $ hg st
135 $ hg st
136 ? large1-test
136 ? large1-test
137 $ hg remove large1-test
137 $ hg remove large1-test
138 not removing large1-test: file is untracked
138 not removing large1-test: file is untracked
139 [1]
139 [1]
140 $ hg forget large1-test
140 $ hg forget large1-test
141 not removing large1-test: file is already untracked
141 not removing large1-test: file is already untracked
142 [1]
142 [1]
143 $ rm large1-test
143 $ rm large1-test
144
144
145 Copy both largefiles and normal files (testing that status output is correct).
145 Copy both largefiles and normal files (testing that status output is correct).
146
146
147 $ hg cp sub/normal2 normal1
147 $ hg cp sub/normal2 normal1
148 $ hg cp sub/large2 large1
148 $ hg cp sub/large2 large1
149 $ hg commit -m "copy files"
149 $ hg commit -m "copy files"
150 Invoking status precommit hook
150 Invoking status precommit hook
151 A large1
151 A large1
152 A normal1
152 A normal1
153 $ cat normal1
153 $ cat normal1
154 normal22
154 normal22
155 $ cat large1
155 $ cat large1
156 large22
156 large22
157
157
158 Test moving largefiles and verify that normal files are also unaffected.
158 Test moving largefiles and verify that normal files are also unaffected.
159
159
160 $ hg mv normal1 normal3
160 $ hg mv normal1 normal3
161 $ hg mv large1 large3
161 $ hg mv large1 large3
162 $ hg mv sub/normal2 sub/normal4
162 $ hg mv sub/normal2 sub/normal4
163 $ hg mv sub/large2 sub/large4
163 $ hg mv sub/large2 sub/large4
164 $ hg commit -m "move files"
164 $ hg commit -m "move files"
165 Invoking status precommit hook
165 Invoking status precommit hook
166 A large3
166 A large3
167 A normal3
167 A normal3
168 A sub/large4
168 A sub/large4
169 A sub/normal4
169 A sub/normal4
170 R large1
170 R large1
171 R normal1
171 R normal1
172 R sub/large2
172 R sub/large2
173 R sub/normal2
173 R sub/normal2
174 $ cat normal3
174 $ cat normal3
175 normal22
175 normal22
176 $ cat large3
176 $ cat large3
177 large22
177 large22
178 $ cat sub/normal4
178 $ cat sub/normal4
179 normal22
179 normal22
180 $ cat sub/large4
180 $ cat sub/large4
181 large22
181 large22
182
182
183 Test copies and moves from a directory other than root (issue3516)
183 Test copies and moves from a directory other than root (issue3516)
184
184
185 $ cd ..
185 $ cd ..
186 $ hg init lf_cpmv
186 $ hg init lf_cpmv
187 $ cd lf_cpmv
187 $ cd lf_cpmv
188 $ mkdir dira
188 $ mkdir dira
189 $ mkdir dira/dirb
189 $ mkdir dira/dirb
190 $ touch dira/dirb/largefile
190 $ touch dira/dirb/largefile
191 $ hg add --large dira/dirb/largefile
191 $ hg add --large dira/dirb/largefile
192 $ hg commit -m "added"
192 $ hg commit -m "added"
193 Invoking status precommit hook
193 Invoking status precommit hook
194 A dira/dirb/largefile
194 A dira/dirb/largefile
195 $ cd dira
195 $ cd dira
196 $ hg cp dirb/largefile foo/largefile
196 $ hg cp dirb/largefile foo/largefile
197 $ hg ci -m "deep copy"
197 $ hg ci -m "deep copy"
198 Invoking status precommit hook
198 Invoking status precommit hook
199 A dira/foo/largefile
199 A dira/foo/largefile
200 $ find . | sort
200 $ find . | sort
201 .
201 .
202 ./dirb
202 ./dirb
203 ./dirb/largefile
203 ./dirb/largefile
204 ./foo
204 ./foo
205 ./foo/largefile
205 ./foo/largefile
206 $ hg mv foo/largefile baz/largefile
206 $ hg mv foo/largefile baz/largefile
207 $ hg ci -m "moved"
207 $ hg ci -m "moved"
208 Invoking status precommit hook
208 Invoking status precommit hook
209 A dira/baz/largefile
209 A dira/baz/largefile
210 R dira/foo/largefile
210 R dira/foo/largefile
211 $ find . | sort
211 $ find . | sort
212 .
212 .
213 ./baz
213 ./baz
214 ./baz/largefile
214 ./baz/largefile
215 ./dirb
215 ./dirb
216 ./dirb/largefile
216 ./dirb/largefile
217 ./foo
217 ./foo
218 $ cd ../../a
218 $ cd ../../a
219
219
220 #if serve
220 #if serve
221 Test display of largefiles in hgweb
221 Test display of largefiles in hgweb
222
222
223 $ hg serve -d -p $HGPORT --pid-file ../hg.pid
223 $ hg serve -d -p $HGPORT --pid-file ../hg.pid
224 $ cat ../hg.pid >> $DAEMON_PIDS
224 $ cat ../hg.pid >> $DAEMON_PIDS
225 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
225 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
226 200 Script output follows
226 200 Script output follows
227
227
228
228
229 drwxr-xr-x sub
229 drwxr-xr-x sub
230 -rw-r--r-- 41 large3
230 -rw-r--r-- 41 large3
231 -rw-r--r-- 9 normal3
231 -rw-r--r-- 9 normal3
232
232
233
233
234 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
234 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
235 200 Script output follows
235 200 Script output follows
236
236
237
237
238 -rw-r--r-- 41 large4
238 -rw-r--r-- 41 large4
239 -rw-r--r-- 9 normal4
239 -rw-r--r-- 9 normal4
240
240
241
241
242 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
242 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
243 #endif
243 #endif
244
244
245 Test archiving the various revisions. These hit corner cases known with
245 Test archiving the various revisions. These hit corner cases known with
246 archiving.
246 archiving.
247
247
248 $ hg archive -r 0 ../archive0
248 $ hg archive -r 0 ../archive0
249 $ hg archive -r 1 ../archive1
249 $ hg archive -r 1 ../archive1
250 $ hg archive -r 2 ../archive2
250 $ hg archive -r 2 ../archive2
251 $ hg archive -r 3 ../archive3
251 $ hg archive -r 3 ../archive3
252 $ hg archive -r 4 ../archive4
252 $ hg archive -r 4 ../archive4
253 $ cd ../archive0
253 $ cd ../archive0
254 $ cat normal1
254 $ cat normal1
255 normal1
255 normal1
256 $ cat large1
256 $ cat large1
257 large1
257 large1
258 $ cat sub/normal2
258 $ cat sub/normal2
259 normal2
259 normal2
260 $ cat sub/large2
260 $ cat sub/large2
261 large2
261 large2
262 $ cd ../archive1
262 $ cd ../archive1
263 $ cat normal1
263 $ cat normal1
264 normal11
264 normal11
265 $ cat large1
265 $ cat large1
266 large11
266 large11
267 $ cat sub/normal2
267 $ cat sub/normal2
268 normal22
268 normal22
269 $ cat sub/large2
269 $ cat sub/large2
270 large22
270 large22
271 $ cd ../archive2
271 $ cd ../archive2
272 $ ls
272 $ ls
273 sub
273 sub
274 $ cat sub/normal2
274 $ cat sub/normal2
275 normal22
275 normal22
276 $ cat sub/large2
276 $ cat sub/large2
277 large22
277 large22
278 $ cd ../archive3
278 $ cd ../archive3
279 $ cat normal1
279 $ cat normal1
280 normal22
280 normal22
281 $ cat large1
281 $ cat large1
282 large22
282 large22
283 $ cat sub/normal2
283 $ cat sub/normal2
284 normal22
284 normal22
285 $ cat sub/large2
285 $ cat sub/large2
286 large22
286 large22
287 $ cd ../archive4
287 $ cd ../archive4
288 $ cat normal3
288 $ cat normal3
289 normal22
289 normal22
290 $ cat large3
290 $ cat large3
291 large22
291 large22
292 $ cat sub/normal4
292 $ cat sub/normal4
293 normal22
293 normal22
294 $ cat sub/large4
294 $ cat sub/large4
295 large22
295 large22
296
296
297 Commit corner case: specify files to commit.
297 Commit corner case: specify files to commit.
298
298
299 $ cd ../a
299 $ cd ../a
300 $ echo normal3 > normal3
300 $ echo normal3 > normal3
301 $ echo large3 > large3
301 $ echo large3 > large3
302 $ echo normal4 > sub/normal4
302 $ echo normal4 > sub/normal4
303 $ echo large4 > sub/large4
303 $ echo large4 > sub/large4
304 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
304 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
305 Invoking status precommit hook
305 Invoking status precommit hook
306 M large3
306 M large3
307 M normal3
307 M normal3
308 M sub/large4
308 M sub/large4
309 M sub/normal4
309 M sub/normal4
310 $ cat normal3
310 $ cat normal3
311 normal3
311 normal3
312 $ cat large3
312 $ cat large3
313 large3
313 large3
314 $ cat sub/normal4
314 $ cat sub/normal4
315 normal4
315 normal4
316 $ cat sub/large4
316 $ cat sub/large4
317 large4
317 large4
318
318
319 One more commit corner case: commit from a subdirectory.
319 One more commit corner case: commit from a subdirectory.
320
320
321 $ cd ../a
321 $ cd ../a
322 $ echo normal33 > normal3
322 $ echo normal33 > normal3
323 $ echo large33 > large3
323 $ echo large33 > large3
324 $ echo normal44 > sub/normal4
324 $ echo normal44 > sub/normal4
325 $ echo large44 > sub/large4
325 $ echo large44 > sub/large4
326 $ cd sub
326 $ cd sub
327 $ hg commit -m "edit files yet again"
327 $ hg commit -m "edit files yet again"
328 Invoking status precommit hook
328 Invoking status precommit hook
329 M large3
329 M large3
330 M normal3
330 M normal3
331 M sub/large4
331 M sub/large4
332 M sub/normal4
332 M sub/normal4
333 $ cat ../normal3
333 $ cat ../normal3
334 normal33
334 normal33
335 $ cat ../large3
335 $ cat ../large3
336 large33
336 large33
337 $ cat normal4
337 $ cat normal4
338 normal44
338 normal44
339 $ cat large4
339 $ cat large4
340 large44
340 large44
341
341
342 Committing standins is not allowed.
342 Committing standins is not allowed.
343
343
344 $ cd ..
344 $ cd ..
345 $ echo large3 > large3
345 $ echo large3 > large3
346 $ hg commit .hglf/large3 -m "try to commit standin"
346 $ hg commit .hglf/large3 -m "try to commit standin"
347 abort: file ".hglf/large3" is a largefile standin
347 abort: file ".hglf/large3" is a largefile standin
348 (commit the largefile itself instead)
348 (commit the largefile itself instead)
349 [255]
349 [255]
350
350
351 Corner cases for adding largefiles.
351 Corner cases for adding largefiles.
352
352
353 $ echo large5 > large5
353 $ echo large5 > large5
354 $ hg add --large large5
354 $ hg add --large large5
355 $ hg add --large large5
355 $ hg add --large large5
356 large5 already a largefile
356 large5 already a largefile
357 $ mkdir sub2
357 $ mkdir sub2
358 $ echo large6 > sub2/large6
358 $ echo large6 > sub2/large6
359 $ echo large7 > sub2/large7
359 $ echo large7 > sub2/large7
360 $ hg add --large sub2
360 $ hg add --large sub2
361 adding sub2/large6 as a largefile (glob)
361 adding sub2/large6 as a largefile (glob)
362 adding sub2/large7 as a largefile (glob)
362 adding sub2/large7 as a largefile (glob)
363 $ hg st
363 $ hg st
364 M large3
364 M large3
365 A large5
365 A large5
366 A sub2/large6
366 A sub2/large6
367 A sub2/large7
367 A sub2/large7
368
368
369 Committing directories containing only largefiles.
369 Committing directories containing only largefiles.
370
370
371 $ mkdir -p z/y/x/m
371 $ mkdir -p z/y/x/m
372 $ touch z/y/x/m/large1
372 $ touch z/y/x/m/large1
373 $ touch z/y/x/large2
373 $ touch z/y/x/large2
374 $ hg add --large z/y/x/m/large1 z/y/x/large2
374 $ hg add --large z/y/x/m/large1 z/y/x/large2
375 $ hg commit -m "Subdir with directory only containing largefiles" z
375 $ hg commit -m "Subdir with directory only containing largefiles" z
376 Invoking status precommit hook
376 Invoking status precommit hook
377 M large3
377 M large3
378 A large5
378 A large5
379 A sub2/large6
379 A sub2/large6
380 A sub2/large7
380 A sub2/large7
381 A z/y/x/large2
381 A z/y/x/large2
382 A z/y/x/m/large1
382 A z/y/x/m/large1
383 $ hg rollback --quiet
383 $ hg rollback --quiet
384 $ touch z/y/x/m/normal
384 $ touch z/y/x/m/normal
385 $ hg add z/y/x/m/normal
385 $ hg add z/y/x/m/normal
386 $ hg commit -m "Subdir with mixed contents" z
386 $ hg commit -m "Subdir with mixed contents" z
387 Invoking status precommit hook
387 Invoking status precommit hook
388 M large3
388 M large3
389 A large5
389 A large5
390 A sub2/large6
390 A sub2/large6
391 A sub2/large7
391 A sub2/large7
392 A z/y/x/large2
392 A z/y/x/large2
393 A z/y/x/m/large1
393 A z/y/x/m/large1
394 A z/y/x/m/normal
394 A z/y/x/m/normal
395 $ hg st
395 $ hg st
396 M large3
396 M large3
397 A large5
397 A large5
398 A sub2/large6
398 A sub2/large6
399 A sub2/large7
399 A sub2/large7
400 $ hg rollback --quiet
400 $ hg rollback --quiet
401 $ hg revert z/y/x/large2 z/y/x/m/large1
401 $ hg revert z/y/x/large2 z/y/x/m/large1
402 $ rm z/y/x/large2 z/y/x/m/large1
402 $ rm z/y/x/large2 z/y/x/m/large1
403 $ hg commit -m "Subdir with normal contents" z
403 $ hg commit -m "Subdir with normal contents" z
404 Invoking status precommit hook
404 Invoking status precommit hook
405 M large3
405 M large3
406 A large5
406 A large5
407 A sub2/large6
407 A sub2/large6
408 A sub2/large7
408 A sub2/large7
409 A z/y/x/m/normal
409 A z/y/x/m/normal
410 $ hg st
410 $ hg st
411 M large3
411 M large3
412 A large5
412 A large5
413 A sub2/large6
413 A sub2/large6
414 A sub2/large7
414 A sub2/large7
415 $ hg rollback --quiet
415 $ hg rollback --quiet
416 $ hg revert --quiet z
416 $ hg revert --quiet z
417 $ hg commit -m "Empty subdir" z
417 $ hg commit -m "Empty subdir" z
418 abort: z: no match under directory!
418 abort: z: no match under directory!
419 [255]
419 [255]
420 $ rm -rf z
420 $ rm -rf z
421 $ hg ci -m "standin" .hglf
421 $ hg ci -m "standin" .hglf
422 abort: file ".hglf" is a largefile standin
422 abort: file ".hglf" is a largefile standin
423 (commit the largefile itself instead)
423 (commit the largefile itself instead)
424 [255]
424 [255]
425
425
426 Test "hg status" with combination of 'file pattern' and 'directory
426 Test "hg status" with combination of 'file pattern' and 'directory
427 pattern' for largefiles:
427 pattern' for largefiles:
428
428
429 $ hg status sub2/large6 sub2
429 $ hg status sub2/large6 sub2
430 A sub2/large6
430 A sub2/large6
431 A sub2/large7
431 A sub2/large7
432
432
433 Config settings (pattern **.dat, minsize 2 MB) are respected.
433 Config settings (pattern **.dat, minsize 2 MB) are respected.
434
434
435 $ echo testdata > test.dat
435 $ echo testdata > test.dat
436 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
436 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
437 $ hg add
437 $ hg add
438 adding reallylarge as a largefile
438 adding reallylarge as a largefile
439 adding test.dat as a largefile
439 adding test.dat as a largefile
440
440
441 Test that minsize and --lfsize handle float values;
441 Test that minsize and --lfsize handle float values;
442 also tests that --lfsize overrides largefiles.minsize.
442 also tests that --lfsize overrides largefiles.minsize.
443 (0.250 MB = 256 kB = 262144 B)
443 (0.250 MB = 256 kB = 262144 B)
444
444
445 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
445 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
446 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
446 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
447 $ hg --config largefiles.minsize=.25 add
447 $ hg --config largefiles.minsize=.25 add
448 adding ratherlarge as a largefile
448 adding ratherlarge as a largefile
449 adding medium
449 adding medium
450 $ hg forget medium
450 $ hg forget medium
451 $ hg --config largefiles.minsize=.25 add --lfsize=.125
451 $ hg --config largefiles.minsize=.25 add --lfsize=.125
452 adding medium as a largefile
452 adding medium as a largefile
453 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
453 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
454 $ hg --config largefiles.minsize=.25 add --lfsize=.125
454 $ hg --config largefiles.minsize=.25 add --lfsize=.125
455 adding notlarge
455 adding notlarge
456 $ hg forget notlarge
456 $ hg forget notlarge
457
457
458 Test forget on largefiles.
458 Test forget on largefiles.
459
459
460 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
460 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
461 $ hg commit -m "add/edit more largefiles"
461 $ hg commit -m "add/edit more largefiles"
462 Invoking status precommit hook
462 Invoking status precommit hook
463 A sub2/large6
463 A sub2/large6
464 A sub2/large7
464 A sub2/large7
465 R large3
465 R large3
466 ? large5
466 ? large5
467 ? medium
467 ? medium
468 ? notlarge
468 ? notlarge
469 ? ratherlarge
469 ? ratherlarge
470 ? reallylarge
470 ? reallylarge
471 ? test.dat
471 ? test.dat
472 $ hg st
472 $ hg st
473 ? large3
473 ? large3
474 ? large5
474 ? large5
475 ? medium
475 ? medium
476 ? notlarge
476 ? notlarge
477 ? ratherlarge
477 ? ratherlarge
478 ? reallylarge
478 ? reallylarge
479 ? test.dat
479 ? test.dat
480
480
481 Purge with largefiles: verify that largefiles are still in the working
481 Purge with largefiles: verify that largefiles are still in the working
482 dir after a purge.
482 dir after a purge.
483
483
484 $ hg purge --all
484 $ hg purge --all
485 $ cat sub/large4
485 $ cat sub/large4
486 large44
486 large44
487 $ cat sub2/large6
487 $ cat sub2/large6
488 large6
488 large6
489 $ cat sub2/large7
489 $ cat sub2/large7
490 large7
490 large7
491
491
492 Test addremove: verify that files that should be added as largfiles are added as
492 Test addremove: verify that files that should be added as largfiles are added as
493 such and that already-existing largfiles are not added as normal files by
493 such and that already-existing largfiles are not added as normal files by
494 accident.
494 accident.
495
495
496 $ rm normal3
496 $ rm normal3
497 $ rm sub/large4
497 $ rm sub/large4
498 $ echo "testing addremove with patterns" > testaddremove.dat
498 $ echo "testing addremove with patterns" > testaddremove.dat
499 $ echo "normaladdremove" > normaladdremove
499 $ echo "normaladdremove" > normaladdremove
500 $ hg addremove
500 $ hg addremove
501 removing sub/large4
501 removing sub/large4
502 adding testaddremove.dat as a largefile
502 adding testaddremove.dat as a largefile
503 removing normal3
503 removing normal3
504 adding normaladdremove
504 adding normaladdremove
505
505
506 Test addremove with -R
506 Test addremove with -R
507
507
508 $ hg up -C
508 $ hg up -C
509 getting changed largefiles
509 getting changed largefiles
510 1 largefiles updated, 0 removed
510 1 largefiles updated, 0 removed
511 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
511 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
512 $ rm normal3
512 $ rm normal3
513 $ rm sub/large4
513 $ rm sub/large4
514 $ echo "testing addremove with patterns" > testaddremove.dat
514 $ echo "testing addremove with patterns" > testaddremove.dat
515 $ echo "normaladdremove" > normaladdremove
515 $ echo "normaladdremove" > normaladdremove
516 $ cd ..
516 $ cd ..
517 $ hg -R a addremove
517 $ hg -R a addremove
518 removing sub/large4
518 removing sub/large4
519 adding a/testaddremove.dat as a largefile (glob)
519 adding a/testaddremove.dat as a largefile (glob)
520 removing normal3
520 removing normal3
521 adding normaladdremove
521 adding normaladdremove
522 $ cd a
522 $ cd a
523
523
524 Test 3364
524 Test 3364
525 $ hg clone . ../addrm
525 $ hg clone . ../addrm
526 updating to branch default
526 updating to branch default
527 getting changed largefiles
527 getting changed largefiles
528 3 largefiles updated, 0 removed
528 3 largefiles updated, 0 removed
529 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
529 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
530 $ cd ../addrm
530 $ cd ../addrm
531 $ cat >> .hg/hgrc <<EOF
531 $ cat >> .hg/hgrc <<EOF
532 > [hooks]
532 > [hooks]
533 > post-commit.stat=sh -c "echo \\"Invoking status postcommit hook\\"; hg status -A"
533 > post-commit.stat=sh -c "echo \\"Invoking status postcommit hook\\"; hg status -A"
534 > EOF
534 > EOF
535 $ touch foo
535 $ touch foo
536 $ hg add --large foo
536 $ hg add --large foo
537 $ hg ci -m "add foo"
537 $ hg ci -m "add foo"
538 Invoking status precommit hook
538 Invoking status precommit hook
539 A foo
539 A foo
540 Invoking status postcommit hook
540 Invoking status postcommit hook
541 C foo
541 C foo
542 C normal3
542 C normal3
543 C sub/large4
543 C sub/large4
544 C sub/normal4
544 C sub/normal4
545 C sub2/large6
545 C sub2/large6
546 C sub2/large7
546 C sub2/large7
547 $ rm foo
547 $ rm foo
548 $ hg st
548 $ hg st
549 ! foo
549 ! foo
550 hmm.. no precommit invoked, but there is a postcommit??
550 hmm.. no precommit invoked, but there is a postcommit??
551 $ hg ci -m "will not checkin"
551 $ hg ci -m "will not checkin"
552 nothing changed
552 nothing changed
553 Invoking status postcommit hook
553 Invoking status postcommit hook
554 ! foo
554 ! foo
555 C normal3
555 C normal3
556 C sub/large4
556 C sub/large4
557 C sub/normal4
557 C sub/normal4
558 C sub2/large6
558 C sub2/large6
559 C sub2/large7
559 C sub2/large7
560 [1]
560 [1]
561 $ hg addremove
561 $ hg addremove
562 removing foo
562 removing foo
563 $ hg st
563 $ hg st
564 R foo
564 R foo
565 $ hg ci -m "used to say nothing changed"
565 $ hg ci -m "used to say nothing changed"
566 Invoking status precommit hook
566 Invoking status precommit hook
567 R foo
567 R foo
568 Invoking status postcommit hook
568 Invoking status postcommit hook
569 C normal3
569 C normal3
570 C sub/large4
570 C sub/large4
571 C sub/normal4
571 C sub/normal4
572 C sub2/large6
572 C sub2/large6
573 C sub2/large7
573 C sub2/large7
574 $ hg st
574 $ hg st
575
575
576 Test 3507 (both normal files and largefiles were a problem)
576 Test 3507 (both normal files and largefiles were a problem)
577
577
578 $ touch normal
578 $ touch normal
579 $ touch large
579 $ touch large
580 $ hg add normal
580 $ hg add normal
581 $ hg add --large large
581 $ hg add --large large
582 $ hg ci -m "added"
582 $ hg ci -m "added"
583 Invoking status precommit hook
583 Invoking status precommit hook
584 A large
584 A large
585 A normal
585 A normal
586 Invoking status postcommit hook
586 Invoking status postcommit hook
587 C large
587 C large
588 C normal
588 C normal
589 C normal3
589 C normal3
590 C sub/large4
590 C sub/large4
591 C sub/normal4
591 C sub/normal4
592 C sub2/large6
592 C sub2/large6
593 C sub2/large7
593 C sub2/large7
594 $ hg remove normal
594 $ hg remove normal
595 $ hg addremove --traceback
595 $ hg addremove --traceback
596 $ hg ci -m "addremoved normal"
596 $ hg ci -m "addremoved normal"
597 Invoking status precommit hook
597 Invoking status precommit hook
598 R normal
598 R normal
599 Invoking status postcommit hook
599 Invoking status postcommit hook
600 C large
600 C large
601 C normal3
601 C normal3
602 C sub/large4
602 C sub/large4
603 C sub/normal4
603 C sub/normal4
604 C sub2/large6
604 C sub2/large6
605 C sub2/large7
605 C sub2/large7
606 $ hg up -C '.^'
606 $ hg up -C '.^'
607 getting changed largefiles
607 getting changed largefiles
608 0 largefiles updated, 0 removed
608 0 largefiles updated, 0 removed
609 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
609 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
610 $ hg remove large
610 $ hg remove large
611 $ hg addremove --traceback
611 $ hg addremove --traceback
612 $ hg ci -m "removed large"
612 $ hg ci -m "removed large"
613 Invoking status precommit hook
613 Invoking status precommit hook
614 R large
614 R large
615 created new head
615 created new head
616 Invoking status postcommit hook
616 Invoking status postcommit hook
617 C normal
617 C normal
618 C normal3
618 C normal3
619 C sub/large4
619 C sub/large4
620 C sub/normal4
620 C sub/normal4
621 C sub2/large6
621 C sub2/large6
622 C sub2/large7
622 C sub2/large7
623
623
624 Test commit -A (issue 3542)
624 Test commit -A (issue 3542)
625 $ echo large8 > large8
625 $ echo large8 > large8
626 $ hg add --large large8
626 $ hg add --large large8
627 $ hg ci -Am 'this used to add large8 as normal and commit both'
627 $ hg ci -Am 'this used to add large8 as normal and commit both'
628 Invoking status precommit hook
628 Invoking status precommit hook
629 A large8
629 A large8
630 Invoking status postcommit hook
630 Invoking status postcommit hook
631 C large8
631 C large8
632 C normal
632 C normal
633 C normal3
633 C normal3
634 C sub/large4
634 C sub/large4
635 C sub/normal4
635 C sub/normal4
636 C sub2/large6
636 C sub2/large6
637 C sub2/large7
637 C sub2/large7
638 $ rm large8
638 $ rm large8
639 $ hg ci -Am 'this used to not notice the rm'
639 $ hg ci -Am 'this used to not notice the rm'
640 removing large8
640 removing large8
641 Invoking status precommit hook
641 Invoking status precommit hook
642 R large8
642 R large8
643 Invoking status postcommit hook
643 Invoking status postcommit hook
644 C normal
644 C normal
645 C normal3
645 C normal3
646 C sub/large4
646 C sub/large4
647 C sub/normal4
647 C sub/normal4
648 C sub2/large6
648 C sub2/large6
649 C sub2/large7
649 C sub2/large7
650
650
651 Test that a standin can't be added as a large file
651 Test that a standin can't be added as a large file
652
652
653 $ touch large
653 $ touch large
654 $ hg add --large large
654 $ hg add --large large
655 $ hg ci -m "add"
655 $ hg ci -m "add"
656 Invoking status precommit hook
656 Invoking status precommit hook
657 A large
657 A large
658 Invoking status postcommit hook
658 Invoking status postcommit hook
659 C large
659 C large
660 C normal
660 C normal
661 C normal3
661 C normal3
662 C sub/large4
662 C sub/large4
663 C sub/normal4
663 C sub/normal4
664 C sub2/large6
664 C sub2/large6
665 C sub2/large7
665 C sub2/large7
666 $ hg remove large
666 $ hg remove large
667 $ touch large
667 $ touch large
668 $ hg addremove --config largefiles.patterns=**large --traceback
668 $ hg addremove --config largefiles.patterns=**large --traceback
669 adding large as a largefile
669 adding large as a largefile
670
670
671 Test that outgoing --large works (with revsets too)
671 Test that outgoing --large works (with revsets too)
672 $ hg outgoing --rev '.^' --large
672 $ hg outgoing --rev '.^' --large
673 comparing with $TESTTMP/a (glob)
673 comparing with $TESTTMP/a (glob)
674 searching for changes
674 searching for changes
675 changeset: 8:c02fd3b77ec4
675 changeset: 8:c02fd3b77ec4
676 user: test
676 user: test
677 date: Thu Jan 01 00:00:00 1970 +0000
677 date: Thu Jan 01 00:00:00 1970 +0000
678 summary: add foo
678 summary: add foo
679
679
680 changeset: 9:289dd08c9bbb
680 changeset: 9:289dd08c9bbb
681 user: test
681 user: test
682 date: Thu Jan 01 00:00:00 1970 +0000
682 date: Thu Jan 01 00:00:00 1970 +0000
683 summary: used to say nothing changed
683 summary: used to say nothing changed
684
684
685 changeset: 10:34f23ac6ac12
685 changeset: 10:34f23ac6ac12
686 user: test
686 user: test
687 date: Thu Jan 01 00:00:00 1970 +0000
687 date: Thu Jan 01 00:00:00 1970 +0000
688 summary: added
688 summary: added
689
689
690 changeset: 12:710c1b2f523c
690 changeset: 12:710c1b2f523c
691 parent: 10:34f23ac6ac12
691 parent: 10:34f23ac6ac12
692 user: test
692 user: test
693 date: Thu Jan 01 00:00:00 1970 +0000
693 date: Thu Jan 01 00:00:00 1970 +0000
694 summary: removed large
694 summary: removed large
695
695
696 changeset: 13:0a3e75774479
696 changeset: 13:0a3e75774479
697 user: test
697 user: test
698 date: Thu Jan 01 00:00:00 1970 +0000
698 date: Thu Jan 01 00:00:00 1970 +0000
699 summary: this used to add large8 as normal and commit both
699 summary: this used to add large8 as normal and commit both
700
700
701 changeset: 14:84f3d378175c
701 changeset: 14:84f3d378175c
702 user: test
702 user: test
703 date: Thu Jan 01 00:00:00 1970 +0000
703 date: Thu Jan 01 00:00:00 1970 +0000
704 summary: this used to not notice the rm
704 summary: this used to not notice the rm
705
705
706 searching for changes
706 searching for changes
707 largefiles to upload:
707 largefiles to upload:
708 foo
708 foo
709 large
709 large
710 large8
710 large8
711
711
712 $ cd ../a
712 $ cd ../a
713
713
714 Clone a largefiles repo.
714 Clone a largefiles repo.
715
715
716 $ hg clone . ../b
716 $ hg clone . ../b
717 updating to branch default
717 updating to branch default
718 getting changed largefiles
718 getting changed largefiles
719 3 largefiles updated, 0 removed
719 3 largefiles updated, 0 removed
720 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
720 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
721 $ cd ../b
721 $ cd ../b
722 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
722 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
723 7:daea875e9014 add/edit more largefiles
723 7:daea875e9014 add/edit more largefiles
724 6:4355d653f84f edit files yet again
724 6:4355d653f84f edit files yet again
725 5:9d5af5072dbd edit files again
725 5:9d5af5072dbd edit files again
726 4:74c02385b94c move files
726 4:74c02385b94c move files
727 3:9e8fbc4bce62 copy files
727 3:9e8fbc4bce62 copy files
728 2:51a0ae4d5864 remove files
728 2:51a0ae4d5864 remove files
729 1:ce8896473775 edit files
729 1:ce8896473775 edit files
730 0:30d30fe6a5be add files
730 0:30d30fe6a5be add files
731 $ cat normal3
731 $ cat normal3
732 normal33
732 normal33
733 $ cat sub/normal4
733 $ cat sub/normal4
734 normal44
734 normal44
735 $ cat sub/large4
735 $ cat sub/large4
736 large44
736 large44
737 $ cat sub2/large6
737 $ cat sub2/large6
738 large6
738 large6
739 $ cat sub2/large7
739 $ cat sub2/large7
740 large7
740 large7
741 $ cd ..
741 $ cd ..
742 $ hg clone a -r 3 c
742 $ hg clone a -r 3 c
743 adding changesets
743 adding changesets
744 adding manifests
744 adding manifests
745 adding file changes
745 adding file changes
746 added 4 changesets with 10 changes to 4 files
746 added 4 changesets with 10 changes to 4 files
747 updating to branch default
747 updating to branch default
748 getting changed largefiles
748 getting changed largefiles
749 2 largefiles updated, 0 removed
749 2 largefiles updated, 0 removed
750 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
750 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
751 $ cd c
751 $ cd c
752 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
752 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
753 3:9e8fbc4bce62 copy files
753 3:9e8fbc4bce62 copy files
754 2:51a0ae4d5864 remove files
754 2:51a0ae4d5864 remove files
755 1:ce8896473775 edit files
755 1:ce8896473775 edit files
756 0:30d30fe6a5be add files
756 0:30d30fe6a5be add files
757 $ cat normal1
757 $ cat normal1
758 normal22
758 normal22
759 $ cat large1
759 $ cat large1
760 large22
760 large22
761 $ cat sub/normal2
761 $ cat sub/normal2
762 normal22
762 normal22
763 $ cat sub/large2
763 $ cat sub/large2
764 large22
764 large22
765
765
766 Old revisions of a clone have correct largefiles content (this also
766 Old revisions of a clone have correct largefiles content (this also
767 tests update).
767 tests update).
768
768
769 $ hg update -r 1
769 $ hg update -r 1
770 getting changed largefiles
770 getting changed largefiles
771 1 largefiles updated, 0 removed
771 1 largefiles updated, 0 removed
772 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
772 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
773 $ cat large1
773 $ cat large1
774 large11
774 large11
775 $ cat sub/large2
775 $ cat sub/large2
776 large22
776 large22
777 $ cd ..
777 $ cd ..
778
778
779 Test cloning with --all-largefiles flag
779 Test cloning with --all-largefiles flag
780
780
781 $ rm "${USERCACHE}"/*
781 $ rm "${USERCACHE}"/*
782 $ hg clone --all-largefiles a a-backup
782 $ hg clone --all-largefiles a a-backup
783 updating to branch default
783 updating to branch default
784 getting changed largefiles
784 getting changed largefiles
785 3 largefiles updated, 0 removed
785 3 largefiles updated, 0 removed
786 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
786 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
787 8 additional largefiles cached
787 8 additional largefiles cached
788
788
789 $ rm "${USERCACHE}"/*
789 $ rm "${USERCACHE}"/*
790 $ hg clone --all-largefiles -u 0 a a-clone0
790 $ hg clone --all-largefiles -u 0 a a-clone0
791 updating to branch default
791 updating to branch default
792 getting changed largefiles
792 getting changed largefiles
793 2 largefiles updated, 0 removed
793 2 largefiles updated, 0 removed
794 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
794 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
795 9 additional largefiles cached
795 9 additional largefiles cached
796 $ hg -R a-clone0 sum
796 $ hg -R a-clone0 sum
797 parent: 0:30d30fe6a5be
797 parent: 0:30d30fe6a5be
798 add files
798 add files
799 branch: default
799 branch: default
800 commit: (clean)
800 commit: (clean)
801 update: 7 new changesets (update)
801 update: 7 new changesets (update)
802
802
803 $ rm "${USERCACHE}"/*
803 $ rm "${USERCACHE}"/*
804 $ hg clone --all-largefiles -u 1 a a-clone1
804 $ hg clone --all-largefiles -u 1 a a-clone1
805 updating to branch default
805 updating to branch default
806 getting changed largefiles
806 getting changed largefiles
807 2 largefiles updated, 0 removed
807 2 largefiles updated, 0 removed
808 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
808 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
809 8 additional largefiles cached
809 8 additional largefiles cached
810 $ hg -R a-clone1 verify --large --lfa --lfc
810 $ hg -R a-clone1 verify --large --lfa --lfc
811 checking changesets
811 checking changesets
812 checking manifests
812 checking manifests
813 crosschecking files in changesets and manifests
813 crosschecking files in changesets and manifests
814 checking files
814 checking files
815 10 files, 8 changesets, 24 total revisions
815 10 files, 8 changesets, 24 total revisions
816 searching 8 changesets for largefiles
816 searching 8 changesets for largefiles
817 verified contents of 13 revisions of 6 largefiles
817 verified contents of 13 revisions of 6 largefiles
818 $ hg -R a-clone1 sum
818 $ hg -R a-clone1 sum
819 parent: 1:ce8896473775
819 parent: 1:ce8896473775
820 edit files
820 edit files
821 branch: default
821 branch: default
822 commit: (clean)
822 commit: (clean)
823 update: 6 new changesets (update)
823 update: 6 new changesets (update)
824
824
825 $ rm "${USERCACHE}"/*
825 $ rm "${USERCACHE}"/*
826 $ hg clone --all-largefiles -U a a-clone-u
826 $ hg clone --all-largefiles -U a a-clone-u
827 11 additional largefiles cached
827 11 additional largefiles cached
828 $ hg -R a-clone-u sum
828 $ hg -R a-clone-u sum
829 parent: -1:000000000000 (no revision checked out)
829 parent: -1:000000000000 (no revision checked out)
830 branch: default
830 branch: default
831 commit: (clean)
831 commit: (clean)
832 update: 8 new changesets (update)
832 update: 8 new changesets (update)
833
833
834 Show computed destination directory:
834 Show computed destination directory:
835
835
836 $ mkdir xyz
836 $ mkdir xyz
837 $ cd xyz
837 $ cd xyz
838 $ hg clone ../a
838 $ hg clone ../a
839 destination directory: a
839 destination directory: a
840 updating to branch default
840 updating to branch default
841 getting changed largefiles
841 getting changed largefiles
842 3 largefiles updated, 0 removed
842 3 largefiles updated, 0 removed
843 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
843 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
844 $ cd ..
844 $ cd ..
845
845
846 Clone URL without path:
846 Clone URL without path:
847
847
848 $ hg clone file://
848 $ hg clone file://
849 abort: repository / not found!
849 abort: repository / not found!
850 [255]
850 [255]
851
851
852 Ensure base clone command argument validation
852 Ensure base clone command argument validation
853
853
854 $ hg clone -U -u 0 a a-clone-failure
854 $ hg clone -U -u 0 a a-clone-failure
855 abort: cannot specify both --noupdate and --updaterev
855 abort: cannot specify both --noupdate and --updaterev
856 [255]
856 [255]
857
857
858 $ hg clone --all-largefiles a ssh://localhost/a
858 $ hg clone --all-largefiles a ssh://localhost/a
859 abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
859 abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
860 [255]
860 [255]
861
861
862 Test pulling with --all-largefiles flag. Also test that the largefiles are
862 Test pulling with --all-largefiles flag. Also test that the largefiles are
863 downloaded from 'default' instead of 'default-push' when no source is specified
863 downloaded from 'default' instead of 'default-push' when no source is specified
864 (issue3584)
864 (issue3584)
865
865
866 $ rm -Rf a-backup
866 $ rm -Rf a-backup
867 $ hg clone -r 1 a a-backup
867 $ hg clone -r 1 a a-backup
868 adding changesets
868 adding changesets
869 adding manifests
869 adding manifests
870 adding file changes
870 adding file changes
871 added 2 changesets with 8 changes to 4 files
871 added 2 changesets with 8 changes to 4 files
872 updating to branch default
872 updating to branch default
873 getting changed largefiles
873 getting changed largefiles
874 2 largefiles updated, 0 removed
874 2 largefiles updated, 0 removed
875 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
875 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
876 $ rm "${USERCACHE}"/*
876 $ rm "${USERCACHE}"/*
877 $ cd a-backup
877 $ cd a-backup
878 $ hg pull --all-largefiles --config paths.default-push=bogus/path
878 $ hg pull --all-largefiles --config paths.default-push=bogus/path
879 pulling from $TESTTMP/a (glob)
879 pulling from $TESTTMP/a (glob)
880 searching for changes
880 searching for changes
881 adding changesets
881 adding changesets
882 adding manifests
882 adding manifests
883 adding file changes
883 adding file changes
884 added 6 changesets with 16 changes to 8 files
884 added 6 changesets with 16 changes to 8 files
885 (run 'hg update' to get a working copy)
885 (run 'hg update' to get a working copy)
886 6 largefiles cached
886 6 largefiles cached
887
887
888 redo pull with --lfrev and check it pulls largefiles for the right revs
888 redo pull with --lfrev and check it pulls largefiles for the right revs
889
889
890 $ hg rollback
890 $ hg rollback
891 repository tip rolled back to revision 1 (undo pull)
891 repository tip rolled back to revision 1 (undo pull)
892 $ hg pull -v --lfrev 'heads(pulled())+min(pulled())'
892 $ hg pull -v --lfrev 'heads(pulled())+min(pulled())'
893 pulling from $TESTTMP/a (glob)
893 pulling from $TESTTMP/a (glob)
894 searching for changes
894 searching for changes
895 all local heads known remotely
895 all local heads known remotely
896 6 changesets found
896 6 changesets found
897 adding changesets
897 adding changesets
898 adding manifests
898 adding manifests
899 adding file changes
899 adding file changes
900 added 6 changesets with 16 changes to 8 files
900 added 6 changesets with 16 changes to 8 files
901 calling hook changegroup.lfiles: <function checkrequireslfiles at *> (glob)
901 calling hook changegroup.lfiles: <function checkrequireslfiles at *> (glob)
902 (run 'hg update' to get a working copy)
902 (run 'hg update' to get a working copy)
903 pulling largefiles for revision 7
903 pulling largefiles for revision 7
904 found 971fb41e78fea4f8e0ba5244784239371cb00591 in store
904 found 971fb41e78fea4f8e0ba5244784239371cb00591 in store
905 found 0d6d75887db61b2c7e6c74b5dd8fc6ad50c0cc30 in store
905 found 0d6d75887db61b2c7e6c74b5dd8fc6ad50c0cc30 in store
906 found bb3151689acb10f0c3125c560d5e63df914bc1af in store
906 found bb3151689acb10f0c3125c560d5e63df914bc1af in store
907 pulling largefiles for revision 2
907 pulling largefiles for revision 2
908 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
908 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
909 0 largefiles cached
909 0 largefiles cached
910
910
911 lfpull
911 lfpull
912
912
913 $ hg lfpull -r : --config largefiles.usercache=usercache-lfpull
913 $ hg lfpull -r : --config largefiles.usercache=usercache-lfpull
914 2 largefiles cached
914 2 largefiles cached
915 $ hg lfpull -v -r 4+2 --config largefiles.usercache=usercache-lfpull
915 $ hg lfpull -v -r 4+2 --config largefiles.usercache=usercache-lfpull
916 pulling largefiles for revision 4
916 pulling largefiles for revision 4
917 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
917 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
918 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
918 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
919 pulling largefiles for revision 2
919 pulling largefiles for revision 2
920 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
920 found eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 in store
921 0 largefiles cached
921 0 largefiles cached
922
922
923 $ ls usercache-lfpull/* | sort
923 $ ls usercache-lfpull/* | sort
924 usercache-lfpull/1deebade43c8c498a3c8daddac0244dc55d1331d
924 usercache-lfpull/1deebade43c8c498a3c8daddac0244dc55d1331d
925 usercache-lfpull/4669e532d5b2c093a78eca010077e708a071bb64
925 usercache-lfpull/4669e532d5b2c093a78eca010077e708a071bb64
926
926
927 $ cd ..
927 $ cd ..
928
928
929 Rebasing between two repositories does not revert largefiles to old
929 Rebasing between two repositories does not revert largefiles to old
930 revisions (this was a very bad bug that took a lot of work to fix).
930 revisions (this was a very bad bug that took a lot of work to fix).
931
931
932 $ hg clone a d
932 $ hg clone a d
933 updating to branch default
933 updating to branch default
934 getting changed largefiles
934 getting changed largefiles
935 3 largefiles updated, 0 removed
935 3 largefiles updated, 0 removed
936 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
936 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
937 $ cd b
937 $ cd b
938 $ echo large4-modified > sub/large4
938 $ echo large4-modified > sub/large4
939 $ echo normal3-modified > normal3
939 $ echo normal3-modified > normal3
940 $ hg commit -m "modify normal file and largefile in repo b"
940 $ hg commit -m "modify normal file and largefile in repo b"
941 Invoking status precommit hook
941 Invoking status precommit hook
942 M normal3
942 M normal3
943 M sub/large4
943 M sub/large4
944 $ cd ../d
944 $ cd ../d
945 $ echo large6-modified > sub2/large6
945 $ echo large6-modified > sub2/large6
946 $ echo normal4-modified > sub/normal4
946 $ echo normal4-modified > sub/normal4
947 $ hg commit -m "modify normal file largefile in repo d"
947 $ hg commit -m "modify normal file largefile in repo d"
948 Invoking status precommit hook
948 Invoking status precommit hook
949 M sub/normal4
949 M sub/normal4
950 M sub2/large6
950 M sub2/large6
951 $ cd ..
951 $ cd ..
952 $ hg clone d e
952 $ hg clone d e
953 updating to branch default
953 updating to branch default
954 getting changed largefiles
954 getting changed largefiles
955 3 largefiles updated, 0 removed
955 3 largefiles updated, 0 removed
956 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
956 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
957 $ cd d
957 $ cd d
958
958
959 More rebase testing, but also test that the largefiles are downloaded from
959 More rebase testing, but also test that the largefiles are downloaded from
960 'default-push' when no source is specified (issue3584). (The largefile from the
960 'default-push' when no source is specified (issue3584). (The largefile from the
961 pulled revision is however not downloaded but found in the local cache.)
961 pulled revision is however not downloaded but found in the local cache.)
962 Largefiles are fetched for the new pulled revision, not for existing revisions,
962 Largefiles are fetched for the new pulled revision, not for existing revisions,
963 rebased or not.
963 rebased or not.
964
964
965 $ [ ! -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ]
965 $ [ ! -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ]
966 $ hg pull --rebase --all-largefiles --config paths.default-push=bogus/path --config paths.default=../b
966 $ hg pull --rebase --all-largefiles --config paths.default-push=bogus/path --config paths.default=../b
967 pulling from $TESTTMP/b (glob)
967 pulling from $TESTTMP/b (glob)
968 searching for changes
968 searching for changes
969 adding changesets
969 adding changesets
970 adding manifests
970 adding manifests
971 adding file changes
971 adding file changes
972 added 1 changesets with 2 changes to 2 files (+1 heads)
972 added 1 changesets with 2 changes to 2 files (+1 heads)
973 Invoking status precommit hook
973 Invoking status precommit hook
974 M sub/normal4
974 M sub/normal4
975 M sub2/large6
975 M sub2/large6
976 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
976 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
977 0 largefiles cached
977 0 largefiles cached
978 nothing to rebase
978 nothing to rebase
979 $ [ -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ]
979 $ [ -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ]
980 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
980 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
981 9:598410d3eb9a modify normal file largefile in repo d
981 9:598410d3eb9a modify normal file largefile in repo d
982 8:a381d2c8c80e modify normal file and largefile in repo b
982 8:a381d2c8c80e modify normal file and largefile in repo b
983 7:daea875e9014 add/edit more largefiles
983 7:daea875e9014 add/edit more largefiles
984 6:4355d653f84f edit files yet again
984 6:4355d653f84f edit files yet again
985 5:9d5af5072dbd edit files again
985 5:9d5af5072dbd edit files again
986 4:74c02385b94c move files
986 4:74c02385b94c move files
987 3:9e8fbc4bce62 copy files
987 3:9e8fbc4bce62 copy files
988 2:51a0ae4d5864 remove files
988 2:51a0ae4d5864 remove files
989 1:ce8896473775 edit files
989 1:ce8896473775 edit files
990 0:30d30fe6a5be add files
990 0:30d30fe6a5be add files
991 $ cat normal3
991 $ cat normal3
992 normal3-modified
992 normal3-modified
993 $ cat sub/normal4
993 $ cat sub/normal4
994 normal4-modified
994 normal4-modified
995 $ cat sub/large4
995 $ cat sub/large4
996 large4-modified
996 large4-modified
997 $ cat sub2/large6
997 $ cat sub2/large6
998 large6-modified
998 large6-modified
999 $ cat sub2/large7
999 $ cat sub2/large7
1000 large7
1000 large7
1001 $ cd ../e
1001 $ cd ../e
1002 $ hg pull ../b
1002 $ hg pull ../b
1003 pulling from ../b
1003 pulling from ../b
1004 searching for changes
1004 searching for changes
1005 adding changesets
1005 adding changesets
1006 adding manifests
1006 adding manifests
1007 adding file changes
1007 adding file changes
1008 added 1 changesets with 2 changes to 2 files (+1 heads)
1008 added 1 changesets with 2 changes to 2 files (+1 heads)
1009 (run 'hg heads' to see heads, 'hg merge' to merge)
1009 (run 'hg heads' to see heads, 'hg merge' to merge)
1010 $ hg rebase
1010 $ hg rebase
1011 Invoking status precommit hook
1011 Invoking status precommit hook
1012 M sub/normal4
1012 M sub/normal4
1013 M sub2/large6
1013 M sub2/large6
1014 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
1014 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
1015 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1015 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1016 9:598410d3eb9a modify normal file largefile in repo d
1016 9:598410d3eb9a modify normal file largefile in repo d
1017 8:a381d2c8c80e modify normal file and largefile in repo b
1017 8:a381d2c8c80e modify normal file and largefile in repo b
1018 7:daea875e9014 add/edit more largefiles
1018 7:daea875e9014 add/edit more largefiles
1019 6:4355d653f84f edit files yet again
1019 6:4355d653f84f edit files yet again
1020 5:9d5af5072dbd edit files again
1020 5:9d5af5072dbd edit files again
1021 4:74c02385b94c move files
1021 4:74c02385b94c move files
1022 3:9e8fbc4bce62 copy files
1022 3:9e8fbc4bce62 copy files
1023 2:51a0ae4d5864 remove files
1023 2:51a0ae4d5864 remove files
1024 1:ce8896473775 edit files
1024 1:ce8896473775 edit files
1025 0:30d30fe6a5be add files
1025 0:30d30fe6a5be add files
1026 $ cat normal3
1026 $ cat normal3
1027 normal3-modified
1027 normal3-modified
1028 $ cat sub/normal4
1028 $ cat sub/normal4
1029 normal4-modified
1029 normal4-modified
1030 $ cat sub/large4
1030 $ cat sub/large4
1031 large4-modified
1031 large4-modified
1032 $ cat sub2/large6
1032 $ cat sub2/large6
1033 large6-modified
1033 large6-modified
1034 $ cat sub2/large7
1034 $ cat sub2/large7
1035 large7
1035 large7
1036
1036
1037 Log on largefiles
1037 Log on largefiles
1038
1038
1039 - same output
1039 - same output
1040 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub/large4
1040 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub/large4
1041 8:a381d2c8c80e modify normal file and largefile in repo b
1041 8:a381d2c8c80e modify normal file and largefile in repo b
1042 6:4355d653f84f edit files yet again
1042 6:4355d653f84f edit files yet again
1043 5:9d5af5072dbd edit files again
1043 5:9d5af5072dbd edit files again
1044 4:74c02385b94c move files
1044 4:74c02385b94c move files
1045 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub/large4
1045 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub/large4
1046 8:a381d2c8c80e modify normal file and largefile in repo b
1046 8:a381d2c8c80e modify normal file and largefile in repo b
1047 6:4355d653f84f edit files yet again
1047 6:4355d653f84f edit files yet again
1048 5:9d5af5072dbd edit files again
1048 5:9d5af5072dbd edit files again
1049 4:74c02385b94c move files
1049 4:74c02385b94c move files
1050
1050
1051 - .hglf only matches largefiles, without .hglf it matches 9 bco sub/normal
1051 - .hglf only matches largefiles, without .hglf it matches 9 bco sub/normal
1052 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub
1052 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub
1053 8:a381d2c8c80e modify normal file and largefile in repo b
1053 8:a381d2c8c80e modify normal file and largefile in repo b
1054 6:4355d653f84f edit files yet again
1054 6:4355d653f84f edit files yet again
1055 5:9d5af5072dbd edit files again
1055 5:9d5af5072dbd edit files again
1056 4:74c02385b94c move files
1056 4:74c02385b94c move files
1057 1:ce8896473775 edit files
1057 1:ce8896473775 edit files
1058 0:30d30fe6a5be add files
1058 0:30d30fe6a5be add files
1059 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub
1059 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub
1060 9:598410d3eb9a modify normal file largefile in repo d
1060 9:598410d3eb9a modify normal file largefile in repo d
1061 8:a381d2c8c80e modify normal file and largefile in repo b
1061 8:a381d2c8c80e modify normal file and largefile in repo b
1062 6:4355d653f84f edit files yet again
1062 6:4355d653f84f edit files yet again
1063 5:9d5af5072dbd edit files again
1063 5:9d5af5072dbd edit files again
1064 4:74c02385b94c move files
1064 4:74c02385b94c move files
1065 1:ce8896473775 edit files
1065 1:ce8896473775 edit files
1066 0:30d30fe6a5be add files
1066 0:30d30fe6a5be add files
1067
1067
1068 - globbing gives same result
1068 - globbing gives same result
1069 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 'glob:sub/*'
1069 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 'glob:sub/*'
1070 9:598410d3eb9a modify normal file largefile in repo d
1070 9:598410d3eb9a modify normal file largefile in repo d
1071 8:a381d2c8c80e modify normal file and largefile in repo b
1071 8:a381d2c8c80e modify normal file and largefile in repo b
1072 6:4355d653f84f edit files yet again
1072 6:4355d653f84f edit files yet again
1073 5:9d5af5072dbd edit files again
1073 5:9d5af5072dbd edit files again
1074 4:74c02385b94c move files
1074 4:74c02385b94c move files
1075 1:ce8896473775 edit files
1075 1:ce8896473775 edit files
1076 0:30d30fe6a5be add files
1076 0:30d30fe6a5be add files
1077
1077
1078 Rollback on largefiles.
1078 Rollback on largefiles.
1079
1079
1080 $ echo large4-modified-again > sub/large4
1080 $ echo large4-modified-again > sub/large4
1081 $ hg commit -m "Modify large4 again"
1081 $ hg commit -m "Modify large4 again"
1082 Invoking status precommit hook
1082 Invoking status precommit hook
1083 M sub/large4
1083 M sub/large4
1084 $ hg rollback
1084 $ hg rollback
1085 repository tip rolled back to revision 9 (undo commit)
1085 repository tip rolled back to revision 9 (undo commit)
1086 working directory now based on revision 9
1086 working directory now based on revision 9
1087 $ hg st
1087 $ hg st
1088 M sub/large4
1088 M sub/large4
1089 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1089 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1090 9:598410d3eb9a modify normal file largefile in repo d
1090 9:598410d3eb9a modify normal file largefile in repo d
1091 8:a381d2c8c80e modify normal file and largefile in repo b
1091 8:a381d2c8c80e modify normal file and largefile in repo b
1092 7:daea875e9014 add/edit more largefiles
1092 7:daea875e9014 add/edit more largefiles
1093 6:4355d653f84f edit files yet again
1093 6:4355d653f84f edit files yet again
1094 5:9d5af5072dbd edit files again
1094 5:9d5af5072dbd edit files again
1095 4:74c02385b94c move files
1095 4:74c02385b94c move files
1096 3:9e8fbc4bce62 copy files
1096 3:9e8fbc4bce62 copy files
1097 2:51a0ae4d5864 remove files
1097 2:51a0ae4d5864 remove files
1098 1:ce8896473775 edit files
1098 1:ce8896473775 edit files
1099 0:30d30fe6a5be add files
1099 0:30d30fe6a5be add files
1100 $ cat sub/large4
1100 $ cat sub/large4
1101 large4-modified-again
1101 large4-modified-again
1102
1102
1103 "update --check" refuses to update with uncommitted changes.
1103 "update --check" refuses to update with uncommitted changes.
1104 $ hg update --check 8
1104 $ hg update --check 8
1105 abort: uncommitted local changes
1105 abort: uncommitted local changes
1106 [255]
1106 [255]
1107
1107
1108 "update --clean" leaves correct largefiles in working copy, even when there is
1108 "update --clean" leaves correct largefiles in working copy, even when there is
1109 .orig files from revert in .hglf.
1109 .orig files from revert in .hglf.
1110
1110
1111 $ echo mistake > sub2/large7
1111 $ echo mistake > sub2/large7
1112 $ hg revert sub2/large7
1112 $ hg revert sub2/large7
1113 $ hg -q update --clean -r null
1113 $ hg -q update --clean -r null
1114 $ hg update --clean
1114 $ hg update --clean
1115 getting changed largefiles
1115 getting changed largefiles
1116 3 largefiles updated, 0 removed
1116 3 largefiles updated, 0 removed
1117 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1117 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1118 $ cat normal3
1118 $ cat normal3
1119 normal3-modified
1119 normal3-modified
1120 $ cat sub/normal4
1120 $ cat sub/normal4
1121 normal4-modified
1121 normal4-modified
1122 $ cat sub/large4
1122 $ cat sub/large4
1123 large4-modified
1123 large4-modified
1124 $ cat sub2/large6
1124 $ cat sub2/large6
1125 large6-modified
1125 large6-modified
1126 $ cat sub2/large7
1126 $ cat sub2/large7
1127 large7
1127 large7
1128 $ cat sub2/large7.orig
1128 $ cat sub2/large7.orig
1129 mistake
1129 mistake
1130 $ cat .hglf/sub2/large7.orig
1130 $ cat .hglf/sub2/large7.orig
1131 9dbfb2c79b1c40981b258c3efa1b10b03f18ad31
1131 9dbfb2c79b1c40981b258c3efa1b10b03f18ad31
1132
1132
1133 demonstrate misfeature: .orig file is overwritten on every update -C,
1133 demonstrate misfeature: .orig file is overwritten on every update -C,
1134 also when clean:
1134 also when clean:
1135 $ hg update --clean
1135 $ hg update --clean
1136 getting changed largefiles
1136 getting changed largefiles
1137 0 largefiles updated, 0 removed
1137 0 largefiles updated, 0 removed
1138 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1138 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1139 $ cat sub2/large7.orig
1139 $ cat sub2/large7.orig
1140 large7
1140 large7
1141 $ rm sub2/large7.orig .hglf/sub2/large7.orig
1141 $ rm sub2/large7.orig .hglf/sub2/large7.orig
1142
1142
1143 Now "update check" is happy.
1143 Now "update check" is happy.
1144 $ hg update --check 8
1144 $ hg update --check 8
1145 getting changed largefiles
1145 getting changed largefiles
1146 1 largefiles updated, 0 removed
1146 1 largefiles updated, 0 removed
1147 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1147 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1148 $ hg update --check
1148 $ hg update --check
1149 getting changed largefiles
1149 getting changed largefiles
1150 1 largefiles updated, 0 removed
1150 1 largefiles updated, 0 removed
1151 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1151 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1152
1152
1153 Test removing empty largefiles directories on update
1153 Test removing empty largefiles directories on update
1154 $ test -d sub2 && echo "sub2 exists"
1154 $ test -d sub2 && echo "sub2 exists"
1155 sub2 exists
1155 sub2 exists
1156 $ hg update -q null
1156 $ hg update -q null
1157 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1157 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1158 [1]
1158 [1]
1159 $ hg update -q
1159 $ hg update -q
1160
1160
1161 Test hg remove removes empty largefiles directories
1161 Test hg remove removes empty largefiles directories
1162 $ test -d sub2 && echo "sub2 exists"
1162 $ test -d sub2 && echo "sub2 exists"
1163 sub2 exists
1163 sub2 exists
1164 $ hg remove sub2/*
1164 $ hg remove sub2/*
1165 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1165 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1166 [1]
1166 [1]
1167 $ hg revert sub2/large6 sub2/large7
1167 $ hg revert sub2/large6 sub2/large7
1168
1168
1169 "revert" works on largefiles (and normal files too).
1169 "revert" works on largefiles (and normal files too).
1170 $ echo hack3 >> normal3
1170 $ echo hack3 >> normal3
1171 $ echo hack4 >> sub/normal4
1171 $ echo hack4 >> sub/normal4
1172 $ echo hack4 >> sub/large4
1172 $ echo hack4 >> sub/large4
1173 $ rm sub2/large6
1173 $ rm sub2/large6
1174 $ hg revert sub2/large6
1174 $ hg revert sub2/large6
1175 $ hg rm sub2/large6
1175 $ hg rm sub2/large6
1176 $ echo new >> sub2/large8
1176 $ echo new >> sub2/large8
1177 $ hg add --large sub2/large8
1177 $ hg add --large sub2/large8
1178 # XXX we don't really want to report that we're reverting the standin;
1178 # XXX we don't really want to report that we're reverting the standin;
1179 # that's just an implementation detail. But I don't see an obvious fix. ;-(
1179 # that's just an implementation detail. But I don't see an obvious fix. ;-(
1180 $ hg revert sub
1180 $ hg revert sub
1181 reverting .hglf/sub/large4 (glob)
1181 reverting .hglf/sub/large4 (glob)
1182 reverting sub/normal4 (glob)
1182 reverting sub/normal4 (glob)
1183 $ hg status
1183 $ hg status
1184 M normal3
1184 M normal3
1185 A sub2/large8
1185 A sub2/large8
1186 R sub2/large6
1186 R sub2/large6
1187 ? sub/large4.orig
1187 ? sub/large4.orig
1188 ? sub/normal4.orig
1188 ? sub/normal4.orig
1189 $ cat sub/normal4
1189 $ cat sub/normal4
1190 normal4-modified
1190 normal4-modified
1191 $ cat sub/large4
1191 $ cat sub/large4
1192 large4-modified
1192 large4-modified
1193 $ hg revert -a --no-backup
1193 $ hg revert -a --no-backup
1194 undeleting .hglf/sub2/large6 (glob)
1194 undeleting .hglf/sub2/large6 (glob)
1195 forgetting .hglf/sub2/large8 (glob)
1195 forgetting .hglf/sub2/large8 (glob)
1196 reverting normal3
1196 reverting normal3
1197 $ hg status
1197 $ hg status
1198 ? sub/large4.orig
1198 ? sub/large4.orig
1199 ? sub/normal4.orig
1199 ? sub/normal4.orig
1200 ? sub2/large8
1200 ? sub2/large8
1201 $ cat normal3
1201 $ cat normal3
1202 normal3-modified
1202 normal3-modified
1203 $ cat sub2/large6
1203 $ cat sub2/large6
1204 large6-modified
1204 large6-modified
1205 $ rm sub/*.orig sub2/large8
1205 $ rm sub/*.orig sub2/large8
1206
1206
1207 revert some files to an older revision
1207 revert some files to an older revision
1208 $ hg revert --no-backup -r 8 sub2
1208 $ hg revert --no-backup -r 8 sub2
1209 reverting .hglf/sub2/large6 (glob)
1209 reverting .hglf/sub2/large6 (glob)
1210 $ cat sub2/large6
1210 $ cat sub2/large6
1211 large6
1211 large6
1212 $ hg revert --no-backup -C -r '.^' sub2
1212 $ hg revert --no-backup -C -r '.^' sub2
1213 reverting .hglf/sub2/large6 (glob)
1213 reverting .hglf/sub2/large6 (glob)
1214 $ hg revert --no-backup sub2
1214 $ hg revert --no-backup sub2
1215 reverting .hglf/sub2/large6 (glob)
1215 reverting .hglf/sub2/large6 (glob)
1216 $ hg status
1216 $ hg status
1217
1217
1218 "verify --large" actually verifies largefiles
1218 "verify --large" actually verifies largefiles
1219
1219
1220 - Where Do We Come From? What Are We? Where Are We Going?
1220 - Where Do We Come From? What Are We? Where Are We Going?
1221 $ pwd
1221 $ pwd
1222 $TESTTMP/e
1222 $TESTTMP/e
1223 $ hg paths
1223 $ hg paths
1224 default = $TESTTMP/d (glob)
1224 default = $TESTTMP/d (glob)
1225
1225
1226 $ hg verify --large
1226 $ hg verify --large
1227 checking changesets
1227 checking changesets
1228 checking manifests
1228 checking manifests
1229 crosschecking files in changesets and manifests
1229 crosschecking files in changesets and manifests
1230 checking files
1230 checking files
1231 10 files, 10 changesets, 28 total revisions
1231 10 files, 10 changesets, 28 total revisions
1232 searching 1 changesets for largefiles
1232 searching 1 changesets for largefiles
1233 verified existence of 3 revisions of 3 largefiles
1233 verified existence of 3 revisions of 3 largefiles
1234
1234
1235 - introduce missing blob in local store repo and make sure that this is caught:
1235 - introduce missing blob in local store repo and make sure that this is caught:
1236 $ mv $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 .
1236 $ mv $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 .
1237 $ hg verify --large
1237 $ hg verify --large
1238 checking changesets
1238 checking changesets
1239 checking manifests
1239 checking manifests
1240 crosschecking files in changesets and manifests
1240 crosschecking files in changesets and manifests
1241 checking files
1241 checking files
1242 10 files, 10 changesets, 28 total revisions
1242 10 files, 10 changesets, 28 total revisions
1243 searching 1 changesets for largefiles
1243 searching 1 changesets for largefiles
1244 changeset 9:598410d3eb9a: sub/large4 references missing $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 (glob)
1244 changeset 9:598410d3eb9a: sub/large4 references missing $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 (glob)
1245 verified existence of 3 revisions of 3 largefiles
1245 verified existence of 3 revisions of 3 largefiles
1246 [1]
1246 [1]
1247
1247
1248 - introduce corruption and make sure that it is caught when checking content:
1248 - introduce corruption and make sure that it is caught when checking content:
1249 $ echo '5 cents' > $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928
1249 $ echo '5 cents' > $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928
1250 $ hg verify -q --large --lfc
1250 $ hg verify -q --large --lfc
1251 changeset 9:598410d3eb9a: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 (glob)
1251 changeset 9:598410d3eb9a: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 (glob)
1252 [1]
1252 [1]
1253
1253
1254 - cleanup
1254 - cleanup
1255 $ mv e166e74c7303192238d60af5a9c4ce9bef0b7928 $TESTTMP/d/.hg/largefiles/
1255 $ mv e166e74c7303192238d60af5a9c4ce9bef0b7928 $TESTTMP/d/.hg/largefiles/
1256
1256
1257 - verifying all revisions will fail because we didn't clone all largefiles to d:
1257 - verifying all revisions will fail because we didn't clone all largefiles to d:
1258 $ echo 'T-shirt' > $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1258 $ echo 'T-shirt' > $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1259 $ hg verify -q --lfa --lfc
1259 $ hg verify -q --lfa --lfc
1260 changeset 0:30d30fe6a5be: large1 references missing $TESTTMP/d/.hg/largefiles/4669e532d5b2c093a78eca010077e708a071bb64 (glob)
1260 changeset 0:30d30fe6a5be: large1 references missing $TESTTMP/d/.hg/largefiles/4669e532d5b2c093a78eca010077e708a071bb64 (glob)
1261 changeset 0:30d30fe6a5be: sub/large2 references missing $TESTTMP/d/.hg/largefiles/1deebade43c8c498a3c8daddac0244dc55d1331d (glob)
1261 changeset 0:30d30fe6a5be: sub/large2 references missing $TESTTMP/d/.hg/largefiles/1deebade43c8c498a3c8daddac0244dc55d1331d (glob)
1262 changeset 1:ce8896473775: large1 references missing $TESTTMP/d/.hg/largefiles/5f78770c0e77ba4287ad6ef3071c9bf9c379742f (glob)
1262 changeset 1:ce8896473775: large1 references missing $TESTTMP/d/.hg/largefiles/5f78770c0e77ba4287ad6ef3071c9bf9c379742f (glob)
1263 changeset 1:ce8896473775: sub/large2 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1263 changeset 1:ce8896473775: sub/large2 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1264 changeset 3:9e8fbc4bce62: large1 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1264 changeset 3:9e8fbc4bce62: large1 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1265 changeset 4:74c02385b94c: large3 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1265 changeset 4:74c02385b94c: large3 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1266 changeset 4:74c02385b94c: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1266 changeset 4:74c02385b94c: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1267 changeset 5:9d5af5072dbd: large3 references missing $TESTTMP/d/.hg/largefiles/baaf12afde9d8d67f25dab6dced0d2bf77dba47c (glob)
1267 changeset 5:9d5af5072dbd: large3 references missing $TESTTMP/d/.hg/largefiles/baaf12afde9d8d67f25dab6dced0d2bf77dba47c (glob)
1268 changeset 5:9d5af5072dbd: sub/large4 references missing $TESTTMP/d/.hg/largefiles/aeb2210d19f02886dde00dac279729a48471e2f9 (glob)
1268 changeset 5:9d5af5072dbd: sub/large4 references missing $TESTTMP/d/.hg/largefiles/aeb2210d19f02886dde00dac279729a48471e2f9 (glob)
1269 changeset 6:4355d653f84f: large3 references missing $TESTTMP/d/.hg/largefiles/7838695e10da2bb75ac1156565f40a2595fa2fa0 (glob)
1269 changeset 6:4355d653f84f: large3 references missing $TESTTMP/d/.hg/largefiles/7838695e10da2bb75ac1156565f40a2595fa2fa0 (glob)
1270 [1]
1270 [1]
1271
1271
1272 - cleanup
1272 - cleanup
1273 $ rm $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1273 $ rm $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1274 $ rm -f .hglf/sub/*.orig
1274 $ rm -f .hglf/sub/*.orig
1275
1275
1276 Update to revision with missing largefile - and make sure it really is missing
1276 Update to revision with missing largefile - and make sure it really is missing
1277
1277
1278 $ rm ${USERCACHE}/7838695e10da2bb75ac1156565f40a2595fa2fa0
1278 $ rm ${USERCACHE}/7838695e10da2bb75ac1156565f40a2595fa2fa0
1279 $ hg up -r 6
1279 $ hg up -r 6
1280 getting changed largefiles
1280 getting changed largefiles
1281 large3: largefile 7838695e10da2bb75ac1156565f40a2595fa2fa0 not available from file:$TESTTMP/d
1281 large3: largefile 7838695e10da2bb75ac1156565f40a2595fa2fa0 not available from file:$TESTTMP/d (glob)
1282 1 largefiles updated, 2 removed
1282 1 largefiles updated, 2 removed
1283 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
1283 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
1284 $ rm normal3
1284 $ rm normal3
1285 $ echo >> sub/normal4
1285 $ echo >> sub/normal4
1286 $ hg ci -m 'commit with missing files'
1286 $ hg ci -m 'commit with missing files'
1287 Invoking status precommit hook
1287 Invoking status precommit hook
1288 M sub/normal4
1288 M sub/normal4
1289 ! large3
1289 ! large3
1290 ! normal3
1290 ! normal3
1291 created new head
1291 created new head
1292 $ hg st
1292 $ hg st
1293 ! large3
1293 ! large3
1294 ! normal3
1294 ! normal3
1295 $ hg up -r.
1295 $ hg up -r.
1296 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1296 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1297 $ hg st
1297 $ hg st
1298 ! large3
1298 ! large3
1299 ! normal3
1299 ! normal3
1300 $ hg up -Cr.
1300 $ hg up -Cr.
1301 getting changed largefiles
1301 getting changed largefiles
1302 large3: largefile 7838695e10da2bb75ac1156565f40a2595fa2fa0 not available from file:$TESTTMP/d
1302 large3: largefile 7838695e10da2bb75ac1156565f40a2595fa2fa0 not available from file:$TESTTMP/d (glob)
1303 0 largefiles updated, 0 removed
1303 0 largefiles updated, 0 removed
1304 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1304 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1305 $ hg st
1305 $ hg st
1306 ! large3
1306 ! large3
1307 $ hg rollback
1307 $ hg rollback
1308 repository tip rolled back to revision 9 (undo commit)
1308 repository tip rolled back to revision 9 (undo commit)
1309 working directory now based on revision 6
1309 working directory now based on revision 6
1310
1310
1311 Merge with revision with missing largefile - and make sure it tries to fetch it.
1311 Merge with revision with missing largefile - and make sure it tries to fetch it.
1312
1312
1313 $ hg up -Cqr null
1313 $ hg up -Cqr null
1314 $ echo f > f
1314 $ echo f > f
1315 $ hg ci -Am branch
1315 $ hg ci -Am branch
1316 adding f
1316 adding f
1317 Invoking status precommit hook
1317 Invoking status precommit hook
1318 A f
1318 A f
1319 created new head
1319 created new head
1320 $ hg merge -r 6
1320 $ hg merge -r 6
1321 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
1321 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
1322 (branch merge, don't forget to commit)
1322 (branch merge, don't forget to commit)
1323 getting changed largefiles
1323 getting changed largefiles
1324 large3: largefile 7838695e10da2bb75ac1156565f40a2595fa2fa0 not available from file:$TESTTMP/d
1324 large3: largefile 7838695e10da2bb75ac1156565f40a2595fa2fa0 not available from file:$TESTTMP/d (glob)
1325 1 largefiles updated, 0 removed
1325 1 largefiles updated, 0 removed
1326
1326
1327 $ hg rollback -q
1327 $ hg rollback -q
1328 $ hg up -Cq
1328 $ hg up -Cq
1329
1329
1330 Pulling 0 revisions with --all-largefiles should not fetch for all revisions
1330 Pulling 0 revisions with --all-largefiles should not fetch for all revisions
1331
1331
1332 $ hg pull --all-largefiles
1332 $ hg pull --all-largefiles
1333 pulling from $TESTTMP/d (glob)
1333 pulling from $TESTTMP/d (glob)
1334 searching for changes
1334 searching for changes
1335 no changes found
1335 no changes found
1336
1336
1337 Merging does not revert to old versions of largefiles and also check
1337 Merging does not revert to old versions of largefiles and also check
1338 that merging after having pulled from a non-default remote works
1338 that merging after having pulled from a non-default remote works
1339 correctly.
1339 correctly.
1340
1340
1341 $ cd ..
1341 $ cd ..
1342 $ hg clone -r 7 e temp
1342 $ hg clone -r 7 e temp
1343 adding changesets
1343 adding changesets
1344 adding manifests
1344 adding manifests
1345 adding file changes
1345 adding file changes
1346 added 8 changesets with 24 changes to 10 files
1346 added 8 changesets with 24 changes to 10 files
1347 updating to branch default
1347 updating to branch default
1348 getting changed largefiles
1348 getting changed largefiles
1349 3 largefiles updated, 0 removed
1349 3 largefiles updated, 0 removed
1350 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1350 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1351 $ hg clone temp f
1351 $ hg clone temp f
1352 updating to branch default
1352 updating to branch default
1353 getting changed largefiles
1353 getting changed largefiles
1354 3 largefiles updated, 0 removed
1354 3 largefiles updated, 0 removed
1355 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1355 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1356 # Delete the largefiles in the largefiles system cache so that we have an
1356 # Delete the largefiles in the largefiles system cache so that we have an
1357 # opportunity to test that caching after a pull works.
1357 # opportunity to test that caching after a pull works.
1358 $ rm "${USERCACHE}"/*
1358 $ rm "${USERCACHE}"/*
1359 $ cd f
1359 $ cd f
1360 $ echo "large4-merge-test" > sub/large4
1360 $ echo "large4-merge-test" > sub/large4
1361 $ hg commit -m "Modify large4 to test merge"
1361 $ hg commit -m "Modify large4 to test merge"
1362 Invoking status precommit hook
1362 Invoking status precommit hook
1363 M sub/large4
1363 M sub/large4
1364 # Test --cache-largefiles flag
1364 # Test --cache-largefiles flag
1365 $ hg pull --lfrev 'heads(pulled())' ../e
1365 $ hg pull --lfrev 'heads(pulled())' ../e
1366 pulling from ../e
1366 pulling from ../e
1367 searching for changes
1367 searching for changes
1368 adding changesets
1368 adding changesets
1369 adding manifests
1369 adding manifests
1370 adding file changes
1370 adding file changes
1371 added 2 changesets with 4 changes to 4 files (+1 heads)
1371 added 2 changesets with 4 changes to 4 files (+1 heads)
1372 (run 'hg heads' to see heads, 'hg merge' to merge)
1372 (run 'hg heads' to see heads, 'hg merge' to merge)
1373 2 largefiles cached
1373 2 largefiles cached
1374 $ hg merge
1374 $ hg merge
1375 merging sub/large4
1375 merging sub/large4
1376 largefile sub/large4 has a merge conflict
1376 largefile sub/large4 has a merge conflict
1377 keep (l)ocal or take (o)ther? l
1377 keep (l)ocal or take (o)ther? l
1378 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
1378 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
1379 (branch merge, don't forget to commit)
1379 (branch merge, don't forget to commit)
1380 getting changed largefiles
1380 getting changed largefiles
1381 1 largefiles updated, 0 removed
1381 1 largefiles updated, 0 removed
1382 $ hg commit -m "Merge repos e and f"
1382 $ hg commit -m "Merge repos e and f"
1383 Invoking status precommit hook
1383 Invoking status precommit hook
1384 M normal3
1384 M normal3
1385 M sub/normal4
1385 M sub/normal4
1386 M sub2/large6
1386 M sub2/large6
1387 $ cat normal3
1387 $ cat normal3
1388 normal3-modified
1388 normal3-modified
1389 $ cat sub/normal4
1389 $ cat sub/normal4
1390 normal4-modified
1390 normal4-modified
1391 $ cat sub/large4
1391 $ cat sub/large4
1392 large4-merge-test
1392 large4-merge-test
1393 $ cat sub2/large6
1393 $ cat sub2/large6
1394 large6-modified
1394 large6-modified
1395 $ cat sub2/large7
1395 $ cat sub2/large7
1396 large7
1396 large7
1397
1397
1398 Test status after merging with a branch that introduces a new largefile:
1398 Test status after merging with a branch that introduces a new largefile:
1399
1399
1400 $ echo large > large
1400 $ echo large > large
1401 $ hg add --large large
1401 $ hg add --large large
1402 $ hg commit -m 'add largefile'
1402 $ hg commit -m 'add largefile'
1403 Invoking status precommit hook
1403 Invoking status precommit hook
1404 A large
1404 A large
1405 $ hg update -q ".^"
1405 $ hg update -q ".^"
1406 $ echo change >> normal3
1406 $ echo change >> normal3
1407 $ hg commit -m 'some change'
1407 $ hg commit -m 'some change'
1408 Invoking status precommit hook
1408 Invoking status precommit hook
1409 M normal3
1409 M normal3
1410 created new head
1410 created new head
1411 $ hg merge
1411 $ hg merge
1412 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1412 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1413 (branch merge, don't forget to commit)
1413 (branch merge, don't forget to commit)
1414 getting changed largefiles
1414 getting changed largefiles
1415 1 largefiles updated, 0 removed
1415 1 largefiles updated, 0 removed
1416 $ hg status
1416 $ hg status
1417 M large
1417 M large
1418
1418
1419 - make sure update of merge with removed largefiles fails as expected
1419 - make sure update of merge with removed largefiles fails as expected
1420 $ hg rm sub2/large6
1420 $ hg rm sub2/large6
1421 $ hg up -r.
1421 $ hg up -r.
1422 abort: outstanding uncommitted merges
1422 abort: outstanding uncommitted merges
1423 [255]
1423 [255]
1424
1424
1425 - revert should be able to revert files introduced in a pending merge
1425 - revert should be able to revert files introduced in a pending merge
1426 $ hg revert --all -r .
1426 $ hg revert --all -r .
1427 removing .hglf/large (glob)
1427 removing .hglf/large (glob)
1428 undeleting .hglf/sub2/large6 (glob)
1428 undeleting .hglf/sub2/large6 (glob)
1429
1429
1430 Test that a normal file and a largefile with the same name and path cannot
1430 Test that a normal file and a largefile with the same name and path cannot
1431 coexist.
1431 coexist.
1432
1432
1433 $ rm sub2/large7
1433 $ rm sub2/large7
1434 $ echo "largeasnormal" > sub2/large7
1434 $ echo "largeasnormal" > sub2/large7
1435 $ hg add sub2/large7
1435 $ hg add sub2/large7
1436 sub2/large7 already a largefile
1436 sub2/large7 already a largefile
1437
1437
1438 Test that transplanting a largefile change works correctly.
1438 Test that transplanting a largefile change works correctly.
1439
1439
1440 $ cd ..
1440 $ cd ..
1441 $ hg clone -r 8 d g
1441 $ hg clone -r 8 d g
1442 adding changesets
1442 adding changesets
1443 adding manifests
1443 adding manifests
1444 adding file changes
1444 adding file changes
1445 added 9 changesets with 26 changes to 10 files
1445 added 9 changesets with 26 changes to 10 files
1446 updating to branch default
1446 updating to branch default
1447 getting changed largefiles
1447 getting changed largefiles
1448 3 largefiles updated, 0 removed
1448 3 largefiles updated, 0 removed
1449 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1449 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1450 $ cd g
1450 $ cd g
1451 $ hg transplant -s ../d 598410d3eb9a
1451 $ hg transplant -s ../d 598410d3eb9a
1452 searching for changes
1452 searching for changes
1453 searching for changes
1453 searching for changes
1454 adding changesets
1454 adding changesets
1455 adding manifests
1455 adding manifests
1456 adding file changes
1456 adding file changes
1457 added 1 changesets with 2 changes to 2 files
1457 added 1 changesets with 2 changes to 2 files
1458 getting changed largefiles
1458 getting changed largefiles
1459 1 largefiles updated, 0 removed
1459 1 largefiles updated, 0 removed
1460 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1460 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1461 9:598410d3eb9a modify normal file largefile in repo d
1461 9:598410d3eb9a modify normal file largefile in repo d
1462 8:a381d2c8c80e modify normal file and largefile in repo b
1462 8:a381d2c8c80e modify normal file and largefile in repo b
1463 7:daea875e9014 add/edit more largefiles
1463 7:daea875e9014 add/edit more largefiles
1464 6:4355d653f84f edit files yet again
1464 6:4355d653f84f edit files yet again
1465 5:9d5af5072dbd edit files again
1465 5:9d5af5072dbd edit files again
1466 4:74c02385b94c move files
1466 4:74c02385b94c move files
1467 3:9e8fbc4bce62 copy files
1467 3:9e8fbc4bce62 copy files
1468 2:51a0ae4d5864 remove files
1468 2:51a0ae4d5864 remove files
1469 1:ce8896473775 edit files
1469 1:ce8896473775 edit files
1470 0:30d30fe6a5be add files
1470 0:30d30fe6a5be add files
1471 $ cat normal3
1471 $ cat normal3
1472 normal3-modified
1472 normal3-modified
1473 $ cat sub/normal4
1473 $ cat sub/normal4
1474 normal4-modified
1474 normal4-modified
1475 $ cat sub/large4
1475 $ cat sub/large4
1476 large4-modified
1476 large4-modified
1477 $ cat sub2/large6
1477 $ cat sub2/large6
1478 large6-modified
1478 large6-modified
1479 $ cat sub2/large7
1479 $ cat sub2/large7
1480 large7
1480 large7
1481
1481
1482 Cat a largefile
1482 Cat a largefile
1483 $ hg cat normal3
1483 $ hg cat normal3
1484 normal3-modified
1484 normal3-modified
1485 $ hg cat sub/large4
1485 $ hg cat sub/large4
1486 large4-modified
1486 large4-modified
1487 $ rm "${USERCACHE}"/*
1487 $ rm "${USERCACHE}"/*
1488 $ hg cat -r a381d2c8c80e -o cat.out sub/large4
1488 $ hg cat -r a381d2c8c80e -o cat.out sub/large4
1489 $ cat cat.out
1489 $ cat cat.out
1490 large4-modified
1490 large4-modified
1491 $ rm cat.out
1491 $ rm cat.out
1492 $ hg cat -r a381d2c8c80e normal3
1492 $ hg cat -r a381d2c8c80e normal3
1493 normal3-modified
1493 normal3-modified
1494 $ hg cat -r '.^' normal3
1494 $ hg cat -r '.^' normal3
1495 normal3-modified
1495 normal3-modified
1496 $ hg cat -r '.^' sub/large4 doesntexist
1496 $ hg cat -r '.^' sub/large4 doesntexist
1497 large4-modified
1497 large4-modified
1498 doesntexist: no such file in rev a381d2c8c80e
1498 doesntexist: no such file in rev a381d2c8c80e
1499 $ hg --cwd sub cat -r '.^' large4
1499 $ hg --cwd sub cat -r '.^' large4
1500 large4-modified
1500 large4-modified
1501 $ hg --cwd sub cat -r '.^' ../normal3
1501 $ hg --cwd sub cat -r '.^' ../normal3
1502 normal3-modified
1502 normal3-modified
1503
1503
1504 Test that renaming a largefile results in correct output for status
1504 Test that renaming a largefile results in correct output for status
1505
1505
1506 $ hg rename sub/large4 large4-renamed
1506 $ hg rename sub/large4 large4-renamed
1507 $ hg commit -m "test rename output"
1507 $ hg commit -m "test rename output"
1508 Invoking status precommit hook
1508 Invoking status precommit hook
1509 A large4-renamed
1509 A large4-renamed
1510 R sub/large4
1510 R sub/large4
1511 $ cat large4-renamed
1511 $ cat large4-renamed
1512 large4-modified
1512 large4-modified
1513 $ cd sub2
1513 $ cd sub2
1514 $ hg rename large6 large6-renamed
1514 $ hg rename large6 large6-renamed
1515 $ hg st
1515 $ hg st
1516 A sub2/large6-renamed
1516 A sub2/large6-renamed
1517 R sub2/large6
1517 R sub2/large6
1518 $ cd ..
1518 $ cd ..
1519
1519
1520 Test --normal flag
1520 Test --normal flag
1521
1521
1522 $ dd if=/dev/zero bs=2k count=11k > new-largefile 2> /dev/null
1522 $ dd if=/dev/zero bs=2k count=11k > new-largefile 2> /dev/null
1523 $ hg add --normal --large new-largefile
1523 $ hg add --normal --large new-largefile
1524 abort: --normal cannot be used with --large
1524 abort: --normal cannot be used with --large
1525 [255]
1525 [255]
1526 $ hg add --normal new-largefile
1526 $ hg add --normal new-largefile
1527 new-largefile: up to 69 MB of RAM may be required to manage this file
1527 new-largefile: up to 69 MB of RAM may be required to manage this file
1528 (use 'hg revert new-largefile' to cancel the pending addition)
1528 (use 'hg revert new-largefile' to cancel the pending addition)
1529 $ cd ..
1529 $ cd ..
1530
1530
1531 #if serve
1531 #if serve
1532 vanilla clients not locked out from largefiles servers on vanilla repos
1532 vanilla clients not locked out from largefiles servers on vanilla repos
1533 $ mkdir r1
1533 $ mkdir r1
1534 $ cd r1
1534 $ cd r1
1535 $ hg init
1535 $ hg init
1536 $ echo c1 > f1
1536 $ echo c1 > f1
1537 $ hg add f1
1537 $ hg add f1
1538 $ hg commit -m "m1"
1538 $ hg commit -m "m1"
1539 Invoking status precommit hook
1539 Invoking status precommit hook
1540 A f1
1540 A f1
1541 $ cd ..
1541 $ cd ..
1542 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
1542 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
1543 $ cat hg.pid >> $DAEMON_PIDS
1543 $ cat hg.pid >> $DAEMON_PIDS
1544 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
1544 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
1545 requesting all changes
1545 requesting all changes
1546 adding changesets
1546 adding changesets
1547 adding manifests
1547 adding manifests
1548 adding file changes
1548 adding file changes
1549 added 1 changesets with 1 changes to 1 files
1549 added 1 changesets with 1 changes to 1 files
1550 updating to branch default
1550 updating to branch default
1551 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1551 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1552
1552
1553 largefiles clients still work with vanilla servers
1553 largefiles clients still work with vanilla servers
1554 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
1554 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
1555 $ cat hg.pid >> $DAEMON_PIDS
1555 $ cat hg.pid >> $DAEMON_PIDS
1556 $ hg clone http://localhost:$HGPORT1 r3
1556 $ hg clone http://localhost:$HGPORT1 r3
1557 requesting all changes
1557 requesting all changes
1558 adding changesets
1558 adding changesets
1559 adding manifests
1559 adding manifests
1560 adding file changes
1560 adding file changes
1561 added 1 changesets with 1 changes to 1 files
1561 added 1 changesets with 1 changes to 1 files
1562 updating to branch default
1562 updating to branch default
1563 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1563 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1564 #endif
1564 #endif
1565
1565
1566
1566
1567 vanilla clients locked out from largefiles http repos
1567 vanilla clients locked out from largefiles http repos
1568 $ mkdir r4
1568 $ mkdir r4
1569 $ cd r4
1569 $ cd r4
1570 $ hg init
1570 $ hg init
1571 $ echo c1 > f1
1571 $ echo c1 > f1
1572 $ hg add --large f1
1572 $ hg add --large f1
1573 $ hg commit -m "m1"
1573 $ hg commit -m "m1"
1574 Invoking status precommit hook
1574 Invoking status precommit hook
1575 A f1
1575 A f1
1576 $ cd ..
1576 $ cd ..
1577
1577
1578 largefiles can be pushed locally (issue3583)
1578 largefiles can be pushed locally (issue3583)
1579 $ hg init dest
1579 $ hg init dest
1580 $ cd r4
1580 $ cd r4
1581 $ hg outgoing ../dest
1581 $ hg outgoing ../dest
1582 comparing with ../dest
1582 comparing with ../dest
1583 searching for changes
1583 searching for changes
1584 changeset: 0:639881c12b4c
1584 changeset: 0:639881c12b4c
1585 tag: tip
1585 tag: tip
1586 user: test
1586 user: test
1587 date: Thu Jan 01 00:00:00 1970 +0000
1587 date: Thu Jan 01 00:00:00 1970 +0000
1588 summary: m1
1588 summary: m1
1589
1589
1590 $ hg push ../dest
1590 $ hg push ../dest
1591 pushing to ../dest
1591 pushing to ../dest
1592 searching for changes
1592 searching for changes
1593 searching for changes
1593 searching for changes
1594 adding changesets
1594 adding changesets
1595 adding manifests
1595 adding manifests
1596 adding file changes
1596 adding file changes
1597 added 1 changesets with 1 changes to 1 files
1597 added 1 changesets with 1 changes to 1 files
1598
1598
1599 exit code with nothing outgoing (issue3611)
1599 exit code with nothing outgoing (issue3611)
1600 $ hg outgoing ../dest
1600 $ hg outgoing ../dest
1601 comparing with ../dest
1601 comparing with ../dest
1602 searching for changes
1602 searching for changes
1603 no changes found
1603 no changes found
1604 [1]
1604 [1]
1605 $ cd ..
1605 $ cd ..
1606
1606
1607 #if serve
1607 #if serve
1608 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
1608 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
1609 $ cat hg.pid >> $DAEMON_PIDS
1609 $ cat hg.pid >> $DAEMON_PIDS
1610 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
1610 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
1611 abort: remote error:
1611 abort: remote error:
1612
1612
1613 This repository uses the largefiles extension.
1613 This repository uses the largefiles extension.
1614
1614
1615 Please enable it in your Mercurial config file.
1615 Please enable it in your Mercurial config file.
1616 [255]
1616 [255]
1617
1617
1618 used all HGPORTs, kill all daemons
1618 used all HGPORTs, kill all daemons
1619 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1619 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1620 #endif
1620 #endif
1621
1621
1622 vanilla clients locked out from largefiles ssh repos
1622 vanilla clients locked out from largefiles ssh repos
1623 $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5
1623 $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5
1624 abort: remote error:
1624 abort: remote error:
1625
1625
1626 This repository uses the largefiles extension.
1626 This repository uses the largefiles extension.
1627
1627
1628 Please enable it in your Mercurial config file.
1628 Please enable it in your Mercurial config file.
1629 [255]
1629 [255]
1630
1630
1631 #if serve
1631 #if serve
1632
1632
1633 largefiles clients refuse to push largefiles repos to vanilla servers
1633 largefiles clients refuse to push largefiles repos to vanilla servers
1634 $ mkdir r6
1634 $ mkdir r6
1635 $ cd r6
1635 $ cd r6
1636 $ hg init
1636 $ hg init
1637 $ echo c1 > f1
1637 $ echo c1 > f1
1638 $ hg add f1
1638 $ hg add f1
1639 $ hg commit -m "m1"
1639 $ hg commit -m "m1"
1640 Invoking status precommit hook
1640 Invoking status precommit hook
1641 A f1
1641 A f1
1642 $ cat >> .hg/hgrc <<!
1642 $ cat >> .hg/hgrc <<!
1643 > [web]
1643 > [web]
1644 > push_ssl = false
1644 > push_ssl = false
1645 > allow_push = *
1645 > allow_push = *
1646 > !
1646 > !
1647 $ cd ..
1647 $ cd ..
1648 $ hg clone r6 r7
1648 $ hg clone r6 r7
1649 updating to branch default
1649 updating to branch default
1650 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1650 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1651 $ cd r7
1651 $ cd r7
1652 $ echo c2 > f2
1652 $ echo c2 > f2
1653 $ hg add --large f2
1653 $ hg add --large f2
1654 $ hg commit -m "m2"
1654 $ hg commit -m "m2"
1655 Invoking status precommit hook
1655 Invoking status precommit hook
1656 A f2
1656 A f2
1657 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
1657 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
1658 $ cat ../hg.pid >> $DAEMON_PIDS
1658 $ cat ../hg.pid >> $DAEMON_PIDS
1659 $ hg push http://localhost:$HGPORT
1659 $ hg push http://localhost:$HGPORT
1660 pushing to http://localhost:$HGPORT/
1660 pushing to http://localhost:$HGPORT/
1661 searching for changes
1661 searching for changes
1662 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
1662 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
1663 [255]
1663 [255]
1664 $ cd ..
1664 $ cd ..
1665
1665
1666 putlfile errors are shown (issue3123)
1666 putlfile errors are shown (issue3123)
1667 Corrupt the cached largefile in r7 and move it out of the servers usercache
1667 Corrupt the cached largefile in r7 and move it out of the servers usercache
1668 $ mv r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 .
1668 $ mv r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 .
1669 $ echo 'client side corruption' > r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1669 $ echo 'client side corruption' > r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1670 $ rm "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
1670 $ rm "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
1671 $ hg init empty
1671 $ hg init empty
1672 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
1672 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
1673 > --config 'web.allow_push=*' --config web.push_ssl=False
1673 > --config 'web.allow_push=*' --config web.push_ssl=False
1674 $ cat hg.pid >> $DAEMON_PIDS
1674 $ cat hg.pid >> $DAEMON_PIDS
1675 $ hg push -R r7 http://localhost:$HGPORT1
1675 $ hg push -R r7 http://localhost:$HGPORT1
1676 pushing to http://localhost:$HGPORT1/
1676 pushing to http://localhost:$HGPORT1/
1677 searching for changes
1677 searching for changes
1678 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
1678 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
1679 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
1679 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
1680 [255]
1680 [255]
1681 $ mv 4cdac4d8b084d0b599525cf732437fb337d422a8 r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1681 $ mv 4cdac4d8b084d0b599525cf732437fb337d422a8 r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1682 Push of file that exists on server but is corrupted - magic healing would be nice ... but too magic
1682 Push of file that exists on server but is corrupted - magic healing would be nice ... but too magic
1683 $ echo "server side corruption" > empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1683 $ echo "server side corruption" > empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1684 $ hg push -R r7 http://localhost:$HGPORT1
1684 $ hg push -R r7 http://localhost:$HGPORT1
1685 pushing to http://localhost:$HGPORT1/
1685 pushing to http://localhost:$HGPORT1/
1686 searching for changes
1686 searching for changes
1687 searching for changes
1687 searching for changes
1688 remote: adding changesets
1688 remote: adding changesets
1689 remote: adding manifests
1689 remote: adding manifests
1690 remote: adding file changes
1690 remote: adding file changes
1691 remote: added 2 changesets with 2 changes to 2 files
1691 remote: added 2 changesets with 2 changes to 2 files
1692 $ cat empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1692 $ cat empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1693 server side corruption
1693 server side corruption
1694 $ rm -rf empty
1694 $ rm -rf empty
1695
1695
1696 Push a largefiles repository to a served empty repository
1696 Push a largefiles repository to a served empty repository
1697 $ hg init r8
1697 $ hg init r8
1698 $ echo c3 > r8/f1
1698 $ echo c3 > r8/f1
1699 $ hg add --large r8/f1 -R r8
1699 $ hg add --large r8/f1 -R r8
1700 $ hg commit -m "m1" -R r8
1700 $ hg commit -m "m1" -R r8
1701 Invoking status precommit hook
1701 Invoking status precommit hook
1702 A f1
1702 A f1
1703 $ hg init empty
1703 $ hg init empty
1704 $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
1704 $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
1705 > --config 'web.allow_push=*' --config web.push_ssl=False
1705 > --config 'web.allow_push=*' --config web.push_ssl=False
1706 $ cat hg.pid >> $DAEMON_PIDS
1706 $ cat hg.pid >> $DAEMON_PIDS
1707 $ rm "${USERCACHE}"/*
1707 $ rm "${USERCACHE}"/*
1708 $ hg push -R r8 http://localhost:$HGPORT2/#default
1708 $ hg push -R r8 http://localhost:$HGPORT2/#default
1709 pushing to http://localhost:$HGPORT2/
1709 pushing to http://localhost:$HGPORT2/
1710 searching for changes
1710 searching for changes
1711 searching for changes
1711 searching for changes
1712 remote: adding changesets
1712 remote: adding changesets
1713 remote: adding manifests
1713 remote: adding manifests
1714 remote: adding file changes
1714 remote: adding file changes
1715 remote: added 1 changesets with 1 changes to 1 files
1715 remote: added 1 changesets with 1 changes to 1 files
1716 $ [ -f "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1716 $ [ -f "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1717 $ [ -f empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1717 $ [ -f empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1718
1718
1719 Clone over http, no largefiles pulled on clone.
1719 Clone over http, no largefiles pulled on clone.
1720
1720
1721 $ hg clone http://localhost:$HGPORT2/#default http-clone -U
1721 $ hg clone http://localhost:$HGPORT2/#default http-clone -U
1722 adding changesets
1722 adding changesets
1723 adding manifests
1723 adding manifests
1724 adding file changes
1724 adding file changes
1725 added 1 changesets with 1 changes to 1 files
1725 added 1 changesets with 1 changes to 1 files
1726
1726
1727 test 'verify' with remotestore:
1727 test 'verify' with remotestore:
1728
1728
1729 $ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90
1729 $ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90
1730 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1730 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1731 $ hg -R http-clone verify --large --lfa
1731 $ hg -R http-clone verify --large --lfa
1732 checking changesets
1732 checking changesets
1733 checking manifests
1733 checking manifests
1734 crosschecking files in changesets and manifests
1734 crosschecking files in changesets and manifests
1735 checking files
1735 checking files
1736 1 files, 1 changesets, 1 total revisions
1736 1 files, 1 changesets, 1 total revisions
1737 searching 1 changesets for largefiles
1737 searching 1 changesets for largefiles
1738 changeset 0:cf03e5bb9936: f1 missing
1738 changeset 0:cf03e5bb9936: f1 missing
1739 verified existence of 1 revisions of 1 largefiles
1739 verified existence of 1 revisions of 1 largefiles
1740 [1]
1740 [1]
1741 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1741 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1742 $ hg -R http-clone -q verify --large --lfa
1742 $ hg -R http-clone -q verify --large --lfa
1743
1743
1744 largefiles pulled on update - a largefile missing on the server:
1744 largefiles pulled on update - a largefile missing on the server:
1745 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1745 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1746 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1746 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1747 getting changed largefiles
1747 getting changed largefiles
1748 f1: largefile 02a439e5c31c526465ab1a0ca1f431f76b827b90 not available from http://localhost:$HGPORT2/
1748 f1: largefile 02a439e5c31c526465ab1a0ca1f431f76b827b90 not available from http://localhost:$HGPORT2/
1749 0 largefiles updated, 0 removed
1749 0 largefiles updated, 0 removed
1750 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1750 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1751 $ hg -R http-clone st
1751 $ hg -R http-clone st
1752 ! f1
1752 ! f1
1753 $ hg -R http-clone up -Cqr null
1753 $ hg -R http-clone up -Cqr null
1754
1754
1755 largefiles pulled on update - a largefile corrupted on the server:
1755 largefiles pulled on update - a largefile corrupted on the server:
1756 $ echo corruption > empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90
1756 $ echo corruption > empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90
1757 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1757 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1758 getting changed largefiles
1758 getting changed largefiles
1759 f1: data corruption (expected 02a439e5c31c526465ab1a0ca1f431f76b827b90, got 6a7bb2556144babe3899b25e5428123735bb1e27)
1759 f1: data corruption (expected 02a439e5c31c526465ab1a0ca1f431f76b827b90, got 6a7bb2556144babe3899b25e5428123735bb1e27)
1760 0 largefiles updated, 0 removed
1760 0 largefiles updated, 0 removed
1761 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1761 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1762 $ hg -R http-clone st
1762 $ hg -R http-clone st
1763 ! f1
1763 ! f1
1764 $ [ ! -f http-clone/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1764 $ [ ! -f http-clone/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1765 $ [ ! -f http-clone/f1 ]
1765 $ [ ! -f http-clone/f1 ]
1766 $ [ ! -f http-clone-usercache ]
1766 $ [ ! -f http-clone-usercache ]
1767 $ hg -R http-clone verify --large --lfc
1767 $ hg -R http-clone verify --large --lfc
1768 checking changesets
1768 checking changesets
1769 checking manifests
1769 checking manifests
1770 crosschecking files in changesets and manifests
1770 crosschecking files in changesets and manifests
1771 checking files
1771 checking files
1772 1 files, 1 changesets, 1 total revisions
1772 1 files, 1 changesets, 1 total revisions
1773 searching 1 changesets for largefiles
1773 searching 1 changesets for largefiles
1774 verified contents of 1 revisions of 1 largefiles
1774 verified contents of 1 revisions of 1 largefiles
1775 $ hg -R http-clone up -Cqr null
1775 $ hg -R http-clone up -Cqr null
1776
1776
1777 largefiles pulled on update - no server side problems:
1777 largefiles pulled on update - no server side problems:
1778 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1778 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1779 $ hg -R http-clone --debug up --config largefiles.usercache=http-clone-usercache
1779 $ hg -R http-clone --debug up --config largefiles.usercache=http-clone-usercache
1780 resolving manifests
1780 resolving manifests
1781 branchmerge: False, force: False, partial: False
1781 branchmerge: False, force: False, partial: False
1782 ancestor: 000000000000, local: 000000000000+, remote: cf03e5bb9936
1782 ancestor: 000000000000, local: 000000000000+, remote: cf03e5bb9936
1783 .hglf/f1: remote created -> g
1783 .hglf/f1: remote created -> g
1784 getting .hglf/f1
1784 getting .hglf/f1
1785 updating: .hglf/f1 1/1 files (100.00%)
1785 updating: .hglf/f1 1/1 files (100.00%)
1786 getting changed largefiles
1786 getting changed largefiles
1787 using http://localhost:$HGPORT2/
1787 using http://localhost:$HGPORT2/
1788 sending capabilities command
1788 sending capabilities command
1789 sending batch command
1789 sending batch command
1790 getting largefiles: 0/1 lfile (0.00%)
1790 getting largefiles: 0/1 lfile (0.00%)
1791 getting f1:02a439e5c31c526465ab1a0ca1f431f76b827b90
1791 getting f1:02a439e5c31c526465ab1a0ca1f431f76b827b90
1792 sending getlfile command
1792 sending getlfile command
1793 found 02a439e5c31c526465ab1a0ca1f431f76b827b90 in store
1793 found 02a439e5c31c526465ab1a0ca1f431f76b827b90 in store
1794 1 largefiles updated, 0 removed
1794 1 largefiles updated, 0 removed
1795 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1795 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1796
1796
1797 $ ls http-clone-usercache/*
1797 $ ls http-clone-usercache/*
1798 http-clone-usercache/02a439e5c31c526465ab1a0ca1f431f76b827b90
1798 http-clone-usercache/02a439e5c31c526465ab1a0ca1f431f76b827b90
1799
1799
1800 $ rm -rf empty http-clone*
1800 $ rm -rf empty http-clone*
1801
1801
1802 used all HGPORTs, kill all daemons
1802 used all HGPORTs, kill all daemons
1803 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1803 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1804
1804
1805 #endif
1805 #endif
1806
1806
1807
1807
1808 #if unix-permissions
1808 #if unix-permissions
1809
1809
1810 Clone a local repository owned by another user
1810 Clone a local repository owned by another user
1811 We have to simulate that here by setting $HOME and removing write permissions
1811 We have to simulate that here by setting $HOME and removing write permissions
1812 $ ORIGHOME="$HOME"
1812 $ ORIGHOME="$HOME"
1813 $ mkdir alice
1813 $ mkdir alice
1814 $ HOME="`pwd`/alice"
1814 $ HOME="`pwd`/alice"
1815 $ cd alice
1815 $ cd alice
1816 $ hg init pubrepo
1816 $ hg init pubrepo
1817 $ cd pubrepo
1817 $ cd pubrepo
1818 $ dd if=/dev/zero bs=1k count=11k > a-large-file 2> /dev/null
1818 $ dd if=/dev/zero bs=1k count=11k > a-large-file 2> /dev/null
1819 $ hg add --large a-large-file
1819 $ hg add --large a-large-file
1820 $ hg commit -m "Add a large file"
1820 $ hg commit -m "Add a large file"
1821 Invoking status precommit hook
1821 Invoking status precommit hook
1822 A a-large-file
1822 A a-large-file
1823 $ cd ..
1823 $ cd ..
1824 $ chmod -R a-w pubrepo
1824 $ chmod -R a-w pubrepo
1825 $ cd ..
1825 $ cd ..
1826 $ mkdir bob
1826 $ mkdir bob
1827 $ HOME="`pwd`/bob"
1827 $ HOME="`pwd`/bob"
1828 $ cd bob
1828 $ cd bob
1829 $ hg clone --pull ../alice/pubrepo pubrepo
1829 $ hg clone --pull ../alice/pubrepo pubrepo
1830 requesting all changes
1830 requesting all changes
1831 adding changesets
1831 adding changesets
1832 adding manifests
1832 adding manifests
1833 adding file changes
1833 adding file changes
1834 added 1 changesets with 1 changes to 1 files
1834 added 1 changesets with 1 changes to 1 files
1835 updating to branch default
1835 updating to branch default
1836 getting changed largefiles
1836 getting changed largefiles
1837 1 largefiles updated, 0 removed
1837 1 largefiles updated, 0 removed
1838 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1838 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1839 $ cd ..
1839 $ cd ..
1840 $ chmod -R u+w alice/pubrepo
1840 $ chmod -R u+w alice/pubrepo
1841 $ HOME="$ORIGHOME"
1841 $ HOME="$ORIGHOME"
1842
1842
1843 #endif
1843 #endif
1844
1844
1845 #if symlink
1845 #if symlink
1846
1846
1847 Symlink to a large largefile should behave the same as a symlink to a normal file
1847 Symlink to a large largefile should behave the same as a symlink to a normal file
1848 $ hg init largesymlink
1848 $ hg init largesymlink
1849 $ cd largesymlink
1849 $ cd largesymlink
1850 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
1850 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
1851 $ hg add --large largefile
1851 $ hg add --large largefile
1852 $ hg commit -m "commit a large file"
1852 $ hg commit -m "commit a large file"
1853 Invoking status precommit hook
1853 Invoking status precommit hook
1854 A largefile
1854 A largefile
1855 $ ln -s largefile largelink
1855 $ ln -s largefile largelink
1856 $ hg add largelink
1856 $ hg add largelink
1857 $ hg commit -m "commit a large symlink"
1857 $ hg commit -m "commit a large symlink"
1858 Invoking status precommit hook
1858 Invoking status precommit hook
1859 A largelink
1859 A largelink
1860 $ rm -f largelink
1860 $ rm -f largelink
1861 $ hg up >/dev/null
1861 $ hg up >/dev/null
1862 $ test -f largelink
1862 $ test -f largelink
1863 [1]
1863 [1]
1864 $ test -L largelink
1864 $ test -L largelink
1865 [1]
1865 [1]
1866 $ rm -f largelink # make next part of the test independent of the previous
1866 $ rm -f largelink # make next part of the test independent of the previous
1867 $ hg up -C >/dev/null
1867 $ hg up -C >/dev/null
1868 $ test -f largelink
1868 $ test -f largelink
1869 $ test -L largelink
1869 $ test -L largelink
1870 $ cd ..
1870 $ cd ..
1871
1871
1872 #endif
1872 #endif
1873
1873
1874 test for pattern matching on 'hg status':
1874 test for pattern matching on 'hg status':
1875 to boost performance, largefiles checks whether specified patterns are
1875 to boost performance, largefiles checks whether specified patterns are
1876 related to largefiles in working directory (NOT to STANDIN) or not.
1876 related to largefiles in working directory (NOT to STANDIN) or not.
1877
1877
1878 $ hg init statusmatch
1878 $ hg init statusmatch
1879 $ cd statusmatch
1879 $ cd statusmatch
1880
1880
1881 $ mkdir -p a/b/c/d
1881 $ mkdir -p a/b/c/d
1882 $ echo normal > a/b/c/d/e.normal.txt
1882 $ echo normal > a/b/c/d/e.normal.txt
1883 $ hg add a/b/c/d/e.normal.txt
1883 $ hg add a/b/c/d/e.normal.txt
1884 $ echo large > a/b/c/d/e.large.txt
1884 $ echo large > a/b/c/d/e.large.txt
1885 $ hg add --large a/b/c/d/e.large.txt
1885 $ hg add --large a/b/c/d/e.large.txt
1886 $ mkdir -p a/b/c/x
1886 $ mkdir -p a/b/c/x
1887 $ echo normal > a/b/c/x/y.normal.txt
1887 $ echo normal > a/b/c/x/y.normal.txt
1888 $ hg add a/b/c/x/y.normal.txt
1888 $ hg add a/b/c/x/y.normal.txt
1889 $ hg commit -m 'add files'
1889 $ hg commit -m 'add files'
1890 Invoking status precommit hook
1890 Invoking status precommit hook
1891 A a/b/c/d/e.large.txt
1891 A a/b/c/d/e.large.txt
1892 A a/b/c/d/e.normal.txt
1892 A a/b/c/d/e.normal.txt
1893 A a/b/c/x/y.normal.txt
1893 A a/b/c/x/y.normal.txt
1894
1894
1895 (1) no pattern: no performance boost
1895 (1) no pattern: no performance boost
1896 $ hg status -A
1896 $ hg status -A
1897 C a/b/c/d/e.large.txt
1897 C a/b/c/d/e.large.txt
1898 C a/b/c/d/e.normal.txt
1898 C a/b/c/d/e.normal.txt
1899 C a/b/c/x/y.normal.txt
1899 C a/b/c/x/y.normal.txt
1900
1900
1901 (2) pattern not related to largefiles: performance boost
1901 (2) pattern not related to largefiles: performance boost
1902 $ hg status -A a/b/c/x
1902 $ hg status -A a/b/c/x
1903 C a/b/c/x/y.normal.txt
1903 C a/b/c/x/y.normal.txt
1904
1904
1905 (3) pattern related to largefiles: no performance boost
1905 (3) pattern related to largefiles: no performance boost
1906 $ hg status -A a/b/c/d
1906 $ hg status -A a/b/c/d
1907 C a/b/c/d/e.large.txt
1907 C a/b/c/d/e.large.txt
1908 C a/b/c/d/e.normal.txt
1908 C a/b/c/d/e.normal.txt
1909
1909
1910 (4) pattern related to STANDIN (not to largefiles): performance boost
1910 (4) pattern related to STANDIN (not to largefiles): performance boost
1911 $ hg status -A .hglf/a
1911 $ hg status -A .hglf/a
1912 C .hglf/a/b/c/d/e.large.txt
1912 C .hglf/a/b/c/d/e.large.txt
1913
1913
1914 (5) mixed case: no performance boost
1914 (5) mixed case: no performance boost
1915 $ hg status -A a/b/c/x a/b/c/d
1915 $ hg status -A a/b/c/x a/b/c/d
1916 C a/b/c/d/e.large.txt
1916 C a/b/c/d/e.large.txt
1917 C a/b/c/d/e.normal.txt
1917 C a/b/c/d/e.normal.txt
1918 C a/b/c/x/y.normal.txt
1918 C a/b/c/x/y.normal.txt
1919
1919
1920 verify that largefiles doesn't break filesets
1920 verify that largefiles doesn't break filesets
1921
1921
1922 $ hg log --rev . --exclude "set:binary()"
1922 $ hg log --rev . --exclude "set:binary()"
1923 changeset: 0:41bd42f10efa
1923 changeset: 0:41bd42f10efa
1924 tag: tip
1924 tag: tip
1925 user: test
1925 user: test
1926 date: Thu Jan 01 00:00:00 1970 +0000
1926 date: Thu Jan 01 00:00:00 1970 +0000
1927 summary: add files
1927 summary: add files
1928
1928
1929 verify that large files in subrepos handled properly
1929 verify that large files in subrepos handled properly
1930 $ hg init subrepo
1930 $ hg init subrepo
1931 $ echo "subrepo = subrepo" > .hgsub
1931 $ echo "subrepo = subrepo" > .hgsub
1932 $ hg add .hgsub
1932 $ hg add .hgsub
1933 $ hg ci -m "add subrepo"
1933 $ hg ci -m "add subrepo"
1934 Invoking status precommit hook
1934 Invoking status precommit hook
1935 A .hgsub
1935 A .hgsub
1936 ? .hgsubstate
1936 ? .hgsubstate
1937 $ echo "rev 1" > subrepo/large.txt
1937 $ echo "rev 1" > subrepo/large.txt
1938 $ hg -R subrepo add --large subrepo/large.txt
1938 $ hg -R subrepo add --large subrepo/large.txt
1939 $ hg sum
1939 $ hg sum
1940 parent: 1:8ee150ea2e9c tip
1940 parent: 1:8ee150ea2e9c tip
1941 add subrepo
1941 add subrepo
1942 branch: default
1942 branch: default
1943 commit: 1 subrepos
1943 commit: 1 subrepos
1944 update: (current)
1944 update: (current)
1945 $ hg st
1945 $ hg st
1946 $ hg st -S
1946 $ hg st -S
1947 A subrepo/large.txt
1947 A subrepo/large.txt
1948 $ hg ci -S -m "commit top repo"
1948 $ hg ci -S -m "commit top repo"
1949 committing subrepository subrepo
1949 committing subrepository subrepo
1950 Invoking status precommit hook
1950 Invoking status precommit hook
1951 A large.txt
1951 A large.txt
1952 Invoking status precommit hook
1952 Invoking status precommit hook
1953 M .hgsubstate
1953 M .hgsubstate
1954 # No differences
1954 # No differences
1955 $ hg st -S
1955 $ hg st -S
1956 $ hg sum
1956 $ hg sum
1957 parent: 2:ce4cd0c527a6 tip
1957 parent: 2:ce4cd0c527a6 tip
1958 commit top repo
1958 commit top repo
1959 branch: default
1959 branch: default
1960 commit: (clean)
1960 commit: (clean)
1961 update: (current)
1961 update: (current)
1962 $ echo "rev 2" > subrepo/large.txt
1962 $ echo "rev 2" > subrepo/large.txt
1963 $ hg st -S
1963 $ hg st -S
1964 M subrepo/large.txt
1964 M subrepo/large.txt
1965 $ hg sum
1965 $ hg sum
1966 parent: 2:ce4cd0c527a6 tip
1966 parent: 2:ce4cd0c527a6 tip
1967 commit top repo
1967 commit top repo
1968 branch: default
1968 branch: default
1969 commit: 1 subrepos
1969 commit: 1 subrepos
1970 update: (current)
1970 update: (current)
1971 $ hg ci -m "this commit should fail without -S"
1971 $ hg ci -m "this commit should fail without -S"
1972 abort: uncommitted changes in subrepo subrepo
1972 abort: uncommitted changes in subrepo subrepo
1973 (use --subrepos for recursive commit)
1973 (use --subrepos for recursive commit)
1974 [255]
1974 [255]
1975
1975
1976 Add a normal file to the subrepo, then test archiving
1976 Add a normal file to the subrepo, then test archiving
1977
1977
1978 $ echo 'normal file' > subrepo/normal.txt
1978 $ echo 'normal file' > subrepo/normal.txt
1979 $ hg -R subrepo add subrepo/normal.txt
1979 $ hg -R subrepo add subrepo/normal.txt
1980
1980
1981 Lock in subrepo, otherwise the change isn't archived
1981 Lock in subrepo, otherwise the change isn't archived
1982
1982
1983 $ hg ci -S -m "add normal file to top level"
1983 $ hg ci -S -m "add normal file to top level"
1984 committing subrepository subrepo
1984 committing subrepository subrepo
1985 Invoking status precommit hook
1985 Invoking status precommit hook
1986 M large.txt
1986 M large.txt
1987 A normal.txt
1987 A normal.txt
1988 Invoking status precommit hook
1988 Invoking status precommit hook
1989 M .hgsubstate
1989 M .hgsubstate
1990 $ hg archive -S ../lf_subrepo_archive
1990 $ hg archive -S ../lf_subrepo_archive
1991 $ find ../lf_subrepo_archive | sort
1991 $ find ../lf_subrepo_archive | sort
1992 ../lf_subrepo_archive
1992 ../lf_subrepo_archive
1993 ../lf_subrepo_archive/.hg_archival.txt
1993 ../lf_subrepo_archive/.hg_archival.txt
1994 ../lf_subrepo_archive/.hgsub
1994 ../lf_subrepo_archive/.hgsub
1995 ../lf_subrepo_archive/.hgsubstate
1995 ../lf_subrepo_archive/.hgsubstate
1996 ../lf_subrepo_archive/a
1996 ../lf_subrepo_archive/a
1997 ../lf_subrepo_archive/a/b
1997 ../lf_subrepo_archive/a/b
1998 ../lf_subrepo_archive/a/b/c
1998 ../lf_subrepo_archive/a/b/c
1999 ../lf_subrepo_archive/a/b/c/d
1999 ../lf_subrepo_archive/a/b/c/d
2000 ../lf_subrepo_archive/a/b/c/d/e.large.txt
2000 ../lf_subrepo_archive/a/b/c/d/e.large.txt
2001 ../lf_subrepo_archive/a/b/c/d/e.normal.txt
2001 ../lf_subrepo_archive/a/b/c/d/e.normal.txt
2002 ../lf_subrepo_archive/a/b/c/x
2002 ../lf_subrepo_archive/a/b/c/x
2003 ../lf_subrepo_archive/a/b/c/x/y.normal.txt
2003 ../lf_subrepo_archive/a/b/c/x/y.normal.txt
2004 ../lf_subrepo_archive/subrepo
2004 ../lf_subrepo_archive/subrepo
2005 ../lf_subrepo_archive/subrepo/large.txt
2005 ../lf_subrepo_archive/subrepo/large.txt
2006 ../lf_subrepo_archive/subrepo/normal.txt
2006 ../lf_subrepo_archive/subrepo/normal.txt
2007
2007
2008 Test update with subrepos.
2008 Test update with subrepos.
2009
2009
2010 $ hg update 0
2010 $ hg update 0
2011 getting changed largefiles
2011 getting changed largefiles
2012 0 largefiles updated, 1 removed
2012 0 largefiles updated, 1 removed
2013 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
2013 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
2014 $ hg status -S
2014 $ hg status -S
2015 $ hg update tip
2015 $ hg update tip
2016 getting changed largefiles
2016 getting changed largefiles
2017 1 largefiles updated, 0 removed
2017 1 largefiles updated, 0 removed
2018 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
2018 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
2019 $ hg status -S
2019 $ hg status -S
2020 # modify a large file
2020 # modify a large file
2021 $ echo "modified" > subrepo/large.txt
2021 $ echo "modified" > subrepo/large.txt
2022 $ hg st -S
2022 $ hg st -S
2023 M subrepo/large.txt
2023 M subrepo/large.txt
2024 # update -C should revert the change.
2024 # update -C should revert the change.
2025 $ hg update -C
2025 $ hg update -C
2026 getting changed largefiles
2026 getting changed largefiles
2027 1 largefiles updated, 0 removed
2027 1 largefiles updated, 0 removed
2028 getting changed largefiles
2028 getting changed largefiles
2029 0 largefiles updated, 0 removed
2029 0 largefiles updated, 0 removed
2030 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2030 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2031 $ hg status -S
2031 $ hg status -S
2032
2032
2033 Test archiving a revision that references a subrepo that is not yet
2033 Test archiving a revision that references a subrepo that is not yet
2034 cloned (see test-subrepo-recursion.t):
2034 cloned (see test-subrepo-recursion.t):
2035
2035
2036 $ hg clone -U . ../empty
2036 $ hg clone -U . ../empty
2037 $ cd ../empty
2037 $ cd ../empty
2038 $ hg archive --subrepos -r tip ../archive.tar.gz
2038 $ hg archive --subrepos -r tip ../archive.tar.gz
2039 cloning subrepo subrepo from $TESTTMP/statusmatch/subrepo
2039 cloning subrepo subrepo from $TESTTMP/statusmatch/subrepo
2040 $ cd ..
2040 $ cd ..
2041
2041
2042 Test that addremove picks up largefiles prior to the initial commit (issue3541)
2042 Test that addremove picks up largefiles prior to the initial commit (issue3541)
2043
2043
2044 $ hg init addrm2
2044 $ hg init addrm2
2045 $ cd addrm2
2045 $ cd addrm2
2046 $ touch large.dat
2046 $ touch large.dat
2047 $ touch large2.dat
2047 $ touch large2.dat
2048 $ touch normal
2048 $ touch normal
2049 $ hg add --large large.dat
2049 $ hg add --large large.dat
2050 $ hg addremove -v
2050 $ hg addremove -v
2051 adding large2.dat as a largefile
2051 adding large2.dat as a largefile
2052 adding normal
2052 adding normal
2053
2053
2054 Test that forgetting all largefiles reverts to islfilesrepo() == False
2054 Test that forgetting all largefiles reverts to islfilesrepo() == False
2055 (addremove will add *.dat as normal files now)
2055 (addremove will add *.dat as normal files now)
2056 $ hg forget large.dat
2056 $ hg forget large.dat
2057 $ hg forget large2.dat
2057 $ hg forget large2.dat
2058 $ hg addremove -v
2058 $ hg addremove -v
2059 adding large.dat
2059 adding large.dat
2060 adding large2.dat
2060 adding large2.dat
2061
2061
2062 Test commit's addremove option prior to the first commit
2062 Test commit's addremove option prior to the first commit
2063 $ hg forget large.dat
2063 $ hg forget large.dat
2064 $ hg forget large2.dat
2064 $ hg forget large2.dat
2065 $ hg add --large large.dat
2065 $ hg add --large large.dat
2066 $ hg ci -Am "commit"
2066 $ hg ci -Am "commit"
2067 adding large2.dat as a largefile
2067 adding large2.dat as a largefile
2068 Invoking status precommit hook
2068 Invoking status precommit hook
2069 A large.dat
2069 A large.dat
2070 A large2.dat
2070 A large2.dat
2071 A normal
2071 A normal
2072 $ find .hglf | sort
2072 $ find .hglf | sort
2073 .hglf
2073 .hglf
2074 .hglf/large.dat
2074 .hglf/large.dat
2075 .hglf/large2.dat
2075 .hglf/large2.dat
2076
2076
2077 Test actions on largefiles using relative paths from subdir
2077 Test actions on largefiles using relative paths from subdir
2078
2078
2079 $ mkdir sub
2079 $ mkdir sub
2080 $ cd sub
2080 $ cd sub
2081 $ echo anotherlarge > anotherlarge
2081 $ echo anotherlarge > anotherlarge
2082 $ hg add --large anotherlarge
2082 $ hg add --large anotherlarge
2083 $ hg st
2083 $ hg st
2084 A sub/anotherlarge
2084 A sub/anotherlarge
2085 $ hg st anotherlarge
2085 $ hg st anotherlarge
2086 A anotherlarge
2086 A anotherlarge
2087 $ hg commit -m anotherlarge anotherlarge
2087 $ hg commit -m anotherlarge anotherlarge
2088 Invoking status precommit hook
2088 Invoking status precommit hook
2089 A sub/anotherlarge
2089 A sub/anotherlarge
2090 $ hg log anotherlarge
2090 $ hg log anotherlarge
2091 changeset: 1:9627a577c5e9
2091 changeset: 1:9627a577c5e9
2092 tag: tip
2092 tag: tip
2093 user: test
2093 user: test
2094 date: Thu Jan 01 00:00:00 1970 +0000
2094 date: Thu Jan 01 00:00:00 1970 +0000
2095 summary: anotherlarge
2095 summary: anotherlarge
2096
2096
2097 $ echo more >> anotherlarge
2097 $ echo more >> anotherlarge
2098 $ hg st .
2098 $ hg st .
2099 M anotherlarge
2099 M anotherlarge
2100 $ hg cat anotherlarge
2100 $ hg cat anotherlarge
2101 anotherlarge
2101 anotherlarge
2102 $ hg revert anotherlarge
2102 $ hg revert anotherlarge
2103 $ hg st
2103 $ hg st
2104 ? sub/anotherlarge.orig
2104 ? sub/anotherlarge.orig
2105 $ cd ..
2105 $ cd ..
2106
2106
2107 $ cd ..
2107 $ cd ..
2108
2108
2109 issue3651: summary/outgoing with largefiles shows "no remote repo"
2109 issue3651: summary/outgoing with largefiles shows "no remote repo"
2110 unexpectedly
2110 unexpectedly
2111
2111
2112 $ mkdir issue3651
2112 $ mkdir issue3651
2113 $ cd issue3651
2113 $ cd issue3651
2114
2114
2115 $ hg init src
2115 $ hg init src
2116 $ echo a > src/a
2116 $ echo a > src/a
2117 $ hg -R src add --large src/a
2117 $ hg -R src add --large src/a
2118 $ hg -R src commit -m '#0'
2118 $ hg -R src commit -m '#0'
2119 Invoking status precommit hook
2119 Invoking status precommit hook
2120 A a
2120 A a
2121
2121
2122 check messages when no remote repository is specified:
2122 check messages when no remote repository is specified:
2123 "no remote repo" route for "hg outgoing --large" is not tested here,
2123 "no remote repo" route for "hg outgoing --large" is not tested here,
2124 because it can't be reproduced easily.
2124 because it can't be reproduced easily.
2125
2125
2126 $ hg init clone1
2126 $ hg init clone1
2127 $ hg -R clone1 -q pull src
2127 $ hg -R clone1 -q pull src
2128 $ hg -R clone1 -q update
2128 $ hg -R clone1 -q update
2129 $ hg -R clone1 paths | grep default
2129 $ hg -R clone1 paths | grep default
2130 [1]
2130 [1]
2131
2131
2132 $ hg -R clone1 summary --large
2132 $ hg -R clone1 summary --large
2133 parent: 0:fc0bd45326d3 tip
2133 parent: 0:fc0bd45326d3 tip
2134 #0
2134 #0
2135 branch: default
2135 branch: default
2136 commit: (clean)
2136 commit: (clean)
2137 update: (current)
2137 update: (current)
2138 largefiles: (no remote repo)
2138 largefiles: (no remote repo)
2139
2139
2140 check messages when there is no files to upload:
2140 check messages when there is no files to upload:
2141
2141
2142 $ hg -q clone src clone2
2142 $ hg -q clone src clone2
2143 $ hg -R clone2 paths | grep default
2143 $ hg -R clone2 paths | grep default
2144 default = $TESTTMP/issue3651/src (glob)
2144 default = $TESTTMP/issue3651/src (glob)
2145
2145
2146 $ hg -R clone2 summary --large
2146 $ hg -R clone2 summary --large
2147 parent: 0:fc0bd45326d3 tip
2147 parent: 0:fc0bd45326d3 tip
2148 #0
2148 #0
2149 branch: default
2149 branch: default
2150 commit: (clean)
2150 commit: (clean)
2151 update: (current)
2151 update: (current)
2152 searching for changes
2152 searching for changes
2153 largefiles: (no files to upload)
2153 largefiles: (no files to upload)
2154 $ hg -R clone2 outgoing --large
2154 $ hg -R clone2 outgoing --large
2155 comparing with $TESTTMP/issue3651/src (glob)
2155 comparing with $TESTTMP/issue3651/src (glob)
2156 searching for changes
2156 searching for changes
2157 no changes found
2157 no changes found
2158 searching for changes
2158 searching for changes
2159 largefiles: no files to upload
2159 largefiles: no files to upload
2160 [1]
2160 [1]
2161
2161
2162 check messages when there are files to upload:
2162 check messages when there are files to upload:
2163
2163
2164 $ echo b > clone2/b
2164 $ echo b > clone2/b
2165 $ hg -R clone2 add --large clone2/b
2165 $ hg -R clone2 add --large clone2/b
2166 $ hg -R clone2 commit -m '#1'
2166 $ hg -R clone2 commit -m '#1'
2167 Invoking status precommit hook
2167 Invoking status precommit hook
2168 A b
2168 A b
2169 $ hg -R clone2 summary --large
2169 $ hg -R clone2 summary --large
2170 parent: 1:1acbe71ce432 tip
2170 parent: 1:1acbe71ce432 tip
2171 #1
2171 #1
2172 branch: default
2172 branch: default
2173 commit: (clean)
2173 commit: (clean)
2174 update: (current)
2174 update: (current)
2175 searching for changes
2175 searching for changes
2176 largefiles: 1 to upload
2176 largefiles: 1 to upload
2177 $ hg -R clone2 outgoing --large
2177 $ hg -R clone2 outgoing --large
2178 comparing with $TESTTMP/issue3651/src (glob)
2178 comparing with $TESTTMP/issue3651/src (glob)
2179 searching for changes
2179 searching for changes
2180 changeset: 1:1acbe71ce432
2180 changeset: 1:1acbe71ce432
2181 tag: tip
2181 tag: tip
2182 user: test
2182 user: test
2183 date: Thu Jan 01 00:00:00 1970 +0000
2183 date: Thu Jan 01 00:00:00 1970 +0000
2184 summary: #1
2184 summary: #1
2185
2185
2186 searching for changes
2186 searching for changes
2187 largefiles to upload:
2187 largefiles to upload:
2188 b
2188 b
2189
2189
2190
2190
2191 $ cd ..
2191 $ cd ..
@@ -1,350 +1,350
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
2 $ mkdir "${USERCACHE}"
2 $ mkdir "${USERCACHE}"
3 $ cat >> $HGRCPATH <<EOF
3 $ cat >> $HGRCPATH <<EOF
4 > [extensions]
4 > [extensions]
5 > largefiles =
5 > largefiles =
6 > share =
6 > share =
7 > graphlog =
7 > graphlog =
8 > mq =
8 > mq =
9 > convert =
9 > convert =
10 > [largefiles]
10 > [largefiles]
11 > minsize = 0.5
11 > minsize = 0.5
12 > patterns = **.other
12 > patterns = **.other
13 > **.dat
13 > **.dat
14 > usercache=${USERCACHE}
14 > usercache=${USERCACHE}
15 > EOF
15 > EOF
16
16
17 "lfconvert" works
17 "lfconvert" works
18 $ hg init bigfile-repo
18 $ hg init bigfile-repo
19 $ cd bigfile-repo
19 $ cd bigfile-repo
20 $ cat >> .hg/hgrc <<EOF
20 $ cat >> .hg/hgrc <<EOF
21 > [extensions]
21 > [extensions]
22 > largefiles = !
22 > largefiles = !
23 > EOF
23 > EOF
24 $ mkdir sub
24 $ mkdir sub
25 $ dd if=/dev/zero bs=1k count=256 > large 2> /dev/null
25 $ dd if=/dev/zero bs=1k count=256 > large 2> /dev/null
26 $ dd if=/dev/zero bs=1k count=256 > large2 2> /dev/null
26 $ dd if=/dev/zero bs=1k count=256 > large2 2> /dev/null
27 $ echo normal > normal1
27 $ echo normal > normal1
28 $ echo alsonormal > sub/normal2
28 $ echo alsonormal > sub/normal2
29 $ dd if=/dev/zero bs=1k count=10 > sub/maybelarge.dat 2> /dev/null
29 $ dd if=/dev/zero bs=1k count=10 > sub/maybelarge.dat 2> /dev/null
30 $ hg addremove
30 $ hg addremove
31 adding large
31 adding large
32 adding large2
32 adding large2
33 adding normal1
33 adding normal1
34 adding sub/maybelarge.dat
34 adding sub/maybelarge.dat
35 adding sub/normal2
35 adding sub/normal2
36 $ hg commit -m"add large, normal1" large normal1
36 $ hg commit -m"add large, normal1" large normal1
37 $ hg commit -m"add sub/*" sub
37 $ hg commit -m"add sub/*" sub
38
38
39 Test tag parsing
39 Test tag parsing
40 $ cat >> .hgtags <<EOF
40 $ cat >> .hgtags <<EOF
41 > IncorrectlyFormattedTag!
41 > IncorrectlyFormattedTag!
42 > invalidhash sometag
42 > invalidhash sometag
43 > 0123456789abcdef anothertag
43 > 0123456789abcdef anothertag
44 > EOF
44 > EOF
45 $ hg add .hgtags
45 $ hg add .hgtags
46 $ hg commit -m"add large2" large2 .hgtags
46 $ hg commit -m"add large2" large2 .hgtags
47
47
48 Test link+rename largefile codepath
48 Test link+rename largefile codepath
49 $ [ -d .hg/largefiles ] && echo fail || echo pass
49 $ [ -d .hg/largefiles ] && echo fail || echo pass
50 pass
50 pass
51 $ cd ..
51 $ cd ..
52 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
52 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
53 initializing destination largefiles-repo
53 initializing destination largefiles-repo
54 skipping incorrectly formatted tag IncorrectlyFormattedTag!
54 skipping incorrectly formatted tag IncorrectlyFormattedTag!
55 skipping incorrectly formatted id invalidhash
55 skipping incorrectly formatted id invalidhash
56 no mapping for id 0123456789abcdef
56 no mapping for id 0123456789abcdef
57 #if symlink
57 #if symlink
58 $ hg --cwd bigfile-repo rename large2 large3
58 $ hg --cwd bigfile-repo rename large2 large3
59 $ ln -sf large bigfile-repo/large3
59 $ ln -sf large bigfile-repo/large3
60 $ hg --cwd bigfile-repo commit -m"make large2 a symlink" large2 large3
60 $ hg --cwd bigfile-repo commit -m"make large2 a symlink" large2 large3
61 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo-symlink
61 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo-symlink
62 initializing destination largefiles-repo-symlink
62 initializing destination largefiles-repo-symlink
63 skipping incorrectly formatted tag IncorrectlyFormattedTag!
63 skipping incorrectly formatted tag IncorrectlyFormattedTag!
64 skipping incorrectly formatted id invalidhash
64 skipping incorrectly formatted id invalidhash
65 no mapping for id 0123456789abcdef
65 no mapping for id 0123456789abcdef
66 abort: renamed/copied largefile large3 becomes symlink
66 abort: renamed/copied largefile large3 becomes symlink
67 [255]
67 [255]
68 #endif
68 #endif
69 $ cd bigfile-repo
69 $ cd bigfile-repo
70 $ hg strip --no-backup 2
70 $ hg strip --no-backup 2
71 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
71 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
72 $ cd ..
72 $ cd ..
73 $ rm -rf largefiles-repo largefiles-repo-symlink
73 $ rm -rf largefiles-repo largefiles-repo-symlink
74
74
75 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
75 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
76 initializing destination largefiles-repo
76 initializing destination largefiles-repo
77
77
78 "lfconvert" converts content correctly
78 "lfconvert" converts content correctly
79 $ cd largefiles-repo
79 $ cd largefiles-repo
80 $ hg up
80 $ hg up
81 getting changed largefiles
81 getting changed largefiles
82 2 largefiles updated, 0 removed
82 2 largefiles updated, 0 removed
83 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
84 $ hg locate
84 $ hg locate
85 .hglf/large
85 .hglf/large
86 .hglf/sub/maybelarge.dat
86 .hglf/sub/maybelarge.dat
87 normal1
87 normal1
88 sub/normal2
88 sub/normal2
89 $ cat normal1
89 $ cat normal1
90 normal
90 normal
91 $ cat sub/normal2
91 $ cat sub/normal2
92 alsonormal
92 alsonormal
93 $ "$TESTDIR/md5sum.py" large sub/maybelarge.dat
93 $ "$TESTDIR/md5sum.py" large sub/maybelarge.dat
94 ec87a838931d4d5d2e94a04644788a55 large
94 ec87a838931d4d5d2e94a04644788a55 large
95 1276481102f218c981e0324180bafd9f sub/maybelarge.dat
95 1276481102f218c981e0324180bafd9f sub/maybelarge.dat
96
96
97 "lfconvert" adds 'largefiles' to .hg/requires.
97 "lfconvert" adds 'largefiles' to .hg/requires.
98 $ cat .hg/requires
98 $ cat .hg/requires
99 dotencode
99 dotencode
100 fncache
100 fncache
101 largefiles
101 largefiles
102 revlogv1
102 revlogv1
103 store
103 store
104
104
105 "lfconvert" includes a newline at the end of the standin files.
105 "lfconvert" includes a newline at the end of the standin files.
106 $ cat .hglf/large .hglf/sub/maybelarge.dat
106 $ cat .hglf/large .hglf/sub/maybelarge.dat
107 2e000fa7e85759c7f4c254d4d9c33ef481e459a7
107 2e000fa7e85759c7f4c254d4d9c33ef481e459a7
108 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
108 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
109 $ cd ..
109 $ cd ..
110
110
111 add some changesets to rename/remove/merge
111 add some changesets to rename/remove/merge
112 $ cd bigfile-repo
112 $ cd bigfile-repo
113 $ hg mv -q sub stuff
113 $ hg mv -q sub stuff
114 $ hg commit -m"rename sub/ to stuff/"
114 $ hg commit -m"rename sub/ to stuff/"
115 $ hg update -q 1
115 $ hg update -q 1
116 $ echo blah >> normal3
116 $ echo blah >> normal3
117 $ echo blah >> sub/normal2
117 $ echo blah >> sub/normal2
118 $ echo blah >> sub/maybelarge.dat
118 $ echo blah >> sub/maybelarge.dat
119 $ "$TESTDIR/md5sum.py" sub/maybelarge.dat
119 $ "$TESTDIR/md5sum.py" sub/maybelarge.dat
120 1dd0b99ff80e19cff409702a1d3f5e15 sub/maybelarge.dat
120 1dd0b99ff80e19cff409702a1d3f5e15 sub/maybelarge.dat
121 $ hg commit -A -m"add normal3, modify sub/*"
121 $ hg commit -A -m"add normal3, modify sub/*"
122 adding normal3
122 adding normal3
123 created new head
123 created new head
124 $ hg rm large normal3
124 $ hg rm large normal3
125 $ hg commit -q -m"remove large, normal3"
125 $ hg commit -q -m"remove large, normal3"
126 $ hg merge
126 $ hg merge
127 merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat
127 merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat
128 warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob)
128 warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob)
129 merging stuff/maybelarge.dat incomplete! (edit conflicts, then use 'hg resolve --mark')
129 merging stuff/maybelarge.dat incomplete! (edit conflicts, then use 'hg resolve --mark')
130 merging sub/normal2 and stuff/normal2 to stuff/normal2
130 merging sub/normal2 and stuff/normal2 to stuff/normal2
131 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
131 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
132 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
132 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
133 [1]
133 [1]
134 $ hg cat -r . sub/maybelarge.dat > stuff/maybelarge.dat
134 $ hg cat -r . sub/maybelarge.dat > stuff/maybelarge.dat
135 $ hg resolve -m stuff/maybelarge.dat
135 $ hg resolve -m stuff/maybelarge.dat
136 $ hg commit -m"merge"
136 $ hg commit -m"merge"
137 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
137 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
138 @ 5:4884f215abda merge
138 @ 5:4884f215abda merge
139 |\
139 |\
140 | o 4:7285f817b77e remove large, normal3
140 | o 4:7285f817b77e remove large, normal3
141 | |
141 | |
142 | o 3:67e3892e3534 add normal3, modify sub/*
142 | o 3:67e3892e3534 add normal3, modify sub/*
143 | |
143 | |
144 o | 2:c96c8beb5d56 rename sub/ to stuff/
144 o | 2:c96c8beb5d56 rename sub/ to stuff/
145 |/
145 |/
146 o 1:020c65d24e11 add sub/*
146 o 1:020c65d24e11 add sub/*
147 |
147 |
148 o 0:117b8328f97a add large, normal1
148 o 0:117b8328f97a add large, normal1
149
149
150 $ cd ..
150 $ cd ..
151
151
152 lfconvert with rename, merge, and remove
152 lfconvert with rename, merge, and remove
153 $ rm -rf largefiles-repo
153 $ rm -rf largefiles-repo
154 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
154 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
155 initializing destination largefiles-repo
155 initializing destination largefiles-repo
156 $ cd largefiles-repo
156 $ cd largefiles-repo
157 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
157 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
158 o 5:8e05f5f2b77e merge
158 o 5:8e05f5f2b77e merge
159 |\
159 |\
160 | o 4:a5a02de7a8e4 remove large, normal3
160 | o 4:a5a02de7a8e4 remove large, normal3
161 | |
161 | |
162 | o 3:55759520c76f add normal3, modify sub/*
162 | o 3:55759520c76f add normal3, modify sub/*
163 | |
163 | |
164 o | 2:261ad3f3f037 rename sub/ to stuff/
164 o | 2:261ad3f3f037 rename sub/ to stuff/
165 |/
165 |/
166 o 1:334e5237836d add sub/*
166 o 1:334e5237836d add sub/*
167 |
167 |
168 o 0:d4892ec57ce2 add large, normal1
168 o 0:d4892ec57ce2 add large, normal1
169
169
170 $ hg locate -r 2
170 $ hg locate -r 2
171 .hglf/large
171 .hglf/large
172 .hglf/stuff/maybelarge.dat
172 .hglf/stuff/maybelarge.dat
173 normal1
173 normal1
174 stuff/normal2
174 stuff/normal2
175 $ hg locate -r 3
175 $ hg locate -r 3
176 .hglf/large
176 .hglf/large
177 .hglf/sub/maybelarge.dat
177 .hglf/sub/maybelarge.dat
178 normal1
178 normal1
179 normal3
179 normal3
180 sub/normal2
180 sub/normal2
181 $ hg locate -r 4
181 $ hg locate -r 4
182 .hglf/sub/maybelarge.dat
182 .hglf/sub/maybelarge.dat
183 normal1
183 normal1
184 sub/normal2
184 sub/normal2
185 $ hg locate -r 5
185 $ hg locate -r 5
186 .hglf/stuff/maybelarge.dat
186 .hglf/stuff/maybelarge.dat
187 normal1
187 normal1
188 stuff/normal2
188 stuff/normal2
189 $ hg update
189 $ hg update
190 getting changed largefiles
190 getting changed largefiles
191 1 largefiles updated, 0 removed
191 1 largefiles updated, 0 removed
192 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
192 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
193 $ cat stuff/normal2
193 $ cat stuff/normal2
194 alsonormal
194 alsonormal
195 blah
195 blah
196 $ "$TESTDIR/md5sum.py" stuff/maybelarge.dat
196 $ "$TESTDIR/md5sum.py" stuff/maybelarge.dat
197 1dd0b99ff80e19cff409702a1d3f5e15 stuff/maybelarge.dat
197 1dd0b99ff80e19cff409702a1d3f5e15 stuff/maybelarge.dat
198 $ cat .hglf/stuff/maybelarge.dat
198 $ cat .hglf/stuff/maybelarge.dat
199 76236b6a2c6102826c61af4297dd738fb3b1de38
199 76236b6a2c6102826c61af4297dd738fb3b1de38
200 $ cd ..
200 $ cd ..
201
201
202 "lfconvert" error cases
202 "lfconvert" error cases
203 $ hg lfconvert http://localhost/foo foo
203 $ hg lfconvert http://localhost/foo foo
204 abort: http://localhost/foo is not a local Mercurial repo
204 abort: http://localhost/foo is not a local Mercurial repo
205 [255]
205 [255]
206 $ hg lfconvert foo ssh://localhost/foo
206 $ hg lfconvert foo ssh://localhost/foo
207 abort: ssh://localhost/foo is not a local Mercurial repo
207 abort: ssh://localhost/foo is not a local Mercurial repo
208 [255]
208 [255]
209 $ hg lfconvert nosuchrepo foo
209 $ hg lfconvert nosuchrepo foo
210 abort: repository nosuchrepo not found!
210 abort: repository nosuchrepo not found!
211 [255]
211 [255]
212 $ hg share -q -U bigfile-repo shared
212 $ hg share -q -U bigfile-repo shared
213 $ printf 'bogus' > shared/.hg/sharedpath
213 $ printf 'bogus' > shared/.hg/sharedpath
214 $ hg lfconvert shared foo
214 $ hg lfconvert shared foo
215 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! (glob)
215 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! (glob)
216 [255]
216 [255]
217 $ hg lfconvert bigfile-repo largefiles-repo
217 $ hg lfconvert bigfile-repo largefiles-repo
218 initializing destination largefiles-repo
218 initializing destination largefiles-repo
219 abort: repository largefiles-repo already exists!
219 abort: repository largefiles-repo already exists!
220 [255]
220 [255]
221
221
222 add another largefile to the new largefiles repo
222 add another largefile to the new largefiles repo
223 $ cd largefiles-repo
223 $ cd largefiles-repo
224 $ dd if=/dev/zero bs=1k count=1k > anotherlarge 2> /dev/null
224 $ dd if=/dev/zero bs=1k count=1k > anotherlarge 2> /dev/null
225 $ hg add --lfsize=1 anotherlarge
225 $ hg add --lfsize=1 anotherlarge
226 $ hg commit -m "add anotherlarge (should be a largefile)"
226 $ hg commit -m "add anotherlarge (should be a largefile)"
227 $ cat .hglf/anotherlarge
227 $ cat .hglf/anotherlarge
228 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
228 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
229 $ cd ..
229 $ cd ..
230
230
231 round-trip: converting back to a normal (non-largefiles) repo with
231 round-trip: converting back to a normal (non-largefiles) repo with
232 "lfconvert --to-normal" should give the same as ../bigfile-repo
232 "lfconvert --to-normal" should give the same as ../bigfile-repo
233 $ cd largefiles-repo
233 $ cd largefiles-repo
234 $ hg lfconvert --to-normal . ../normal-repo
234 $ hg lfconvert --to-normal . ../normal-repo
235 initializing destination ../normal-repo
235 initializing destination ../normal-repo
236 $ cd ../normal-repo
236 $ cd ../normal-repo
237 $ cat >> .hg/hgrc <<EOF
237 $ cat >> .hg/hgrc <<EOF
238 > [extensions]
238 > [extensions]
239 > largefiles = !
239 > largefiles = !
240 > EOF
240 > EOF
241
241
242 # Hmmm: the changeset ID for rev 5 is different from the original
242 # Hmmm: the changeset ID for rev 5 is different from the original
243 # normal repo (../bigfile-repo), because the changelog filelist
243 # normal repo (../bigfile-repo), because the changelog filelist
244 # differs between the two incarnations of rev 5: this repo includes
244 # differs between the two incarnations of rev 5: this repo includes
245 # 'large' in the list, but ../bigfile-repo does not. Since rev 5
245 # 'large' in the list, but ../bigfile-repo does not. Since rev 5
246 # removes 'large' relative to the first parent in both repos, it seems
246 # removes 'large' relative to the first parent in both repos, it seems
247 # to me that lfconvert is doing a *better* job than
247 # to me that lfconvert is doing a *better* job than
248 # "hg remove" + "hg merge" + "hg commit".
248 # "hg remove" + "hg merge" + "hg commit".
249 # $ hg -R ../bigfile-repo debugdata -c 5
249 # $ hg -R ../bigfile-repo debugdata -c 5
250 # $ hg debugdata -c 5
250 # $ hg debugdata -c 5
251 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
251 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
252 o 6:1635824e6f59 add anotherlarge (should be a largefile)
252 o 6:1635824e6f59 add anotherlarge (should be a largefile)
253 |
253 |
254 o 5:7215f8deeaaf merge
254 o 5:7215f8deeaaf merge
255 |\
255 |\
256 | o 4:7285f817b77e remove large, normal3
256 | o 4:7285f817b77e remove large, normal3
257 | |
257 | |
258 | o 3:67e3892e3534 add normal3, modify sub/*
258 | o 3:67e3892e3534 add normal3, modify sub/*
259 | |
259 | |
260 o | 2:c96c8beb5d56 rename sub/ to stuff/
260 o | 2:c96c8beb5d56 rename sub/ to stuff/
261 |/
261 |/
262 o 1:020c65d24e11 add sub/*
262 o 1:020c65d24e11 add sub/*
263 |
263 |
264 o 0:117b8328f97a add large, normal1
264 o 0:117b8328f97a add large, normal1
265
265
266 $ hg update
266 $ hg update
267 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
267 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
268 $ hg locate
268 $ hg locate
269 anotherlarge
269 anotherlarge
270 normal1
270 normal1
271 stuff/maybelarge.dat
271 stuff/maybelarge.dat
272 stuff/normal2
272 stuff/normal2
273 $ [ -d .hg/largefiles ] && echo fail || echo pass
273 $ [ -d .hg/largefiles ] && echo fail || echo pass
274 pass
274 pass
275
275
276 $ cd ..
276 $ cd ..
277
277
278 Clearing the usercache ensures that commitctx doesn't try to cache largefiles
278 Clearing the usercache ensures that commitctx doesn't try to cache largefiles
279 from the working dir on a convert.
279 from the working dir on a convert.
280 $ rm "${USERCACHE}"/*
280 $ rm "${USERCACHE}"/*
281 $ hg convert largefiles-repo
281 $ hg convert largefiles-repo
282 assuming destination largefiles-repo-hg
282 assuming destination largefiles-repo-hg
283 initializing destination largefiles-repo-hg repository
283 initializing destination largefiles-repo-hg repository
284 scanning source...
284 scanning source...
285 sorting...
285 sorting...
286 converting...
286 converting...
287 6 add large, normal1
287 6 add large, normal1
288 5 add sub/*
288 5 add sub/*
289 4 rename sub/ to stuff/
289 4 rename sub/ to stuff/
290 3 add normal3, modify sub/*
290 3 add normal3, modify sub/*
291 2 remove large, normal3
291 2 remove large, normal3
292 1 merge
292 1 merge
293 0 add anotherlarge (should be a largefile)
293 0 add anotherlarge (should be a largefile)
294
294
295 $ hg -R largefiles-repo-hg glog --template "{rev}:{node|short} {desc|firstline}\n"
295 $ hg -R largefiles-repo-hg glog --template "{rev}:{node|short} {desc|firstline}\n"
296 o 6:17126745edfd add anotherlarge (should be a largefile)
296 o 6:17126745edfd add anotherlarge (should be a largefile)
297 |
297 |
298 o 5:9cc5aa7204f0 merge
298 o 5:9cc5aa7204f0 merge
299 |\
299 |\
300 | o 4:a5a02de7a8e4 remove large, normal3
300 | o 4:a5a02de7a8e4 remove large, normal3
301 | |
301 | |
302 | o 3:55759520c76f add normal3, modify sub/*
302 | o 3:55759520c76f add normal3, modify sub/*
303 | |
303 | |
304 o | 2:261ad3f3f037 rename sub/ to stuff/
304 o | 2:261ad3f3f037 rename sub/ to stuff/
305 |/
305 |/
306 o 1:334e5237836d add sub/*
306 o 1:334e5237836d add sub/*
307 |
307 |
308 o 0:d4892ec57ce2 add large, normal1
308 o 0:d4892ec57ce2 add large, normal1
309
309
310 Verify will fail (for now) if the usercache is purged before converting, since
310 Verify will fail (for now) if the usercache is purged before converting, since
311 largefiles are not cached in the converted repo's local store by the conversion
311 largefiles are not cached in the converted repo's local store by the conversion
312 process.
312 process.
313 $ hg -R largefiles-repo-hg verify --large --lfa
313 $ hg -R largefiles-repo-hg verify --large --lfa
314 checking changesets
314 checking changesets
315 checking manifests
315 checking manifests
316 crosschecking files in changesets and manifests
316 crosschecking files in changesets and manifests
317 checking files
317 checking files
318 8 files, 7 changesets, 12 total revisions
318 8 files, 7 changesets, 12 total revisions
319 searching 7 changesets for largefiles
319 searching 7 changesets for largefiles
320 changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7 (glob)
320 changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7 (glob)
321 changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c (glob)
321 changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c (glob)
322 changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c (glob)
322 changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c (glob)
323 changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 (glob)
323 changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 (glob)
324 changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 (glob)
324 changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 (glob)
325 changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 (glob)
325 changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 (glob)
326 verified existence of 6 revisions of 4 largefiles
326 verified existence of 6 revisions of 4 largefiles
327 [1]
327 [1]
328 $ hg -R largefiles-repo-hg showconfig paths
328 $ hg -R largefiles-repo-hg showconfig paths
329
329
330
330
331 Avoid a traceback if a largefile isn't available (issue3519)
331 Avoid a traceback if a largefile isn't available (issue3519)
332
332
333 Ensure the largefile can be cached in the source if necessary
333 Ensure the largefile can be cached in the source if necessary
334 $ hg clone -U largefiles-repo issue3519
334 $ hg clone -U largefiles-repo issue3519
335 $ rm -f "${USERCACHE}"/*
335 $ rm -f "${USERCACHE}"/*
336 $ hg lfconvert --to-normal issue3519 normalized3519
336 $ hg lfconvert --to-normal issue3519 normalized3519
337 initializing destination normalized3519
337 initializing destination normalized3519
338
338
339 Ensure the abort message is useful if a largefile is entirely unavailable
339 Ensure the abort message is useful if a largefile is entirely unavailable
340 $ rm -rf normalized3519
340 $ rm -rf normalized3519
341 $ rm "${USERCACHE}"/*
341 $ rm "${USERCACHE}"/*
342 $ rm issue3519/.hg/largefiles/*
342 $ rm issue3519/.hg/largefiles/*
343 $ rm largefiles-repo/.hg/largefiles/*
343 $ rm largefiles-repo/.hg/largefiles/*
344 $ hg lfconvert --to-normal issue3519 normalized3519
344 $ hg lfconvert --to-normal issue3519 normalized3519
345 initializing destination normalized3519
345 initializing destination normalized3519
346 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:$TESTTMP/largefiles-repo
346 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:$TESTTMP/largefiles-repo (glob)
347 abort: missing largefile 'large' from revision d4892ec57ce212905215fad1d9018f56b99202ad
347 abort: missing largefile 'large' from revision d4892ec57ce212905215fad1d9018f56b99202ad
348 [255]
348 [255]
349
349
350
350
@@ -1,1216 +1,1216
1 Let commit recurse into subrepos by default to match pre-2.0 behavior:
1 Let commit recurse into subrepos by default to match pre-2.0 behavior:
2
2
3 $ echo "[ui]" >> $HGRCPATH
3 $ echo "[ui]" >> $HGRCPATH
4 $ echo "commitsubrepos = Yes" >> $HGRCPATH
4 $ echo "commitsubrepos = Yes" >> $HGRCPATH
5
5
6 $ hg init t
6 $ hg init t
7 $ cd t
7 $ cd t
8
8
9 first revision, no sub
9 first revision, no sub
10
10
11 $ echo a > a
11 $ echo a > a
12 $ hg ci -Am0
12 $ hg ci -Am0
13 adding a
13 adding a
14
14
15 add first sub
15 add first sub
16
16
17 $ echo s = s > .hgsub
17 $ echo s = s > .hgsub
18 $ hg add .hgsub
18 $ hg add .hgsub
19 $ hg init s
19 $ hg init s
20 $ echo a > s/a
20 $ echo a > s/a
21
21
22 Issue2232: committing a subrepo without .hgsub
22 Issue2232: committing a subrepo without .hgsub
23
23
24 $ hg ci -mbad s
24 $ hg ci -mbad s
25 abort: can't commit subrepos without .hgsub
25 abort: can't commit subrepos without .hgsub
26 [255]
26 [255]
27
27
28 $ hg -R s ci -Ams0
28 $ hg -R s ci -Ams0
29 adding a
29 adding a
30 $ hg sum
30 $ hg sum
31 parent: 0:f7b1eb17ad24 tip
31 parent: 0:f7b1eb17ad24 tip
32 0
32 0
33 branch: default
33 branch: default
34 commit: 1 added, 1 subrepos
34 commit: 1 added, 1 subrepos
35 update: (current)
35 update: (current)
36 $ hg ci -m1
36 $ hg ci -m1
37
37
38 Revert subrepo and test subrepo fileset keyword:
38 Revert subrepo and test subrepo fileset keyword:
39
39
40 $ echo b > s/a
40 $ echo b > s/a
41 $ hg revert "set:subrepo('glob:s*')"
41 $ hg revert "set:subrepo('glob:s*')"
42 reverting subrepo s
42 reverting subrepo s
43 reverting s/a (glob)
43 reverting s/a (glob)
44 $ rm s/a.orig
44 $ rm s/a.orig
45
45
46 Revert subrepo with no backup. The "reverting s/a" line is gone since
46 Revert subrepo with no backup. The "reverting s/a" line is gone since
47 we're really running 'hg update' in the subrepo:
47 we're really running 'hg update' in the subrepo:
48
48
49 $ echo b > s/a
49 $ echo b > s/a
50 $ hg revert --no-backup s
50 $ hg revert --no-backup s
51 reverting subrepo s
51 reverting subrepo s
52
52
53 Issue2022: update -C
53 Issue2022: update -C
54
54
55 $ echo b > s/a
55 $ echo b > s/a
56 $ hg sum
56 $ hg sum
57 parent: 1:7cf8cfea66e4 tip
57 parent: 1:7cf8cfea66e4 tip
58 1
58 1
59 branch: default
59 branch: default
60 commit: 1 subrepos
60 commit: 1 subrepos
61 update: (current)
61 update: (current)
62 $ hg co -C 1
62 $ hg co -C 1
63 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
64 $ hg sum
64 $ hg sum
65 parent: 1:7cf8cfea66e4 tip
65 parent: 1:7cf8cfea66e4 tip
66 1
66 1
67 branch: default
67 branch: default
68 commit: (clean)
68 commit: (clean)
69 update: (current)
69 update: (current)
70
70
71 commands that require a clean repo should respect subrepos
71 commands that require a clean repo should respect subrepos
72
72
73 $ echo b >> s/a
73 $ echo b >> s/a
74 $ hg backout tip
74 $ hg backout tip
75 abort: uncommitted changes in subrepo s
75 abort: uncommitted changes in subrepo s
76 [255]
76 [255]
77 $ hg revert -C -R s s/a
77 $ hg revert -C -R s s/a
78
78
79 add sub sub
79 add sub sub
80
80
81 $ echo ss = ss > s/.hgsub
81 $ echo ss = ss > s/.hgsub
82 $ hg init s/ss
82 $ hg init s/ss
83 $ echo a > s/ss/a
83 $ echo a > s/ss/a
84 $ hg -R s add s/.hgsub
84 $ hg -R s add s/.hgsub
85 $ hg -R s/ss add s/ss/a
85 $ hg -R s/ss add s/ss/a
86 $ hg sum
86 $ hg sum
87 parent: 1:7cf8cfea66e4 tip
87 parent: 1:7cf8cfea66e4 tip
88 1
88 1
89 branch: default
89 branch: default
90 commit: 1 subrepos
90 commit: 1 subrepos
91 update: (current)
91 update: (current)
92 $ hg ci -m2
92 $ hg ci -m2
93 committing subrepository s
93 committing subrepository s
94 committing subrepository s/ss (glob)
94 committing subrepository s/ss (glob)
95 $ hg sum
95 $ hg sum
96 parent: 2:df30734270ae tip
96 parent: 2:df30734270ae tip
97 2
97 2
98 branch: default
98 branch: default
99 commit: (clean)
99 commit: (clean)
100 update: (current)
100 update: (current)
101
101
102 bump sub rev (and check it is ignored by ui.commitsubrepos)
102 bump sub rev (and check it is ignored by ui.commitsubrepos)
103
103
104 $ echo b > s/a
104 $ echo b > s/a
105 $ hg -R s ci -ms1
105 $ hg -R s ci -ms1
106 $ hg --config ui.commitsubrepos=no ci -m3
106 $ hg --config ui.commitsubrepos=no ci -m3
107
107
108 leave sub dirty (and check ui.commitsubrepos=no aborts the commit)
108 leave sub dirty (and check ui.commitsubrepos=no aborts the commit)
109
109
110 $ echo c > s/a
110 $ echo c > s/a
111 $ hg --config ui.commitsubrepos=no ci -m4
111 $ hg --config ui.commitsubrepos=no ci -m4
112 abort: uncommitted changes in subrepo s
112 abort: uncommitted changes in subrepo s
113 (use --subrepos for recursive commit)
113 (use --subrepos for recursive commit)
114 [255]
114 [255]
115 $ hg id
115 $ hg id
116 f6affe3fbfaa+ tip
116 f6affe3fbfaa+ tip
117 $ hg -R s ci -mc
117 $ hg -R s ci -mc
118 $ hg id
118 $ hg id
119 f6affe3fbfaa+ tip
119 f6affe3fbfaa+ tip
120 $ echo d > s/a
120 $ echo d > s/a
121 $ hg ci -m4
121 $ hg ci -m4
122 committing subrepository s
122 committing subrepository s
123 $ hg tip -R s
123 $ hg tip -R s
124 changeset: 4:02dcf1d70411
124 changeset: 4:02dcf1d70411
125 tag: tip
125 tag: tip
126 user: test
126 user: test
127 date: Thu Jan 01 00:00:00 1970 +0000
127 date: Thu Jan 01 00:00:00 1970 +0000
128 summary: 4
128 summary: 4
129
129
130
130
131 check caching
131 check caching
132
132
133 $ hg co 0
133 $ hg co 0
134 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
134 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
135 $ hg debugsub
135 $ hg debugsub
136
136
137 restore
137 restore
138
138
139 $ hg co
139 $ hg co
140 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
140 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
141 $ hg debugsub
141 $ hg debugsub
142 path s
142 path s
143 source s
143 source s
144 revision 02dcf1d704118aee3ee306ccfa1910850d5b05ef
144 revision 02dcf1d704118aee3ee306ccfa1910850d5b05ef
145
145
146 new branch for merge tests
146 new branch for merge tests
147
147
148 $ hg co 1
148 $ hg co 1
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 $ echo t = t >> .hgsub
150 $ echo t = t >> .hgsub
151 $ hg init t
151 $ hg init t
152 $ echo t > t/t
152 $ echo t > t/t
153 $ hg -R t add t
153 $ hg -R t add t
154 adding t/t (glob)
154 adding t/t (glob)
155
155
156 5
156 5
157
157
158 $ hg ci -m5 # add sub
158 $ hg ci -m5 # add sub
159 committing subrepository t
159 committing subrepository t
160 created new head
160 created new head
161 $ echo t2 > t/t
161 $ echo t2 > t/t
162
162
163 6
163 6
164
164
165 $ hg st -R s
165 $ hg st -R s
166 $ hg ci -m6 # change sub
166 $ hg ci -m6 # change sub
167 committing subrepository t
167 committing subrepository t
168 $ hg debugsub
168 $ hg debugsub
169 path s
169 path s
170 source s
170 source s
171 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
171 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
172 path t
172 path t
173 source t
173 source t
174 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
174 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
175 $ echo t3 > t/t
175 $ echo t3 > t/t
176
176
177 7
177 7
178
178
179 $ hg ci -m7 # change sub again for conflict test
179 $ hg ci -m7 # change sub again for conflict test
180 committing subrepository t
180 committing subrepository t
181 $ hg rm .hgsub
181 $ hg rm .hgsub
182
182
183 8
183 8
184
184
185 $ hg ci -m8 # remove sub
185 $ hg ci -m8 # remove sub
186
186
187 merge tests
187 merge tests
188
188
189 $ hg co -C 3
189 $ hg co -C 3
190 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
190 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
191 $ hg merge 5 # test adding
191 $ hg merge 5 # test adding
192 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
192 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
193 (branch merge, don't forget to commit)
193 (branch merge, don't forget to commit)
194 $ hg debugsub
194 $ hg debugsub
195 path s
195 path s
196 source s
196 source s
197 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
197 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
198 path t
198 path t
199 source t
199 source t
200 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
200 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
201 $ hg ci -m9
201 $ hg ci -m9
202 created new head
202 created new head
203 $ hg merge 6 --debug # test change
203 $ hg merge 6 --debug # test change
204 searching for copies back to rev 2
204 searching for copies back to rev 2
205 resolving manifests
205 resolving manifests
206 branchmerge: True, force: False, partial: False
206 branchmerge: True, force: False, partial: False
207 ancestor: 1f14a2e2d3ec, local: f0d2028bf86d+, remote: 1831e14459c4
207 ancestor: 1f14a2e2d3ec, local: f0d2028bf86d+, remote: 1831e14459c4
208 .hgsubstate: versions differ -> m
208 .hgsubstate: versions differ -> m
209 updating: .hgsubstate 1/1 files (100.00%)
209 updating: .hgsubstate 1/1 files (100.00%)
210 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
210 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
211 subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
211 subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
212 getting subrepo t
212 getting subrepo t
213 resolving manifests
213 resolving manifests
214 branchmerge: False, force: False, partial: False
214 branchmerge: False, force: False, partial: False
215 ancestor: 60ca1237c194, local: 60ca1237c194+, remote: 6747d179aa9a
215 ancestor: 60ca1237c194, local: 60ca1237c194+, remote: 6747d179aa9a
216 t: remote is newer -> g
216 t: remote is newer -> g
217 getting t
217 getting t
218 updating: t 1/1 files (100.00%)
218 updating: t 1/1 files (100.00%)
219 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
219 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
220 (branch merge, don't forget to commit)
220 (branch merge, don't forget to commit)
221 $ hg debugsub
221 $ hg debugsub
222 path s
222 path s
223 source s
223 source s
224 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
224 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
225 path t
225 path t
226 source t
226 source t
227 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
227 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
228 $ echo conflict > t/t
228 $ echo conflict > t/t
229 $ hg ci -m10
229 $ hg ci -m10
230 committing subrepository t
230 committing subrepository t
231 $ HGMERGE=internal:merge hg merge --debug 7 # test conflict
231 $ HGMERGE=internal:merge hg merge --debug 7 # test conflict
232 searching for copies back to rev 2
232 searching for copies back to rev 2
233 resolving manifests
233 resolving manifests
234 branchmerge: True, force: False, partial: False
234 branchmerge: True, force: False, partial: False
235 ancestor: 1831e14459c4, local: e45c8b14af55+, remote: f94576341bcf
235 ancestor: 1831e14459c4, local: e45c8b14af55+, remote: f94576341bcf
236 .hgsubstate: versions differ -> m
236 .hgsubstate: versions differ -> m
237 updating: .hgsubstate 1/1 files (100.00%)
237 updating: .hgsubstate 1/1 files (100.00%)
238 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
238 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
239 subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
239 subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
240 merging subrepo t
240 merging subrepo t
241 searching for copies back to rev 2
241 searching for copies back to rev 2
242 resolving manifests
242 resolving manifests
243 branchmerge: True, force: False, partial: False
243 branchmerge: True, force: False, partial: False
244 ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198
244 ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198
245 t: versions differ -> m
245 t: versions differ -> m
246 preserving t for resolve of t
246 preserving t for resolve of t
247 updating: t 1/1 files (100.00%)
247 updating: t 1/1 files (100.00%)
248 picked tool 'internal:merge' for t (binary False symlink False)
248 picked tool 'internal:merge' for t (binary False symlink False)
249 merging t
249 merging t
250 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
250 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
251 warning: conflicts during merge.
251 warning: conflicts during merge.
252 merging t incomplete! (edit conflicts, then use 'hg resolve --mark')
252 merging t incomplete! (edit conflicts, then use 'hg resolve --mark')
253 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
253 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
254 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
254 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
255 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
255 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
256 (branch merge, don't forget to commit)
256 (branch merge, don't forget to commit)
257
257
258 should conflict
258 should conflict
259
259
260 $ cat t/t
260 $ cat t/t
261 <<<<<<< local
261 <<<<<<< local
262 conflict
262 conflict
263 =======
263 =======
264 t3
264 t3
265 >>>>>>> other
265 >>>>>>> other
266
266
267 clone
267 clone
268
268
269 $ cd ..
269 $ cd ..
270 $ hg clone t tc
270 $ hg clone t tc
271 updating to branch default
271 updating to branch default
272 cloning subrepo s from $TESTTMP/t/s
272 cloning subrepo s from $TESTTMP/t/s
273 cloning subrepo s/ss from $TESTTMP/t/s/ss (glob)
273 cloning subrepo s/ss from $TESTTMP/t/s/ss (glob)
274 cloning subrepo t from $TESTTMP/t/t
274 cloning subrepo t from $TESTTMP/t/t
275 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
275 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
276 $ cd tc
276 $ cd tc
277 $ hg debugsub
277 $ hg debugsub
278 path s
278 path s
279 source s
279 source s
280 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
280 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
281 path t
281 path t
282 source t
282 source t
283 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
283 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
284
284
285 push
285 push
286
286
287 $ echo bah > t/t
287 $ echo bah > t/t
288 $ hg ci -m11
288 $ hg ci -m11
289 committing subrepository t
289 committing subrepository t
290 $ hg push
290 $ hg push
291 pushing to $TESTTMP/t (glob)
291 pushing to $TESTTMP/t (glob)
292 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
292 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss (glob)
293 no changes made to subrepo s since last push to $TESTTMP/t/s
293 no changes made to subrepo s since last push to $TESTTMP/t/s
294 pushing subrepo t to $TESTTMP/t/t
294 pushing subrepo t to $TESTTMP/t/t
295 searching for changes
295 searching for changes
296 adding changesets
296 adding changesets
297 adding manifests
297 adding manifests
298 adding file changes
298 adding file changes
299 added 1 changesets with 1 changes to 1 files
299 added 1 changesets with 1 changes to 1 files
300 searching for changes
300 searching for changes
301 adding changesets
301 adding changesets
302 adding manifests
302 adding manifests
303 adding file changes
303 adding file changes
304 added 1 changesets with 1 changes to 1 files
304 added 1 changesets with 1 changes to 1 files
305
305
306 push -f
306 push -f
307
307
308 $ echo bah > s/a
308 $ echo bah > s/a
309 $ hg ci -m12
309 $ hg ci -m12
310 committing subrepository s
310 committing subrepository s
311 $ hg push
311 $ hg push
312 pushing to $TESTTMP/t (glob)
312 pushing to $TESTTMP/t (glob)
313 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
313 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss (glob)
314 pushing subrepo s to $TESTTMP/t/s
314 pushing subrepo s to $TESTTMP/t/s
315 searching for changes
315 searching for changes
316 abort: push creates new remote head 12a213df6fa9! (in subrepo s)
316 abort: push creates new remote head 12a213df6fa9! (in subrepo s)
317 (did you forget to merge? use push -f to force)
317 (did you forget to merge? use push -f to force)
318 [255]
318 [255]
319 $ hg push -f
319 $ hg push -f
320 pushing to $TESTTMP/t (glob)
320 pushing to $TESTTMP/t (glob)
321 pushing subrepo s/ss to $TESTTMP/t/s/ss (glob)
321 pushing subrepo s/ss to $TESTTMP/t/s/ss (glob)
322 searching for changes
322 searching for changes
323 no changes found
323 no changes found
324 pushing subrepo s to $TESTTMP/t/s
324 pushing subrepo s to $TESTTMP/t/s
325 searching for changes
325 searching for changes
326 adding changesets
326 adding changesets
327 adding manifests
327 adding manifests
328 adding file changes
328 adding file changes
329 added 1 changesets with 1 changes to 1 files (+1 heads)
329 added 1 changesets with 1 changes to 1 files (+1 heads)
330 pushing subrepo t to $TESTTMP/t/t
330 pushing subrepo t to $TESTTMP/t/t
331 searching for changes
331 searching for changes
332 no changes found
332 no changes found
333 searching for changes
333 searching for changes
334 adding changesets
334 adding changesets
335 adding manifests
335 adding manifests
336 adding file changes
336 adding file changes
337 added 1 changesets with 1 changes to 1 files
337 added 1 changesets with 1 changes to 1 files
338
338
339 check that unmodified subrepos are not pushed
339 check that unmodified subrepos are not pushed
340
340
341 $ hg clone . ../tcc
341 $ hg clone . ../tcc
342 updating to branch default
342 updating to branch default
343 cloning subrepo s from $TESTTMP/tc/s
343 cloning subrepo s from $TESTTMP/tc/s
344 cloning subrepo s/ss from $TESTTMP/tc/s/ss
344 cloning subrepo s/ss from $TESTTMP/tc/s/ss (glob)
345 cloning subrepo t from $TESTTMP/tc/t
345 cloning subrepo t from $TESTTMP/tc/t
346 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
346 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
347
347
348 the subrepos on the new clone have nothing to push to its source
348 the subrepos on the new clone have nothing to push to its source
349
349
350 $ hg push -R ../tcc .
350 $ hg push -R ../tcc .
351 pushing to .
351 pushing to .
352 no changes made to subrepo s/ss since last push to s/ss
352 no changes made to subrepo s/ss since last push to s/ss (glob)
353 no changes made to subrepo s since last push to s
353 no changes made to subrepo s since last push to s
354 no changes made to subrepo t since last push to t
354 no changes made to subrepo t since last push to t
355 searching for changes
355 searching for changes
356 no changes found
356 no changes found
357 [1]
357 [1]
358
358
359 the subrepos on the source do not have a clean store versus the clone target
359 the subrepos on the source do not have a clean store versus the clone target
360 because they were never explicitly pushed to the source
360 because they were never explicitly pushed to the source
361
361
362 $ hg push ../tcc
362 $ hg push ../tcc
363 pushing to ../tcc
363 pushing to ../tcc
364 pushing subrepo s/ss to ../tcc/s/ss
364 pushing subrepo s/ss to ../tcc/s/ss (glob)
365 searching for changes
365 searching for changes
366 no changes found
366 no changes found
367 pushing subrepo s to ../tcc/s
367 pushing subrepo s to ../tcc/s
368 searching for changes
368 searching for changes
369 no changes found
369 no changes found
370 pushing subrepo t to ../tcc/t
370 pushing subrepo t to ../tcc/t
371 searching for changes
371 searching for changes
372 no changes found
372 no changes found
373 searching for changes
373 searching for changes
374 no changes found
374 no changes found
375 [1]
375 [1]
376
376
377 after push their stores become clean
377 after push their stores become clean
378
378
379 $ hg push ../tcc
379 $ hg push ../tcc
380 pushing to ../tcc
380 pushing to ../tcc
381 no changes made to subrepo s/ss since last push to ../tcc/s/ss
381 no changes made to subrepo s/ss since last push to ../tcc/s/ss (glob)
382 no changes made to subrepo s since last push to ../tcc/s
382 no changes made to subrepo s since last push to ../tcc/s
383 no changes made to subrepo t since last push to ../tcc/t
383 no changes made to subrepo t since last push to ../tcc/t
384 searching for changes
384 searching for changes
385 no changes found
385 no changes found
386 [1]
386 [1]
387
387
388 updating a subrepo to a different revision or changing
388 updating a subrepo to a different revision or changing
389 its working directory does not make its store dirty
389 its working directory does not make its store dirty
390
390
391 $ hg -R s update '.^'
391 $ hg -R s update '.^'
392 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
392 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
393 $ hg push
393 $ hg push
394 pushing to $TESTTMP/t
394 pushing to $TESTTMP/t
395 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
395 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss (glob)
396 no changes made to subrepo s since last push to $TESTTMP/t/s
396 no changes made to subrepo s since last push to $TESTTMP/t/s
397 no changes made to subrepo t since last push to $TESTTMP/t/t
397 no changes made to subrepo t since last push to $TESTTMP/t/t
398 searching for changes
398 searching for changes
399 no changes found
399 no changes found
400 [1]
400 [1]
401 $ echo foo >> s/a
401 $ echo foo >> s/a
402 $ hg push
402 $ hg push
403 pushing to $TESTTMP/t
403 pushing to $TESTTMP/t
404 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
404 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss (glob)
405 no changes made to subrepo s since last push to $TESTTMP/t/s
405 no changes made to subrepo s since last push to $TESTTMP/t/s
406 no changes made to subrepo t since last push to $TESTTMP/t/t
406 no changes made to subrepo t since last push to $TESTTMP/t/t
407 searching for changes
407 searching for changes
408 no changes found
408 no changes found
409 [1]
409 [1]
410 $ hg -R s update -C tip
410 $ hg -R s update -C tip
411 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
411 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
412
412
413 committing into a subrepo makes its store (but not its parent's store) dirty
413 committing into a subrepo makes its store (but not its parent's store) dirty
414
414
415 $ echo foo >> s/ss/a
415 $ echo foo >> s/ss/a
416 $ hg -R s/ss commit -m 'test dirty store detection'
416 $ hg -R s/ss commit -m 'test dirty store detection'
417 $ hg push
417 $ hg push
418 pushing to $TESTTMP/t
418 pushing to $TESTTMP/t
419 pushing subrepo s/ss to $TESTTMP/t/s/ss
419 pushing subrepo s/ss to $TESTTMP/t/s/ss (glob)
420 searching for changes
420 searching for changes
421 adding changesets
421 adding changesets
422 adding manifests
422 adding manifests
423 adding file changes
423 adding file changes
424 added 1 changesets with 1 changes to 1 files
424 added 1 changesets with 1 changes to 1 files
425 no changes made to subrepo s since last push to $TESTTMP/t/s
425 no changes made to subrepo s since last push to $TESTTMP/t/s
426 no changes made to subrepo t since last push to $TESTTMP/t/t
426 no changes made to subrepo t since last push to $TESTTMP/t/t
427 searching for changes
427 searching for changes
428 no changes found
428 no changes found
429 [1]
429 [1]
430
430
431 a subrepo store may be clean versus one repo but not versus another
431 a subrepo store may be clean versus one repo but not versus another
432
432
433 $ hg push
433 $ hg push
434 pushing to $TESTTMP/t
434 pushing to $TESTTMP/t
435 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
435 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss (glob)
436 no changes made to subrepo s since last push to $TESTTMP/t/s
436 no changes made to subrepo s since last push to $TESTTMP/t/s
437 no changes made to subrepo t since last push to $TESTTMP/t/t
437 no changes made to subrepo t since last push to $TESTTMP/t/t
438 searching for changes
438 searching for changes
439 no changes found
439 no changes found
440 [1]
440 [1]
441 $ hg push ../tcc
441 $ hg push ../tcc
442 pushing to ../tcc
442 pushing to ../tcc
443 pushing subrepo s/ss to ../tcc/s/ss
443 pushing subrepo s/ss to ../tcc/s/ss
444 searching for changes
444 searching for changes
445 adding changesets
445 adding changesets
446 adding manifests
446 adding manifests
447 adding file changes
447 adding file changes
448 added 1 changesets with 1 changes to 1 files
448 added 1 changesets with 1 changes to 1 files
449 no changes made to subrepo s since last push to ../tcc/s
449 no changes made to subrepo s since last push to ../tcc/s
450 no changes made to subrepo t since last push to ../tcc/t
450 no changes made to subrepo t since last push to ../tcc/t
451 searching for changes
451 searching for changes
452 no changes found
452 no changes found
453 [1]
453 [1]
454
454
455 update
455 update
456
456
457 $ cd ../t
457 $ cd ../t
458 $ hg up -C # discard our earlier merge
458 $ hg up -C # discard our earlier merge
459 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
459 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
460 $ echo blah > t/t
460 $ echo blah > t/t
461 $ hg ci -m13
461 $ hg ci -m13
462 committing subrepository t
462 committing subrepository t
463
463
464 backout calls revert internally with minimal opts, which should not raise
464 backout calls revert internally with minimal opts, which should not raise
465 KeyError
465 KeyError
466
466
467 $ hg backout ".^"
467 $ hg backout ".^"
468 reverting .hgsubstate
468 reverting .hgsubstate
469 reverting subrepo s
469 reverting subrepo s
470 reverting s/a
470 reverting s/a (glob)
471 reverting subrepo ss
471 reverting subrepo ss
472 reverting subrepo t
472 reverting subrepo t
473 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
473 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
474
474
475 $ hg up -C # discard changes
475 $ hg up -C # discard changes
476 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
476 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
477
477
478 pull
478 pull
479
479
480 $ cd ../tc
480 $ cd ../tc
481 $ hg pull
481 $ hg pull
482 pulling from $TESTTMP/t (glob)
482 pulling from $TESTTMP/t (glob)
483 searching for changes
483 searching for changes
484 adding changesets
484 adding changesets
485 adding manifests
485 adding manifests
486 adding file changes
486 adding file changes
487 added 1 changesets with 1 changes to 1 files
487 added 1 changesets with 1 changes to 1 files
488 (run 'hg update' to get a working copy)
488 (run 'hg update' to get a working copy)
489
489
490 should pull t
490 should pull t
491
491
492 $ hg up
492 $ hg up
493 pulling subrepo t from $TESTTMP/t/t
493 pulling subrepo t from $TESTTMP/t/t
494 searching for changes
494 searching for changes
495 adding changesets
495 adding changesets
496 adding manifests
496 adding manifests
497 adding file changes
497 adding file changes
498 added 1 changesets with 1 changes to 1 files
498 added 1 changesets with 1 changes to 1 files
499 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
499 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
500 $ cat t/t
500 $ cat t/t
501 blah
501 blah
502
502
503 bogus subrepo path aborts
503 bogus subrepo path aborts
504
504
505 $ echo 'bogus=[boguspath' >> .hgsub
505 $ echo 'bogus=[boguspath' >> .hgsub
506 $ hg ci -m 'bogus subrepo path'
506 $ hg ci -m 'bogus subrepo path'
507 abort: missing ] in subrepo source
507 abort: missing ] in subrepo source
508 [255]
508 [255]
509
509
510 Issue1986: merge aborts when trying to merge a subrepo that
510 Issue1986: merge aborts when trying to merge a subrepo that
511 shouldn't need merging
511 shouldn't need merging
512
512
513 # subrepo layout
513 # subrepo layout
514 #
514 #
515 # o 5 br
515 # o 5 br
516 # /|
516 # /|
517 # o | 4 default
517 # o | 4 default
518 # | |
518 # | |
519 # | o 3 br
519 # | o 3 br
520 # |/|
520 # |/|
521 # o | 2 default
521 # o | 2 default
522 # | |
522 # | |
523 # | o 1 br
523 # | o 1 br
524 # |/
524 # |/
525 # o 0 default
525 # o 0 default
526
526
527 $ cd ..
527 $ cd ..
528 $ rm -rf sub
528 $ rm -rf sub
529 $ hg init main
529 $ hg init main
530 $ cd main
530 $ cd main
531 $ hg init s
531 $ hg init s
532 $ cd s
532 $ cd s
533 $ echo a > a
533 $ echo a > a
534 $ hg ci -Am1
534 $ hg ci -Am1
535 adding a
535 adding a
536 $ hg branch br
536 $ hg branch br
537 marked working directory as branch br
537 marked working directory as branch br
538 (branches are permanent and global, did you want a bookmark?)
538 (branches are permanent and global, did you want a bookmark?)
539 $ echo a >> a
539 $ echo a >> a
540 $ hg ci -m1
540 $ hg ci -m1
541 $ hg up default
541 $ hg up default
542 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
542 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
543 $ echo b > b
543 $ echo b > b
544 $ hg ci -Am1
544 $ hg ci -Am1
545 adding b
545 adding b
546 $ hg up br
546 $ hg up br
547 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
547 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
548 $ hg merge tip
548 $ hg merge tip
549 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
549 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
550 (branch merge, don't forget to commit)
550 (branch merge, don't forget to commit)
551 $ hg ci -m1
551 $ hg ci -m1
552 $ hg up 2
552 $ hg up 2
553 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
553 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
554 $ echo c > c
554 $ echo c > c
555 $ hg ci -Am1
555 $ hg ci -Am1
556 adding c
556 adding c
557 $ hg up 3
557 $ hg up 3
558 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
558 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
559 $ hg merge 4
559 $ hg merge 4
560 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
560 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
561 (branch merge, don't forget to commit)
561 (branch merge, don't forget to commit)
562 $ hg ci -m1
562 $ hg ci -m1
563
563
564 # main repo layout:
564 # main repo layout:
565 #
565 #
566 # * <-- try to merge default into br again
566 # * <-- try to merge default into br again
567 # .`|
567 # .`|
568 # . o 5 br --> substate = 5
568 # . o 5 br --> substate = 5
569 # . |
569 # . |
570 # o | 4 default --> substate = 4
570 # o | 4 default --> substate = 4
571 # | |
571 # | |
572 # | o 3 br --> substate = 2
572 # | o 3 br --> substate = 2
573 # |/|
573 # |/|
574 # o | 2 default --> substate = 2
574 # o | 2 default --> substate = 2
575 # | |
575 # | |
576 # | o 1 br --> substate = 3
576 # | o 1 br --> substate = 3
577 # |/
577 # |/
578 # o 0 default --> substate = 2
578 # o 0 default --> substate = 2
579
579
580 $ cd ..
580 $ cd ..
581 $ echo 's = s' > .hgsub
581 $ echo 's = s' > .hgsub
582 $ hg -R s up 2
582 $ hg -R s up 2
583 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
583 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
584 $ hg ci -Am1
584 $ hg ci -Am1
585 adding .hgsub
585 adding .hgsub
586 $ hg branch br
586 $ hg branch br
587 marked working directory as branch br
587 marked working directory as branch br
588 (branches are permanent and global, did you want a bookmark?)
588 (branches are permanent and global, did you want a bookmark?)
589 $ echo b > b
589 $ echo b > b
590 $ hg -R s up 3
590 $ hg -R s up 3
591 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
591 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
592 $ hg ci -Am1
592 $ hg ci -Am1
593 adding b
593 adding b
594 $ hg up default
594 $ hg up default
595 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
595 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
596 $ echo c > c
596 $ echo c > c
597 $ hg ci -Am1
597 $ hg ci -Am1
598 adding c
598 adding c
599 $ hg up 1
599 $ hg up 1
600 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
600 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
601 $ hg merge 2
601 $ hg merge 2
602 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
602 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
603 (branch merge, don't forget to commit)
603 (branch merge, don't forget to commit)
604 $ hg ci -m1
604 $ hg ci -m1
605 $ hg up 2
605 $ hg up 2
606 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
606 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
607 $ hg -R s up 4
607 $ hg -R s up 4
608 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
608 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
609 $ echo d > d
609 $ echo d > d
610 $ hg ci -Am1
610 $ hg ci -Am1
611 adding d
611 adding d
612 $ hg up 3
612 $ hg up 3
613 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
613 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
614 $ hg -R s up 5
614 $ hg -R s up 5
615 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
615 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
616 $ echo e > e
616 $ echo e > e
617 $ hg ci -Am1
617 $ hg ci -Am1
618 adding e
618 adding e
619
619
620 $ hg up 5
620 $ hg up 5
621 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
621 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
622 $ hg merge 4 # try to merge default into br again
622 $ hg merge 4 # try to merge default into br again
623 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
623 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
624 (branch merge, don't forget to commit)
624 (branch merge, don't forget to commit)
625 $ cd ..
625 $ cd ..
626
626
627 test subrepo delete from .hgsubstate
627 test subrepo delete from .hgsubstate
628
628
629 $ hg init testdelete
629 $ hg init testdelete
630 $ mkdir testdelete/nested testdelete/nested2
630 $ mkdir testdelete/nested testdelete/nested2
631 $ hg init testdelete/nested
631 $ hg init testdelete/nested
632 $ hg init testdelete/nested2
632 $ hg init testdelete/nested2
633 $ echo test > testdelete/nested/foo
633 $ echo test > testdelete/nested/foo
634 $ echo test > testdelete/nested2/foo
634 $ echo test > testdelete/nested2/foo
635 $ hg -R testdelete/nested add
635 $ hg -R testdelete/nested add
636 adding testdelete/nested/foo (glob)
636 adding testdelete/nested/foo (glob)
637 $ hg -R testdelete/nested2 add
637 $ hg -R testdelete/nested2 add
638 adding testdelete/nested2/foo (glob)
638 adding testdelete/nested2/foo (glob)
639 $ hg -R testdelete/nested ci -m test
639 $ hg -R testdelete/nested ci -m test
640 $ hg -R testdelete/nested2 ci -m test
640 $ hg -R testdelete/nested2 ci -m test
641 $ echo nested = nested > testdelete/.hgsub
641 $ echo nested = nested > testdelete/.hgsub
642 $ echo nested2 = nested2 >> testdelete/.hgsub
642 $ echo nested2 = nested2 >> testdelete/.hgsub
643 $ hg -R testdelete add
643 $ hg -R testdelete add
644 adding testdelete/.hgsub (glob)
644 adding testdelete/.hgsub (glob)
645 $ hg -R testdelete ci -m "nested 1 & 2 added"
645 $ hg -R testdelete ci -m "nested 1 & 2 added"
646 $ echo nested = nested > testdelete/.hgsub
646 $ echo nested = nested > testdelete/.hgsub
647 $ hg -R testdelete ci -m "nested 2 deleted"
647 $ hg -R testdelete ci -m "nested 2 deleted"
648 $ cat testdelete/.hgsubstate
648 $ cat testdelete/.hgsubstate
649 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
649 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
650 $ hg -R testdelete remove testdelete/.hgsub
650 $ hg -R testdelete remove testdelete/.hgsub
651 $ hg -R testdelete ci -m ".hgsub deleted"
651 $ hg -R testdelete ci -m ".hgsub deleted"
652 $ cat testdelete/.hgsubstate
652 $ cat testdelete/.hgsubstate
653 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
653 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
654
654
655 test repository cloning
655 test repository cloning
656
656
657 $ mkdir mercurial mercurial2
657 $ mkdir mercurial mercurial2
658 $ hg init nested_absolute
658 $ hg init nested_absolute
659 $ echo test > nested_absolute/foo
659 $ echo test > nested_absolute/foo
660 $ hg -R nested_absolute add
660 $ hg -R nested_absolute add
661 adding nested_absolute/foo (glob)
661 adding nested_absolute/foo (glob)
662 $ hg -R nested_absolute ci -mtest
662 $ hg -R nested_absolute ci -mtest
663 $ cd mercurial
663 $ cd mercurial
664 $ hg init nested_relative
664 $ hg init nested_relative
665 $ echo test2 > nested_relative/foo2
665 $ echo test2 > nested_relative/foo2
666 $ hg -R nested_relative add
666 $ hg -R nested_relative add
667 adding nested_relative/foo2 (glob)
667 adding nested_relative/foo2 (glob)
668 $ hg -R nested_relative ci -mtest2
668 $ hg -R nested_relative ci -mtest2
669 $ hg init main
669 $ hg init main
670 $ echo "nested_relative = ../nested_relative" > main/.hgsub
670 $ echo "nested_relative = ../nested_relative" > main/.hgsub
671 $ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub
671 $ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub
672 $ hg -R main add
672 $ hg -R main add
673 adding main/.hgsub (glob)
673 adding main/.hgsub (glob)
674 $ hg -R main ci -m "add subrepos"
674 $ hg -R main ci -m "add subrepos"
675 $ cd ..
675 $ cd ..
676 $ hg clone mercurial/main mercurial2/main
676 $ hg clone mercurial/main mercurial2/main
677 updating to branch default
677 updating to branch default
678 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
678 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
679 $ cat mercurial2/main/nested_absolute/.hg/hgrc \
679 $ cat mercurial2/main/nested_absolute/.hg/hgrc \
680 > mercurial2/main/nested_relative/.hg/hgrc
680 > mercurial2/main/nested_relative/.hg/hgrc
681 [paths]
681 [paths]
682 default = $TESTTMP/mercurial/nested_absolute
682 default = $TESTTMP/mercurial/nested_absolute
683 [paths]
683 [paths]
684 default = $TESTTMP/mercurial/nested_relative
684 default = $TESTTMP/mercurial/nested_relative
685 $ rm -rf mercurial mercurial2
685 $ rm -rf mercurial mercurial2
686
686
687 Issue1977: multirepo push should fail if subrepo push fails
687 Issue1977: multirepo push should fail if subrepo push fails
688
688
689 $ hg init repo
689 $ hg init repo
690 $ hg init repo/s
690 $ hg init repo/s
691 $ echo a > repo/s/a
691 $ echo a > repo/s/a
692 $ hg -R repo/s ci -Am0
692 $ hg -R repo/s ci -Am0
693 adding a
693 adding a
694 $ echo s = s > repo/.hgsub
694 $ echo s = s > repo/.hgsub
695 $ hg -R repo ci -Am1
695 $ hg -R repo ci -Am1
696 adding .hgsub
696 adding .hgsub
697 $ hg clone repo repo2
697 $ hg clone repo repo2
698 updating to branch default
698 updating to branch default
699 cloning subrepo s from $TESTTMP/repo/s
699 cloning subrepo s from $TESTTMP/repo/s
700 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
700 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
701 $ hg -q -R repo2 pull -u
701 $ hg -q -R repo2 pull -u
702 $ echo 1 > repo2/s/a
702 $ echo 1 > repo2/s/a
703 $ hg -R repo2/s ci -m2
703 $ hg -R repo2/s ci -m2
704 $ hg -q -R repo2/s push
704 $ hg -q -R repo2/s push
705 $ hg -R repo2/s up -C 0
705 $ hg -R repo2/s up -C 0
706 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
706 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
707 $ echo 2 > repo2/s/b
707 $ echo 2 > repo2/s/b
708 $ hg -R repo2/s ci -m3 -A
708 $ hg -R repo2/s ci -m3 -A
709 adding b
709 adding b
710 created new head
710 created new head
711 $ hg -R repo2 ci -m3
711 $ hg -R repo2 ci -m3
712 $ hg -q -R repo2 push
712 $ hg -q -R repo2 push
713 abort: push creates new remote head cc505f09a8b2! (in subrepo s)
713 abort: push creates new remote head cc505f09a8b2! (in subrepo s)
714 (did you forget to merge? use push -f to force)
714 (did you forget to merge? use push -f to force)
715 [255]
715 [255]
716 $ hg -R repo update
716 $ hg -R repo update
717 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
717 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
718
718
719 test if untracked file is not overwritten
719 test if untracked file is not overwritten
720
720
721 $ echo issue3276_ok > repo/s/b
721 $ echo issue3276_ok > repo/s/b
722 $ hg -R repo2 push -f -q
722 $ hg -R repo2 push -f -q
723 $ hg -R repo update
723 $ hg -R repo update
724 b: untracked file differs
724 b: untracked file differs
725 abort: untracked files in working directory differ from files in requested revision (in subrepo s)
725 abort: untracked files in working directory differ from files in requested revision (in subrepo s)
726 [255]
726 [255]
727
727
728 $ cat repo/s/b
728 $ cat repo/s/b
729 issue3276_ok
729 issue3276_ok
730 $ rm repo/s/b
730 $ rm repo/s/b
731 $ hg -R repo revert --all
731 $ hg -R repo revert --all
732 reverting repo/.hgsubstate (glob)
732 reverting repo/.hgsubstate (glob)
733 reverting subrepo s
733 reverting subrepo s
734 $ hg -R repo update
734 $ hg -R repo update
735 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
735 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
736 $ cat repo/s/b
736 $ cat repo/s/b
737 2
737 2
738 $ rm -rf repo2 repo
738 $ rm -rf repo2 repo
739
739
740
740
741 Issue1852 subrepos with relative paths always push/pull relative to default
741 Issue1852 subrepos with relative paths always push/pull relative to default
742
742
743 Prepare a repo with subrepo
743 Prepare a repo with subrepo
744
744
745 $ hg init issue1852a
745 $ hg init issue1852a
746 $ cd issue1852a
746 $ cd issue1852a
747 $ hg init sub/repo
747 $ hg init sub/repo
748 $ echo test > sub/repo/foo
748 $ echo test > sub/repo/foo
749 $ hg -R sub/repo add sub/repo/foo
749 $ hg -R sub/repo add sub/repo/foo
750 $ echo sub/repo = sub/repo > .hgsub
750 $ echo sub/repo = sub/repo > .hgsub
751 $ hg add .hgsub
751 $ hg add .hgsub
752 $ hg ci -mtest
752 $ hg ci -mtest
753 committing subrepository sub/repo (glob)
753 committing subrepository sub/repo (glob)
754 $ echo test >> sub/repo/foo
754 $ echo test >> sub/repo/foo
755 $ hg ci -mtest
755 $ hg ci -mtest
756 committing subrepository sub/repo (glob)
756 committing subrepository sub/repo (glob)
757 $ cd ..
757 $ cd ..
758
758
759 Create repo without default path, pull top repo, and see what happens on update
759 Create repo without default path, pull top repo, and see what happens on update
760
760
761 $ hg init issue1852b
761 $ hg init issue1852b
762 $ hg -R issue1852b pull issue1852a
762 $ hg -R issue1852b pull issue1852a
763 pulling from issue1852a
763 pulling from issue1852a
764 requesting all changes
764 requesting all changes
765 adding changesets
765 adding changesets
766 adding manifests
766 adding manifests
767 adding file changes
767 adding file changes
768 added 2 changesets with 3 changes to 2 files
768 added 2 changesets with 3 changes to 2 files
769 (run 'hg update' to get a working copy)
769 (run 'hg update' to get a working copy)
770 $ hg -R issue1852b update
770 $ hg -R issue1852b update
771 abort: default path for subrepository not found (in subrepo sub/repo) (glob)
771 abort: default path for subrepository not found (in subrepo sub/repo) (glob)
772 [255]
772 [255]
773
773
774 Ensure a full traceback, not just the SubrepoAbort part
774 Ensure a full traceback, not just the SubrepoAbort part
775
775
776 $ hg -R issue1852b update --traceback 2>&1 | grep 'raise util\.Abort'
776 $ hg -R issue1852b update --traceback 2>&1 | grep 'raise util\.Abort'
777 raise util.Abort(_("default path for subrepository not found"))
777 raise util.Abort(_("default path for subrepository not found"))
778
778
779 Pull -u now doesn't help
779 Pull -u now doesn't help
780
780
781 $ hg -R issue1852b pull -u issue1852a
781 $ hg -R issue1852b pull -u issue1852a
782 pulling from issue1852a
782 pulling from issue1852a
783 searching for changes
783 searching for changes
784 no changes found
784 no changes found
785
785
786 Try the same, but with pull -u
786 Try the same, but with pull -u
787
787
788 $ hg init issue1852c
788 $ hg init issue1852c
789 $ hg -R issue1852c pull -r0 -u issue1852a
789 $ hg -R issue1852c pull -r0 -u issue1852a
790 pulling from issue1852a
790 pulling from issue1852a
791 adding changesets
791 adding changesets
792 adding manifests
792 adding manifests
793 adding file changes
793 adding file changes
794 added 1 changesets with 2 changes to 2 files
794 added 1 changesets with 2 changes to 2 files
795 cloning subrepo sub/repo from issue1852a/sub/repo (glob)
795 cloning subrepo sub/repo from issue1852a/sub/repo (glob)
796 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
796 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
797
797
798 Try to push from the other side
798 Try to push from the other side
799
799
800 $ hg -R issue1852a push `pwd`/issue1852c
800 $ hg -R issue1852a push `pwd`/issue1852c
801 pushing to $TESTTMP/issue1852c
801 pushing to $TESTTMP/issue1852c
802 pushing subrepo sub/repo to $TESTTMP/issue1852c/sub/repo (glob)
802 pushing subrepo sub/repo to $TESTTMP/issue1852c/sub/repo (glob)
803 searching for changes
803 searching for changes
804 no changes found
804 no changes found
805 searching for changes
805 searching for changes
806 adding changesets
806 adding changesets
807 adding manifests
807 adding manifests
808 adding file changes
808 adding file changes
809 added 1 changesets with 1 changes to 1 files
809 added 1 changesets with 1 changes to 1 files
810
810
811 Incoming and outgoing should not use the default path:
811 Incoming and outgoing should not use the default path:
812
812
813 $ hg clone -q issue1852a issue1852d
813 $ hg clone -q issue1852a issue1852d
814 $ hg -R issue1852d outgoing --subrepos issue1852c
814 $ hg -R issue1852d outgoing --subrepos issue1852c
815 comparing with issue1852c
815 comparing with issue1852c
816 searching for changes
816 searching for changes
817 no changes found
817 no changes found
818 comparing with issue1852c/sub/repo
818 comparing with issue1852c/sub/repo
819 searching for changes
819 searching for changes
820 no changes found
820 no changes found
821 [1]
821 [1]
822 $ hg -R issue1852d incoming --subrepos issue1852c
822 $ hg -R issue1852d incoming --subrepos issue1852c
823 comparing with issue1852c
823 comparing with issue1852c
824 searching for changes
824 searching for changes
825 no changes found
825 no changes found
826 comparing with issue1852c/sub/repo
826 comparing with issue1852c/sub/repo
827 searching for changes
827 searching for changes
828 no changes found
828 no changes found
829 [1]
829 [1]
830
830
831 Check status of files when none of them belong to the first
831 Check status of files when none of them belong to the first
832 subrepository:
832 subrepository:
833
833
834 $ hg init subrepo-status
834 $ hg init subrepo-status
835 $ cd subrepo-status
835 $ cd subrepo-status
836 $ hg init subrepo-1
836 $ hg init subrepo-1
837 $ hg init subrepo-2
837 $ hg init subrepo-2
838 $ cd subrepo-2
838 $ cd subrepo-2
839 $ touch file
839 $ touch file
840 $ hg add file
840 $ hg add file
841 $ cd ..
841 $ cd ..
842 $ echo subrepo-1 = subrepo-1 > .hgsub
842 $ echo subrepo-1 = subrepo-1 > .hgsub
843 $ echo subrepo-2 = subrepo-2 >> .hgsub
843 $ echo subrepo-2 = subrepo-2 >> .hgsub
844 $ hg add .hgsub
844 $ hg add .hgsub
845 $ hg ci -m 'Added subrepos'
845 $ hg ci -m 'Added subrepos'
846 committing subrepository subrepo-2
846 committing subrepository subrepo-2
847 $ hg st subrepo-2/file
847 $ hg st subrepo-2/file
848
848
849 Check that share works with subrepo
849 Check that share works with subrepo
850 $ hg --config extensions.share= share . ../shared
850 $ hg --config extensions.share= share . ../shared
851 updating working directory
851 updating working directory
852 cloning subrepo subrepo-2 from $TESTTMP/subrepo-status/subrepo-2
852 cloning subrepo subrepo-2 from $TESTTMP/subrepo-status/subrepo-2
853 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
853 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
854 $ test -f ../shared/subrepo-1/.hg/sharedpath
854 $ test -f ../shared/subrepo-1/.hg/sharedpath
855 [1]
855 [1]
856 $ hg -R ../shared in
856 $ hg -R ../shared in
857 abort: repository default not found!
857 abort: repository default not found!
858 [255]
858 [255]
859 $ hg -R ../shared/subrepo-2 showconfig paths
859 $ hg -R ../shared/subrepo-2 showconfig paths
860 paths.default=$TESTTMP/subrepo-status/subrepo-2
860 paths.default=$TESTTMP/subrepo-status/subrepo-2
861 $ hg -R ../shared/subrepo-1 sum --remote
861 $ hg -R ../shared/subrepo-1 sum --remote
862 parent: -1:000000000000 tip (empty repository)
862 parent: -1:000000000000 tip (empty repository)
863 branch: default
863 branch: default
864 commit: (clean)
864 commit: (clean)
865 update: (current)
865 update: (current)
866 remote: (synced)
866 remote: (synced)
867
867
868 Check hg update --clean
868 Check hg update --clean
869 $ cd $TESTTMP/t
869 $ cd $TESTTMP/t
870 $ rm -r t/t.orig
870 $ rm -r t/t.orig
871 $ hg status -S --all
871 $ hg status -S --all
872 C .hgsub
872 C .hgsub
873 C .hgsubstate
873 C .hgsubstate
874 C a
874 C a
875 C s/.hgsub
875 C s/.hgsub
876 C s/.hgsubstate
876 C s/.hgsubstate
877 C s/a
877 C s/a
878 C s/ss/a
878 C s/ss/a
879 C t/t
879 C t/t
880 $ echo c1 > s/a
880 $ echo c1 > s/a
881 $ cd s
881 $ cd s
882 $ echo c1 > b
882 $ echo c1 > b
883 $ echo c1 > c
883 $ echo c1 > c
884 $ hg add b
884 $ hg add b
885 $ cd ..
885 $ cd ..
886 $ hg status -S
886 $ hg status -S
887 M s/a
887 M s/a
888 A s/b
888 A s/b
889 ? s/c
889 ? s/c
890 $ hg update -C
890 $ hg update -C
891 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
891 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
892 $ hg status -S
892 $ hg status -S
893 ? s/b
893 ? s/b
894 ? s/c
894 ? s/c
895
895
896 Sticky subrepositories, no changes
896 Sticky subrepositories, no changes
897 $ cd $TESTTMP/t
897 $ cd $TESTTMP/t
898 $ hg id
898 $ hg id
899 925c17564ef8 tip
899 925c17564ef8 tip
900 $ hg -R s id
900 $ hg -R s id
901 12a213df6fa9 tip
901 12a213df6fa9 tip
902 $ hg -R t id
902 $ hg -R t id
903 52c0adc0515a tip
903 52c0adc0515a tip
904 $ hg update 11
904 $ hg update 11
905 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
905 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
906 $ hg id
906 $ hg id
907 365661e5936a
907 365661e5936a
908 $ hg -R s id
908 $ hg -R s id
909 fc627a69481f
909 fc627a69481f
910 $ hg -R t id
910 $ hg -R t id
911 e95bcfa18a35
911 e95bcfa18a35
912
912
913 Sticky subrepositorys, file changes
913 Sticky subrepositorys, file changes
914 $ touch s/f1
914 $ touch s/f1
915 $ touch t/f1
915 $ touch t/f1
916 $ hg add -S s/f1
916 $ hg add -S s/f1
917 $ hg add -S t/f1
917 $ hg add -S t/f1
918 $ hg id
918 $ hg id
919 365661e5936a+
919 365661e5936a+
920 $ hg -R s id
920 $ hg -R s id
921 fc627a69481f+
921 fc627a69481f+
922 $ hg -R t id
922 $ hg -R t id
923 e95bcfa18a35+
923 e95bcfa18a35+
924 $ hg update tip
924 $ hg update tip
925 subrepository sources for s differ
925 subrepository sources for s differ
926 use (l)ocal source (fc627a69481f) or (r)emote source (12a213df6fa9)?
926 use (l)ocal source (fc627a69481f) or (r)emote source (12a213df6fa9)?
927 l
927 l
928 subrepository sources for t differ
928 subrepository sources for t differ
929 use (l)ocal source (e95bcfa18a35) or (r)emote source (52c0adc0515a)?
929 use (l)ocal source (e95bcfa18a35) or (r)emote source (52c0adc0515a)?
930 l
930 l
931 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
931 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
932 $ hg id
932 $ hg id
933 925c17564ef8+ tip
933 925c17564ef8+ tip
934 $ hg -R s id
934 $ hg -R s id
935 fc627a69481f+
935 fc627a69481f+
936 $ hg -R t id
936 $ hg -R t id
937 e95bcfa18a35+
937 e95bcfa18a35+
938 $ hg update --clean tip
938 $ hg update --clean tip
939 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
939 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
940
940
941 Sticky subrepository, revision updates
941 Sticky subrepository, revision updates
942 $ hg id
942 $ hg id
943 925c17564ef8 tip
943 925c17564ef8 tip
944 $ hg -R s id
944 $ hg -R s id
945 12a213df6fa9 tip
945 12a213df6fa9 tip
946 $ hg -R t id
946 $ hg -R t id
947 52c0adc0515a tip
947 52c0adc0515a tip
948 $ cd s
948 $ cd s
949 $ hg update -r -2
949 $ hg update -r -2
950 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
950 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
951 $ cd ../t
951 $ cd ../t
952 $ hg update -r 2
952 $ hg update -r 2
953 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
953 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
954 $ cd ..
954 $ cd ..
955 $ hg update 10
955 $ hg update 10
956 subrepository sources for t differ (in checked out version)
956 subrepository sources for t differ (in checked out version)
957 use (l)ocal source (7af322bc1198) or (r)emote source (20a0db6fbf6c)?
957 use (l)ocal source (7af322bc1198) or (r)emote source (20a0db6fbf6c)?
958 l
958 l
959 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
959 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
960 $ hg id
960 $ hg id
961 e45c8b14af55+
961 e45c8b14af55+
962 $ hg -R s id
962 $ hg -R s id
963 02dcf1d70411
963 02dcf1d70411
964 $ hg -R t id
964 $ hg -R t id
965 7af322bc1198
965 7af322bc1198
966
966
967 Sticky subrepository, file changes and revision updates
967 Sticky subrepository, file changes and revision updates
968 $ touch s/f1
968 $ touch s/f1
969 $ touch t/f1
969 $ touch t/f1
970 $ hg add -S s/f1
970 $ hg add -S s/f1
971 $ hg add -S t/f1
971 $ hg add -S t/f1
972 $ hg id
972 $ hg id
973 e45c8b14af55+
973 e45c8b14af55+
974 $ hg -R s id
974 $ hg -R s id
975 02dcf1d70411+
975 02dcf1d70411+
976 $ hg -R t id
976 $ hg -R t id
977 7af322bc1198+
977 7af322bc1198+
978 $ hg update tip
978 $ hg update tip
979 subrepository sources for s differ
979 subrepository sources for s differ
980 use (l)ocal source (02dcf1d70411) or (r)emote source (12a213df6fa9)?
980 use (l)ocal source (02dcf1d70411) or (r)emote source (12a213df6fa9)?
981 l
981 l
982 subrepository sources for t differ
982 subrepository sources for t differ
983 use (l)ocal source (7af322bc1198) or (r)emote source (52c0adc0515a)?
983 use (l)ocal source (7af322bc1198) or (r)emote source (52c0adc0515a)?
984 l
984 l
985 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
985 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
986 $ hg id
986 $ hg id
987 925c17564ef8+ tip
987 925c17564ef8+ tip
988 $ hg -R s id
988 $ hg -R s id
989 02dcf1d70411+
989 02dcf1d70411+
990 $ hg -R t id
990 $ hg -R t id
991 7af322bc1198+
991 7af322bc1198+
992
992
993 Sticky repository, update --clean
993 Sticky repository, update --clean
994 $ hg update --clean tip
994 $ hg update --clean tip
995 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
995 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
996 $ hg id
996 $ hg id
997 925c17564ef8 tip
997 925c17564ef8 tip
998 $ hg -R s id
998 $ hg -R s id
999 12a213df6fa9 tip
999 12a213df6fa9 tip
1000 $ hg -R t id
1000 $ hg -R t id
1001 52c0adc0515a tip
1001 52c0adc0515a tip
1002
1002
1003 Test subrepo already at intended revision:
1003 Test subrepo already at intended revision:
1004 $ cd s
1004 $ cd s
1005 $ hg update fc627a69481f
1005 $ hg update fc627a69481f
1006 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1006 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1007 $ cd ..
1007 $ cd ..
1008 $ hg update 11
1008 $ hg update 11
1009 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1009 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1010 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1010 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1011 $ hg id -n
1011 $ hg id -n
1012 11+
1012 11+
1013 $ hg -R s id
1013 $ hg -R s id
1014 fc627a69481f
1014 fc627a69481f
1015 $ hg -R t id
1015 $ hg -R t id
1016 e95bcfa18a35
1016 e95bcfa18a35
1017
1017
1018 Test that removing .hgsubstate doesn't break anything:
1018 Test that removing .hgsubstate doesn't break anything:
1019
1019
1020 $ hg rm -f .hgsubstate
1020 $ hg rm -f .hgsubstate
1021 $ hg ci -mrm
1021 $ hg ci -mrm
1022 nothing changed
1022 nothing changed
1023 [1]
1023 [1]
1024 $ hg log -vr tip
1024 $ hg log -vr tip
1025 changeset: 13:925c17564ef8
1025 changeset: 13:925c17564ef8
1026 tag: tip
1026 tag: tip
1027 user: test
1027 user: test
1028 date: Thu Jan 01 00:00:00 1970 +0000
1028 date: Thu Jan 01 00:00:00 1970 +0000
1029 files: .hgsubstate
1029 files: .hgsubstate
1030 description:
1030 description:
1031 13
1031 13
1032
1032
1033
1033
1034
1034
1035 Test that removing .hgsub removes .hgsubstate:
1035 Test that removing .hgsub removes .hgsubstate:
1036
1036
1037 $ hg rm .hgsub
1037 $ hg rm .hgsub
1038 $ hg ci -mrm2
1038 $ hg ci -mrm2
1039 created new head
1039 created new head
1040 $ hg log -vr tip
1040 $ hg log -vr tip
1041 changeset: 14:2400bccd50af
1041 changeset: 14:2400bccd50af
1042 tag: tip
1042 tag: tip
1043 parent: 11:365661e5936a
1043 parent: 11:365661e5936a
1044 user: test
1044 user: test
1045 date: Thu Jan 01 00:00:00 1970 +0000
1045 date: Thu Jan 01 00:00:00 1970 +0000
1046 files: .hgsub .hgsubstate
1046 files: .hgsub .hgsubstate
1047 description:
1047 description:
1048 rm2
1048 rm2
1049
1049
1050
1050
1051 Test issue3153: diff -S with deleted subrepos
1051 Test issue3153: diff -S with deleted subrepos
1052
1052
1053 $ hg diff --nodates -S -c .
1053 $ hg diff --nodates -S -c .
1054 diff -r 365661e5936a -r 2400bccd50af .hgsub
1054 diff -r 365661e5936a -r 2400bccd50af .hgsub
1055 --- a/.hgsub
1055 --- a/.hgsub
1056 +++ /dev/null
1056 +++ /dev/null
1057 @@ -1,2 +0,0 @@
1057 @@ -1,2 +0,0 @@
1058 -s = s
1058 -s = s
1059 -t = t
1059 -t = t
1060 diff -r 365661e5936a -r 2400bccd50af .hgsubstate
1060 diff -r 365661e5936a -r 2400bccd50af .hgsubstate
1061 --- a/.hgsubstate
1061 --- a/.hgsubstate
1062 +++ /dev/null
1062 +++ /dev/null
1063 @@ -1,2 +0,0 @@
1063 @@ -1,2 +0,0 @@
1064 -fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
1064 -fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
1065 -e95bcfa18a358dc4936da981ebf4147b4cad1362 t
1065 -e95bcfa18a358dc4936da981ebf4147b4cad1362 t
1066
1066
1067 Test behavior of add for explicit path in subrepo:
1067 Test behavior of add for explicit path in subrepo:
1068 $ cd ..
1068 $ cd ..
1069 $ hg init explicit
1069 $ hg init explicit
1070 $ cd explicit
1070 $ cd explicit
1071 $ echo s = s > .hgsub
1071 $ echo s = s > .hgsub
1072 $ hg add .hgsub
1072 $ hg add .hgsub
1073 $ hg init s
1073 $ hg init s
1074 $ hg ci -m0
1074 $ hg ci -m0
1075 Adding with an explicit path in a subrepo adds the file
1075 Adding with an explicit path in a subrepo adds the file
1076 $ echo c1 > f1
1076 $ echo c1 > f1
1077 $ echo c2 > s/f2
1077 $ echo c2 > s/f2
1078 $ hg st -S
1078 $ hg st -S
1079 ? f1
1079 ? f1
1080 ? s/f2
1080 ? s/f2
1081 $ hg add s/f2
1081 $ hg add s/f2
1082 $ hg st -S
1082 $ hg st -S
1083 A s/f2
1083 A s/f2
1084 ? f1
1084 ? f1
1085 $ hg ci -R s -m0
1085 $ hg ci -R s -m0
1086 $ hg ci -Am1
1086 $ hg ci -Am1
1087 adding f1
1087 adding f1
1088 Adding with an explicit path in a subrepo with -S has the same behavior
1088 Adding with an explicit path in a subrepo with -S has the same behavior
1089 $ echo c3 > f3
1089 $ echo c3 > f3
1090 $ echo c4 > s/f4
1090 $ echo c4 > s/f4
1091 $ hg st -S
1091 $ hg st -S
1092 ? f3
1092 ? f3
1093 ? s/f4
1093 ? s/f4
1094 $ hg add -S s/f4
1094 $ hg add -S s/f4
1095 $ hg st -S
1095 $ hg st -S
1096 A s/f4
1096 A s/f4
1097 ? f3
1097 ? f3
1098 $ hg ci -R s -m1
1098 $ hg ci -R s -m1
1099 $ hg ci -Ama2
1099 $ hg ci -Ama2
1100 adding f3
1100 adding f3
1101 Adding without a path or pattern silently ignores subrepos
1101 Adding without a path or pattern silently ignores subrepos
1102 $ echo c5 > f5
1102 $ echo c5 > f5
1103 $ echo c6 > s/f6
1103 $ echo c6 > s/f6
1104 $ echo c7 > s/f7
1104 $ echo c7 > s/f7
1105 $ hg st -S
1105 $ hg st -S
1106 ? f5
1106 ? f5
1107 ? s/f6
1107 ? s/f6
1108 ? s/f7
1108 ? s/f7
1109 $ hg add
1109 $ hg add
1110 adding f5
1110 adding f5
1111 $ hg st -S
1111 $ hg st -S
1112 A f5
1112 A f5
1113 ? s/f6
1113 ? s/f6
1114 ? s/f7
1114 ? s/f7
1115 $ hg ci -R s -Am2
1115 $ hg ci -R s -Am2
1116 adding f6
1116 adding f6
1117 adding f7
1117 adding f7
1118 $ hg ci -m3
1118 $ hg ci -m3
1119 Adding without a path or pattern with -S also adds files in subrepos
1119 Adding without a path or pattern with -S also adds files in subrepos
1120 $ echo c8 > f8
1120 $ echo c8 > f8
1121 $ echo c9 > s/f9
1121 $ echo c9 > s/f9
1122 $ echo c10 > s/f10
1122 $ echo c10 > s/f10
1123 $ hg st -S
1123 $ hg st -S
1124 ? f8
1124 ? f8
1125 ? s/f10
1125 ? s/f10
1126 ? s/f9
1126 ? s/f9
1127 $ hg add -S
1127 $ hg add -S
1128 adding f8
1128 adding f8
1129 adding s/f10 (glob)
1129 adding s/f10 (glob)
1130 adding s/f9 (glob)
1130 adding s/f9 (glob)
1131 $ hg st -S
1131 $ hg st -S
1132 A f8
1132 A f8
1133 A s/f10
1133 A s/f10
1134 A s/f9
1134 A s/f9
1135 $ hg ci -R s -m3
1135 $ hg ci -R s -m3
1136 $ hg ci -m4
1136 $ hg ci -m4
1137 Adding with a pattern silently ignores subrepos
1137 Adding with a pattern silently ignores subrepos
1138 $ echo c11 > fm11
1138 $ echo c11 > fm11
1139 $ echo c12 > fn12
1139 $ echo c12 > fn12
1140 $ echo c13 > s/fm13
1140 $ echo c13 > s/fm13
1141 $ echo c14 > s/fn14
1141 $ echo c14 > s/fn14
1142 $ hg st -S
1142 $ hg st -S
1143 ? fm11
1143 ? fm11
1144 ? fn12
1144 ? fn12
1145 ? s/fm13
1145 ? s/fm13
1146 ? s/fn14
1146 ? s/fn14
1147 $ hg add 'glob:**fm*'
1147 $ hg add 'glob:**fm*'
1148 adding fm11
1148 adding fm11
1149 $ hg st -S
1149 $ hg st -S
1150 A fm11
1150 A fm11
1151 ? fn12
1151 ? fn12
1152 ? s/fm13
1152 ? s/fm13
1153 ? s/fn14
1153 ? s/fn14
1154 $ hg ci -R s -Am4
1154 $ hg ci -R s -Am4
1155 adding fm13
1155 adding fm13
1156 adding fn14
1156 adding fn14
1157 $ hg ci -Am5
1157 $ hg ci -Am5
1158 adding fn12
1158 adding fn12
1159 Adding with a pattern with -S also adds matches in subrepos
1159 Adding with a pattern with -S also adds matches in subrepos
1160 $ echo c15 > fm15
1160 $ echo c15 > fm15
1161 $ echo c16 > fn16
1161 $ echo c16 > fn16
1162 $ echo c17 > s/fm17
1162 $ echo c17 > s/fm17
1163 $ echo c18 > s/fn18
1163 $ echo c18 > s/fn18
1164 $ hg st -S
1164 $ hg st -S
1165 ? fm15
1165 ? fm15
1166 ? fn16
1166 ? fn16
1167 ? s/fm17
1167 ? s/fm17
1168 ? s/fn18
1168 ? s/fn18
1169 $ hg add -S 'glob:**fm*'
1169 $ hg add -S 'glob:**fm*'
1170 adding fm15
1170 adding fm15
1171 adding s/fm17 (glob)
1171 adding s/fm17 (glob)
1172 $ hg st -S
1172 $ hg st -S
1173 A fm15
1173 A fm15
1174 A s/fm17
1174 A s/fm17
1175 ? fn16
1175 ? fn16
1176 ? s/fn18
1176 ? s/fn18
1177 $ hg ci -R s -Am5
1177 $ hg ci -R s -Am5
1178 adding fn18
1178 adding fn18
1179 $ hg ci -Am6
1179 $ hg ci -Am6
1180 adding fn16
1180 adding fn16
1181
1181
1182 Test behavior of forget for explicit path in subrepo:
1182 Test behavior of forget for explicit path in subrepo:
1183 Forgetting an explicit path in a subrepo untracks the file
1183 Forgetting an explicit path in a subrepo untracks the file
1184 $ echo c19 > s/f19
1184 $ echo c19 > s/f19
1185 $ hg add s/f19
1185 $ hg add s/f19
1186 $ hg st -S
1186 $ hg st -S
1187 A s/f19
1187 A s/f19
1188 $ hg forget s/f19
1188 $ hg forget s/f19
1189 $ hg st -S
1189 $ hg st -S
1190 ? s/f19
1190 ? s/f19
1191 $ rm s/f19
1191 $ rm s/f19
1192 $ cd ..
1192 $ cd ..
1193
1193
1194 Courtesy phases synchronisation to publishing server does not block the push
1194 Courtesy phases synchronisation to publishing server does not block the push
1195 (issue3781)
1195 (issue3781)
1196
1196
1197 $ cp -r main issue3781
1197 $ cp -r main issue3781
1198 $ cp -r main issue3781-dest
1198 $ cp -r main issue3781-dest
1199 $ cd issue3781-dest/s
1199 $ cd issue3781-dest/s
1200 $ hg phase tip # show we have draft changeset
1200 $ hg phase tip # show we have draft changeset
1201 5: draft
1201 5: draft
1202 $ chmod a-w .hg/store/phaseroots # prevent phase push
1202 $ chmod a-w .hg/store/phaseroots # prevent phase push
1203 $ cd ../../issue3781
1203 $ cd ../../issue3781
1204 $ cat >> .hg/hgrc << EOF
1204 $ cat >> .hg/hgrc << EOF
1205 > [paths]
1205 > [paths]
1206 > default=../issue3781-dest/
1206 > default=../issue3781-dest/
1207 > EOF
1207 > EOF
1208 $ hg push
1208 $ hg push
1209 pushing to $TESTTMP/issue3781-dest (glob)
1209 pushing to $TESTTMP/issue3781-dest (glob)
1210 pushing subrepo s to $TESTTMP/issue3781-dest/s
1210 pushing subrepo s to $TESTTMP/issue3781-dest/s
1211 searching for changes
1211 searching for changes
1212 no changes found
1212 no changes found
1213 searching for changes
1213 searching for changes
1214 no changes found
1214 no changes found
1215 [1]
1215 [1]
1216
1216
General Comments 0
You need to be logged in to leave comments. Login now