##// END OF EJS Templates
test-acl: mock up util.getuser() to trust $LOGNAME on Windows...
Yuya Nishihara -
r36524:74c033b9 default
parent child Browse files
Show More
@@ -1,2183 +1,2210
1 > do_push()
1 > do_push()
2 > {
2 > {
3 > user=$1
3 > user=$1
4 > shift
4 > shift
5 > echo "Pushing as user $user"
5 > echo "Pushing as user $user"
6 > echo 'hgrc = """'
6 > echo 'hgrc = """'
7 > sed -n '/\[[ha]/,$p' b/.hg/hgrc | grep -v fakegroups.py
7 > sed -n '/\[[ha]/,$p' b/.hg/hgrc | grep -v fakegroups.py
8 > echo '"""'
8 > echo '"""'
9 > if test -f acl.config; then
9 > if test -f acl.config; then
10 > echo 'acl.config = """'
10 > echo 'acl.config = """'
11 > cat acl.config
11 > cat acl.config
12 > echo '"""'
12 > echo '"""'
13 > fi
13 > fi
14 > # On AIX /etc/profile sets LOGNAME read-only. So
14 > # On AIX /etc/profile sets LOGNAME read-only. So
15 > # LOGNAME=$user hg --cws a --debug push ../b
15 > # LOGNAME=$user hg --cws a --debug push ../b
16 > # fails with "This variable is read only."
16 > # fails with "This variable is read only."
17 > # Use env to work around this.
17 > # Use env to work around this.
18 > env LOGNAME=$user hg --cwd a --debug push ../b
18 > env LOGNAME=$user hg --cwd a --debug push ../b
19 > hg --cwd b rollback
19 > hg --cwd b rollback
20 > hg --cwd b --quiet tip
20 > hg --cwd b --quiet tip
21 > echo
21 > echo
22 > }
22 > }
23
23
24 > cat > posixgetuser.py <<'EOF'
25 > import getpass
26 > from mercurial import pycompat, util
27 > def posixgetuser():
28 > return pycompat.fsencode(getpass.getuser())
29 > if not pycompat.isposix:
30 > util.getuser = posixgetuser # forcibly trust $LOGNAME
31 > EOF
32
24 > init_config()
33 > init_config()
25 > {
34 > {
26 > cat > fakegroups.py <<EOF
35 > cat > fakegroups.py <<EOF
27 > from hgext import acl
36 > from hgext import acl
28 > def fakegetusers(ui, group):
37 > def fakegetusers(ui, group):
29 > try:
38 > try:
30 > return acl._getusersorig(ui, group)
39 > return acl._getusersorig(ui, group)
31 > except:
40 > except:
32 > return ["fred", "betty"]
41 > return ["fred", "betty"]
33 > acl._getusersorig = acl._getusers
42 > acl._getusersorig = acl._getusers
34 > acl._getusers = fakegetusers
43 > acl._getusers = fakegetusers
35 > EOF
44 > EOF
36 > rm -f acl.config
45 > rm -f acl.config
37 > cat > $config <<EOF
46 > cat > $config <<EOF
38 > [hooks]
47 > [hooks]
39 > pretxnchangegroup.acl = python:hgext.acl.hook
48 > pretxnchangegroup.acl = python:hgext.acl.hook
40 > [acl]
49 > [acl]
41 > sources = push
50 > sources = push
42 > [extensions]
51 > [extensions]
43 > f=`pwd`/fakegroups.py
52 > f=`pwd`/fakegroups.py
53 > posixgetuser=$TESTTMP/posixgetuser.py
44 > EOF
54 > EOF
45 > }
55 > }
46
56
47 $ hg init a
57 $ hg init a
48 $ cd a
58 $ cd a
49 $ mkdir foo foo/Bar quux
59 $ mkdir foo foo/Bar quux
50 $ echo 'in foo' > foo/file.txt
60 $ echo 'in foo' > foo/file.txt
51 $ echo 'in foo/Bar' > foo/Bar/file.txt
61 $ echo 'in foo/Bar' > foo/Bar/file.txt
52 $ echo 'in quux' > quux/file.py
62 $ echo 'in quux' > quux/file.py
53 $ hg add -q
63 $ hg add -q
54 $ hg ci -m 'add files' -d '1000000 0'
64 $ hg ci -m 'add files' -d '1000000 0'
55 $ echo >> foo/file.txt
65 $ echo >> foo/file.txt
56 $ hg ci -m 'change foo/file' -d '1000001 0'
66 $ hg ci -m 'change foo/file' -d '1000001 0'
57 $ echo >> foo/Bar/file.txt
67 $ echo >> foo/Bar/file.txt
58 $ hg ci -m 'change foo/Bar/file' -d '1000002 0'
68 $ hg ci -m 'change foo/Bar/file' -d '1000002 0'
59 $ echo >> quux/file.py
69 $ echo >> quux/file.py
60 $ hg ci -m 'change quux/file' -d '1000003 0'
70 $ hg ci -m 'change quux/file' -d '1000003 0'
61 $ hg tip --quiet
71 $ hg tip --quiet
62 3:911600dab2ae
72 3:911600dab2ae
63
73
64 $ cd ..
74 $ cd ..
65 $ hg clone -r 0 a b
75 $ hg clone -r 0 a b
66 adding changesets
76 adding changesets
67 adding manifests
77 adding manifests
68 adding file changes
78 adding file changes
69 added 1 changesets with 3 changes to 3 files
79 added 1 changesets with 3 changes to 3 files
70 new changesets 6675d58eff77
80 new changesets 6675d58eff77
71 updating to branch default
81 updating to branch default
72 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
82 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
73
83
74 $ config=b/.hg/hgrc
84 $ config=b/.hg/hgrc
85 $ cat >> "$config" <<EOF
86 > [extensions]
87 > posixgetuser=$TESTTMP/posixgetuser.py
88 > EOF
75
89
76 Extension disabled for lack of a hook
90 Extension disabled for lack of a hook
77
91
78 $ do_push fred
92 $ do_push fred
79 Pushing as user fred
93 Pushing as user fred
80 hgrc = """
94 hgrc = """
81 """
95 """
82 pushing to ../b
96 pushing to ../b
83 query 1; heads
97 query 1; heads
84 searching for changes
98 searching for changes
85 all remote heads known locally
99 all remote heads known locally
86 listing keys for "phases"
100 listing keys for "phases"
87 checking for updated bookmarks
101 checking for updated bookmarks
88 listing keys for "bookmarks"
102 listing keys for "bookmarks"
89 listing keys for "bookmarks"
103 listing keys for "bookmarks"
90 3 changesets found
104 3 changesets found
91 list of changesets:
105 list of changesets:
92 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
106 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
93 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
107 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
94 911600dab2ae7a9baff75958b84fe606851ce955
108 911600dab2ae7a9baff75958b84fe606851ce955
95 bundle2-output-bundle: "HG20", 5 parts total
109 bundle2-output-bundle: "HG20", 5 parts total
96 bundle2-output-part: "replycaps" 188 bytes payload
110 bundle2-output-part: "replycaps" 188 bytes payload
97 bundle2-output-part: "check:phases" 24 bytes payload
111 bundle2-output-part: "check:phases" 24 bytes payload
98 bundle2-output-part: "check:heads" streamed payload
112 bundle2-output-part: "check:heads" streamed payload
99 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
113 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
100 bundle2-output-part: "phase-heads" 24 bytes payload
114 bundle2-output-part: "phase-heads" 24 bytes payload
101 bundle2-input-bundle: with-transaction
115 bundle2-input-bundle: with-transaction
102 bundle2-input-part: "replycaps" supported
116 bundle2-input-part: "replycaps" supported
103 bundle2-input-part: total payload size 188
117 bundle2-input-part: total payload size 188
104 bundle2-input-part: "check:phases" supported
118 bundle2-input-part: "check:phases" supported
105 bundle2-input-part: total payload size 24
119 bundle2-input-part: total payload size 24
106 bundle2-input-part: "check:heads" supported
120 bundle2-input-part: "check:heads" supported
107 bundle2-input-part: total payload size 20
121 bundle2-input-part: total payload size 20
108 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
122 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
109 adding changesets
123 adding changesets
110 add changeset ef1ea85a6374
124 add changeset ef1ea85a6374
111 add changeset f9cafe1212c8
125 add changeset f9cafe1212c8
112 add changeset 911600dab2ae
126 add changeset 911600dab2ae
113 adding manifests
127 adding manifests
114 adding file changes
128 adding file changes
115 adding foo/Bar/file.txt revisions
129 adding foo/Bar/file.txt revisions
116 adding foo/file.txt revisions
130 adding foo/file.txt revisions
117 adding quux/file.py revisions
131 adding quux/file.py revisions
118 added 3 changesets with 3 changes to 3 files
132 added 3 changesets with 3 changes to 3 files
119 bundle2-input-part: total payload size 1553
133 bundle2-input-part: total payload size 1553
120 bundle2-input-part: "phase-heads" supported
134 bundle2-input-part: "phase-heads" supported
121 bundle2-input-part: total payload size 24
135 bundle2-input-part: total payload size 24
122 bundle2-input-bundle: 4 parts total
136 bundle2-input-bundle: 4 parts total
123 updating the branch cache
137 updating the branch cache
124 bundle2-output-bundle: "HG20", 1 parts total
138 bundle2-output-bundle: "HG20", 1 parts total
125 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
139 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
126 bundle2-input-bundle: no-transaction
140 bundle2-input-bundle: no-transaction
127 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
141 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
128 bundle2-input-bundle: 0 parts total
142 bundle2-input-bundle: 0 parts total
129 listing keys for "phases"
143 listing keys for "phases"
130 repository tip rolled back to revision 0 (undo push)
144 repository tip rolled back to revision 0 (undo push)
131 0:6675d58eff77
145 0:6675d58eff77
132
146
133
147
134 $ echo '[hooks]' >> $config
148 $ echo '[hooks]' >> $config
135 $ echo 'pretxnchangegroup.acl = python:hgext.acl.hook' >> $config
149 $ echo 'pretxnchangegroup.acl = python:hgext.acl.hook' >> $config
136
150
137 Extension disabled for lack of acl.sources
151 Extension disabled for lack of acl.sources
138
152
139 $ do_push fred
153 $ do_push fred
140 Pushing as user fred
154 Pushing as user fred
141 hgrc = """
155 hgrc = """
142 [hooks]
156 [hooks]
143 pretxnchangegroup.acl = python:hgext.acl.hook
157 pretxnchangegroup.acl = python:hgext.acl.hook
144 """
158 """
145 pushing to ../b
159 pushing to ../b
146 query 1; heads
160 query 1; heads
147 searching for changes
161 searching for changes
148 all remote heads known locally
162 all remote heads known locally
149 listing keys for "phases"
163 listing keys for "phases"
150 checking for updated bookmarks
164 checking for updated bookmarks
151 listing keys for "bookmarks"
165 listing keys for "bookmarks"
152 listing keys for "bookmarks"
166 listing keys for "bookmarks"
153 3 changesets found
167 3 changesets found
154 list of changesets:
168 list of changesets:
155 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
169 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
156 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
170 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
157 911600dab2ae7a9baff75958b84fe606851ce955
171 911600dab2ae7a9baff75958b84fe606851ce955
158 bundle2-output-bundle: "HG20", 5 parts total
172 bundle2-output-bundle: "HG20", 5 parts total
159 bundle2-output-part: "replycaps" 188 bytes payload
173 bundle2-output-part: "replycaps" 188 bytes payload
160 bundle2-output-part: "check:phases" 24 bytes payload
174 bundle2-output-part: "check:phases" 24 bytes payload
161 bundle2-output-part: "check:heads" streamed payload
175 bundle2-output-part: "check:heads" streamed payload
162 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
176 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
163 bundle2-output-part: "phase-heads" 24 bytes payload
177 bundle2-output-part: "phase-heads" 24 bytes payload
164 bundle2-input-bundle: with-transaction
178 bundle2-input-bundle: with-transaction
165 bundle2-input-part: "replycaps" supported
179 bundle2-input-part: "replycaps" supported
166 bundle2-input-part: total payload size 188
180 bundle2-input-part: total payload size 188
167 bundle2-input-part: "check:phases" supported
181 bundle2-input-part: "check:phases" supported
168 bundle2-input-part: total payload size 24
182 bundle2-input-part: total payload size 24
169 bundle2-input-part: "check:heads" supported
183 bundle2-input-part: "check:heads" supported
170 bundle2-input-part: total payload size 20
184 bundle2-input-part: total payload size 20
171 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
185 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
172 adding changesets
186 adding changesets
173 add changeset ef1ea85a6374
187 add changeset ef1ea85a6374
174 add changeset f9cafe1212c8
188 add changeset f9cafe1212c8
175 add changeset 911600dab2ae
189 add changeset 911600dab2ae
176 adding manifests
190 adding manifests
177 adding file changes
191 adding file changes
178 adding foo/Bar/file.txt revisions
192 adding foo/Bar/file.txt revisions
179 adding foo/file.txt revisions
193 adding foo/file.txt revisions
180 adding quux/file.py revisions
194 adding quux/file.py revisions
181 added 3 changesets with 3 changes to 3 files
195 added 3 changesets with 3 changes to 3 files
182 calling hook pretxnchangegroup.acl: hgext.acl.hook
196 calling hook pretxnchangegroup.acl: hgext.acl.hook
183 acl: changes have source "push" - skipping
197 acl: changes have source "push" - skipping
184 bundle2-input-part: total payload size 1553
198 bundle2-input-part: total payload size 1553
185 bundle2-input-part: "phase-heads" supported
199 bundle2-input-part: "phase-heads" supported
186 bundle2-input-part: total payload size 24
200 bundle2-input-part: total payload size 24
187 bundle2-input-bundle: 4 parts total
201 bundle2-input-bundle: 4 parts total
188 updating the branch cache
202 updating the branch cache
189 bundle2-output-bundle: "HG20", 1 parts total
203 bundle2-output-bundle: "HG20", 1 parts total
190 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
204 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
191 bundle2-input-bundle: no-transaction
205 bundle2-input-bundle: no-transaction
192 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
206 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
193 bundle2-input-bundle: 0 parts total
207 bundle2-input-bundle: 0 parts total
194 listing keys for "phases"
208 listing keys for "phases"
195 repository tip rolled back to revision 0 (undo push)
209 repository tip rolled back to revision 0 (undo push)
196 0:6675d58eff77
210 0:6675d58eff77
197
211
198
212
199 No [acl.allow]/[acl.deny]
213 No [acl.allow]/[acl.deny]
200
214
201 $ echo '[acl]' >> $config
215 $ echo '[acl]' >> $config
202 $ echo 'sources = push' >> $config
216 $ echo 'sources = push' >> $config
203 $ do_push fred
217 $ do_push fred
204 Pushing as user fred
218 Pushing as user fred
205 hgrc = """
219 hgrc = """
206 [hooks]
220 [hooks]
207 pretxnchangegroup.acl = python:hgext.acl.hook
221 pretxnchangegroup.acl = python:hgext.acl.hook
208 [acl]
222 [acl]
209 sources = push
223 sources = push
210 """
224 """
211 pushing to ../b
225 pushing to ../b
212 query 1; heads
226 query 1; heads
213 searching for changes
227 searching for changes
214 all remote heads known locally
228 all remote heads known locally
215 listing keys for "phases"
229 listing keys for "phases"
216 checking for updated bookmarks
230 checking for updated bookmarks
217 listing keys for "bookmarks"
231 listing keys for "bookmarks"
218 listing keys for "bookmarks"
232 listing keys for "bookmarks"
219 3 changesets found
233 3 changesets found
220 list of changesets:
234 list of changesets:
221 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
235 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
222 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
236 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
223 911600dab2ae7a9baff75958b84fe606851ce955
237 911600dab2ae7a9baff75958b84fe606851ce955
224 bundle2-output-bundle: "HG20", 5 parts total
238 bundle2-output-bundle: "HG20", 5 parts total
225 bundle2-output-part: "replycaps" 188 bytes payload
239 bundle2-output-part: "replycaps" 188 bytes payload
226 bundle2-output-part: "check:phases" 24 bytes payload
240 bundle2-output-part: "check:phases" 24 bytes payload
227 bundle2-output-part: "check:heads" streamed payload
241 bundle2-output-part: "check:heads" streamed payload
228 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
242 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
229 bundle2-output-part: "phase-heads" 24 bytes payload
243 bundle2-output-part: "phase-heads" 24 bytes payload
230 bundle2-input-bundle: with-transaction
244 bundle2-input-bundle: with-transaction
231 bundle2-input-part: "replycaps" supported
245 bundle2-input-part: "replycaps" supported
232 bundle2-input-part: total payload size 188
246 bundle2-input-part: total payload size 188
233 bundle2-input-part: "check:phases" supported
247 bundle2-input-part: "check:phases" supported
234 bundle2-input-part: total payload size 24
248 bundle2-input-part: total payload size 24
235 bundle2-input-part: "check:heads" supported
249 bundle2-input-part: "check:heads" supported
236 bundle2-input-part: total payload size 20
250 bundle2-input-part: total payload size 20
237 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
251 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
238 adding changesets
252 adding changesets
239 add changeset ef1ea85a6374
253 add changeset ef1ea85a6374
240 add changeset f9cafe1212c8
254 add changeset f9cafe1212c8
241 add changeset 911600dab2ae
255 add changeset 911600dab2ae
242 adding manifests
256 adding manifests
243 adding file changes
257 adding file changes
244 adding foo/Bar/file.txt revisions
258 adding foo/Bar/file.txt revisions
245 adding foo/file.txt revisions
259 adding foo/file.txt revisions
246 adding quux/file.py revisions
260 adding quux/file.py revisions
247 added 3 changesets with 3 changes to 3 files
261 added 3 changesets with 3 changes to 3 files
248 calling hook pretxnchangegroup.acl: hgext.acl.hook
262 calling hook pretxnchangegroup.acl: hgext.acl.hook
249 acl: checking access for user "fred"
263 acl: checking access for user "fred"
250 acl: acl.allow.branches not enabled
264 acl: acl.allow.branches not enabled
251 acl: acl.deny.branches not enabled
265 acl: acl.deny.branches not enabled
252 acl: acl.allow not enabled
266 acl: acl.allow not enabled
253 acl: acl.deny not enabled
267 acl: acl.deny not enabled
254 acl: branch access granted: "ef1ea85a6374" on branch "default"
268 acl: branch access granted: "ef1ea85a6374" on branch "default"
255 acl: path access granted: "ef1ea85a6374"
269 acl: path access granted: "ef1ea85a6374"
256 acl: branch access granted: "f9cafe1212c8" on branch "default"
270 acl: branch access granted: "f9cafe1212c8" on branch "default"
257 acl: path access granted: "f9cafe1212c8"
271 acl: path access granted: "f9cafe1212c8"
258 acl: branch access granted: "911600dab2ae" on branch "default"
272 acl: branch access granted: "911600dab2ae" on branch "default"
259 acl: path access granted: "911600dab2ae"
273 acl: path access granted: "911600dab2ae"
260 bundle2-input-part: total payload size 1553
274 bundle2-input-part: total payload size 1553
261 bundle2-input-part: "phase-heads" supported
275 bundle2-input-part: "phase-heads" supported
262 bundle2-input-part: total payload size 24
276 bundle2-input-part: total payload size 24
263 bundle2-input-bundle: 4 parts total
277 bundle2-input-bundle: 4 parts total
264 updating the branch cache
278 updating the branch cache
265 bundle2-output-bundle: "HG20", 1 parts total
279 bundle2-output-bundle: "HG20", 1 parts total
266 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
280 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
267 bundle2-input-bundle: no-transaction
281 bundle2-input-bundle: no-transaction
268 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
282 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
269 bundle2-input-bundle: 0 parts total
283 bundle2-input-bundle: 0 parts total
270 listing keys for "phases"
284 listing keys for "phases"
271 repository tip rolled back to revision 0 (undo push)
285 repository tip rolled back to revision 0 (undo push)
272 0:6675d58eff77
286 0:6675d58eff77
273
287
274
288
275 Empty [acl.allow]
289 Empty [acl.allow]
276
290
277 $ echo '[acl.allow]' >> $config
291 $ echo '[acl.allow]' >> $config
278 $ do_push fred
292 $ do_push fred
279 Pushing as user fred
293 Pushing as user fred
280 hgrc = """
294 hgrc = """
281 [hooks]
295 [hooks]
282 pretxnchangegroup.acl = python:hgext.acl.hook
296 pretxnchangegroup.acl = python:hgext.acl.hook
283 [acl]
297 [acl]
284 sources = push
298 sources = push
285 [acl.allow]
299 [acl.allow]
286 """
300 """
287 pushing to ../b
301 pushing to ../b
288 query 1; heads
302 query 1; heads
289 searching for changes
303 searching for changes
290 all remote heads known locally
304 all remote heads known locally
291 listing keys for "phases"
305 listing keys for "phases"
292 checking for updated bookmarks
306 checking for updated bookmarks
293 listing keys for "bookmarks"
307 listing keys for "bookmarks"
294 listing keys for "bookmarks"
308 listing keys for "bookmarks"
295 3 changesets found
309 3 changesets found
296 list of changesets:
310 list of changesets:
297 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
311 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
298 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
312 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
299 911600dab2ae7a9baff75958b84fe606851ce955
313 911600dab2ae7a9baff75958b84fe606851ce955
300 bundle2-output-bundle: "HG20", 5 parts total
314 bundle2-output-bundle: "HG20", 5 parts total
301 bundle2-output-part: "replycaps" 188 bytes payload
315 bundle2-output-part: "replycaps" 188 bytes payload
302 bundle2-output-part: "check:phases" 24 bytes payload
316 bundle2-output-part: "check:phases" 24 bytes payload
303 bundle2-output-part: "check:heads" streamed payload
317 bundle2-output-part: "check:heads" streamed payload
304 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
318 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
305 bundle2-output-part: "phase-heads" 24 bytes payload
319 bundle2-output-part: "phase-heads" 24 bytes payload
306 bundle2-input-bundle: with-transaction
320 bundle2-input-bundle: with-transaction
307 bundle2-input-part: "replycaps" supported
321 bundle2-input-part: "replycaps" supported
308 bundle2-input-part: total payload size 188
322 bundle2-input-part: total payload size 188
309 bundle2-input-part: "check:phases" supported
323 bundle2-input-part: "check:phases" supported
310 bundle2-input-part: total payload size 24
324 bundle2-input-part: total payload size 24
311 bundle2-input-part: "check:heads" supported
325 bundle2-input-part: "check:heads" supported
312 bundle2-input-part: total payload size 20
326 bundle2-input-part: total payload size 20
313 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
327 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
314 adding changesets
328 adding changesets
315 add changeset ef1ea85a6374
329 add changeset ef1ea85a6374
316 add changeset f9cafe1212c8
330 add changeset f9cafe1212c8
317 add changeset 911600dab2ae
331 add changeset 911600dab2ae
318 adding manifests
332 adding manifests
319 adding file changes
333 adding file changes
320 adding foo/Bar/file.txt revisions
334 adding foo/Bar/file.txt revisions
321 adding foo/file.txt revisions
335 adding foo/file.txt revisions
322 adding quux/file.py revisions
336 adding quux/file.py revisions
323 added 3 changesets with 3 changes to 3 files
337 added 3 changesets with 3 changes to 3 files
324 calling hook pretxnchangegroup.acl: hgext.acl.hook
338 calling hook pretxnchangegroup.acl: hgext.acl.hook
325 acl: checking access for user "fred"
339 acl: checking access for user "fred"
326 acl: acl.allow.branches not enabled
340 acl: acl.allow.branches not enabled
327 acl: acl.deny.branches not enabled
341 acl: acl.deny.branches not enabled
328 acl: acl.allow enabled, 0 entries for user fred
342 acl: acl.allow enabled, 0 entries for user fred
329 acl: acl.deny not enabled
343 acl: acl.deny not enabled
330 acl: branch access granted: "ef1ea85a6374" on branch "default"
344 acl: branch access granted: "ef1ea85a6374" on branch "default"
331 error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
345 error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
332 bundle2-input-part: total payload size 1553
346 bundle2-input-part: total payload size 1553
333 bundle2-input-part: total payload size 24
347 bundle2-input-part: total payload size 24
334 bundle2-input-bundle: 4 parts total
348 bundle2-input-bundle: 4 parts total
335 transaction abort!
349 transaction abort!
336 rollback completed
350 rollback completed
337 abort: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
351 abort: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
338 no rollback information available
352 no rollback information available
339 0:6675d58eff77
353 0:6675d58eff77
340
354
341
355
342 fred is allowed inside foo/
356 fred is allowed inside foo/
343
357
344 $ echo 'foo/** = fred' >> $config
358 $ echo 'foo/** = fred' >> $config
345 $ do_push fred
359 $ do_push fred
346 Pushing as user fred
360 Pushing as user fred
347 hgrc = """
361 hgrc = """
348 [hooks]
362 [hooks]
349 pretxnchangegroup.acl = python:hgext.acl.hook
363 pretxnchangegroup.acl = python:hgext.acl.hook
350 [acl]
364 [acl]
351 sources = push
365 sources = push
352 [acl.allow]
366 [acl.allow]
353 foo/** = fred
367 foo/** = fred
354 """
368 """
355 pushing to ../b
369 pushing to ../b
356 query 1; heads
370 query 1; heads
357 searching for changes
371 searching for changes
358 all remote heads known locally
372 all remote heads known locally
359 listing keys for "phases"
373 listing keys for "phases"
360 checking for updated bookmarks
374 checking for updated bookmarks
361 listing keys for "bookmarks"
375 listing keys for "bookmarks"
362 listing keys for "bookmarks"
376 listing keys for "bookmarks"
363 3 changesets found
377 3 changesets found
364 list of changesets:
378 list of changesets:
365 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
379 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
366 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
380 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
367 911600dab2ae7a9baff75958b84fe606851ce955
381 911600dab2ae7a9baff75958b84fe606851ce955
368 bundle2-output-bundle: "HG20", 5 parts total
382 bundle2-output-bundle: "HG20", 5 parts total
369 bundle2-output-part: "replycaps" 188 bytes payload
383 bundle2-output-part: "replycaps" 188 bytes payload
370 bundle2-output-part: "check:phases" 24 bytes payload
384 bundle2-output-part: "check:phases" 24 bytes payload
371 bundle2-output-part: "check:heads" streamed payload
385 bundle2-output-part: "check:heads" streamed payload
372 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
386 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
373 bundle2-output-part: "phase-heads" 24 bytes payload
387 bundle2-output-part: "phase-heads" 24 bytes payload
374 bundle2-input-bundle: with-transaction
388 bundle2-input-bundle: with-transaction
375 bundle2-input-part: "replycaps" supported
389 bundle2-input-part: "replycaps" supported
376 bundle2-input-part: total payload size 188
390 bundle2-input-part: total payload size 188
377 bundle2-input-part: "check:phases" supported
391 bundle2-input-part: "check:phases" supported
378 bundle2-input-part: total payload size 24
392 bundle2-input-part: total payload size 24
379 bundle2-input-part: "check:heads" supported
393 bundle2-input-part: "check:heads" supported
380 bundle2-input-part: total payload size 20
394 bundle2-input-part: total payload size 20
381 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
395 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
382 adding changesets
396 adding changesets
383 add changeset ef1ea85a6374
397 add changeset ef1ea85a6374
384 add changeset f9cafe1212c8
398 add changeset f9cafe1212c8
385 add changeset 911600dab2ae
399 add changeset 911600dab2ae
386 adding manifests
400 adding manifests
387 adding file changes
401 adding file changes
388 adding foo/Bar/file.txt revisions
402 adding foo/Bar/file.txt revisions
389 adding foo/file.txt revisions
403 adding foo/file.txt revisions
390 adding quux/file.py revisions
404 adding quux/file.py revisions
391 added 3 changesets with 3 changes to 3 files
405 added 3 changesets with 3 changes to 3 files
392 calling hook pretxnchangegroup.acl: hgext.acl.hook
406 calling hook pretxnchangegroup.acl: hgext.acl.hook
393 acl: checking access for user "fred"
407 acl: checking access for user "fred"
394 acl: acl.allow.branches not enabled
408 acl: acl.allow.branches not enabled
395 acl: acl.deny.branches not enabled
409 acl: acl.deny.branches not enabled
396 acl: acl.allow enabled, 1 entries for user fred
410 acl: acl.allow enabled, 1 entries for user fred
397 acl: acl.deny not enabled
411 acl: acl.deny not enabled
398 acl: branch access granted: "ef1ea85a6374" on branch "default"
412 acl: branch access granted: "ef1ea85a6374" on branch "default"
399 acl: path access granted: "ef1ea85a6374"
413 acl: path access granted: "ef1ea85a6374"
400 acl: branch access granted: "f9cafe1212c8" on branch "default"
414 acl: branch access granted: "f9cafe1212c8" on branch "default"
401 acl: path access granted: "f9cafe1212c8"
415 acl: path access granted: "f9cafe1212c8"
402 acl: branch access granted: "911600dab2ae" on branch "default"
416 acl: branch access granted: "911600dab2ae" on branch "default"
403 error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
417 error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
404 bundle2-input-part: total payload size 1553
418 bundle2-input-part: total payload size 1553
405 bundle2-input-part: total payload size 24
419 bundle2-input-part: total payload size 24
406 bundle2-input-bundle: 4 parts total
420 bundle2-input-bundle: 4 parts total
407 transaction abort!
421 transaction abort!
408 rollback completed
422 rollback completed
409 abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
423 abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
410 no rollback information available
424 no rollback information available
411 0:6675d58eff77
425 0:6675d58eff77
412
426
413
427
414 Empty [acl.deny]
428 Empty [acl.deny]
415
429
416 $ echo '[acl.deny]' >> $config
430 $ echo '[acl.deny]' >> $config
417 $ do_push barney
431 $ do_push barney
418 Pushing as user barney
432 Pushing as user barney
419 hgrc = """
433 hgrc = """
420 [hooks]
434 [hooks]
421 pretxnchangegroup.acl = python:hgext.acl.hook
435 pretxnchangegroup.acl = python:hgext.acl.hook
422 [acl]
436 [acl]
423 sources = push
437 sources = push
424 [acl.allow]
438 [acl.allow]
425 foo/** = fred
439 foo/** = fred
426 [acl.deny]
440 [acl.deny]
427 """
441 """
428 pushing to ../b
442 pushing to ../b
429 query 1; heads
443 query 1; heads
430 searching for changes
444 searching for changes
431 all remote heads known locally
445 all remote heads known locally
432 listing keys for "phases"
446 listing keys for "phases"
433 checking for updated bookmarks
447 checking for updated bookmarks
434 listing keys for "bookmarks"
448 listing keys for "bookmarks"
435 listing keys for "bookmarks"
449 listing keys for "bookmarks"
436 3 changesets found
450 3 changesets found
437 list of changesets:
451 list of changesets:
438 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
452 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
439 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
453 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
440 911600dab2ae7a9baff75958b84fe606851ce955
454 911600dab2ae7a9baff75958b84fe606851ce955
441 bundle2-output-bundle: "HG20", 5 parts total
455 bundle2-output-bundle: "HG20", 5 parts total
442 bundle2-output-part: "replycaps" 188 bytes payload
456 bundle2-output-part: "replycaps" 188 bytes payload
443 bundle2-output-part: "check:phases" 24 bytes payload
457 bundle2-output-part: "check:phases" 24 bytes payload
444 bundle2-output-part: "check:heads" streamed payload
458 bundle2-output-part: "check:heads" streamed payload
445 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
459 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
446 bundle2-output-part: "phase-heads" 24 bytes payload
460 bundle2-output-part: "phase-heads" 24 bytes payload
447 bundle2-input-bundle: with-transaction
461 bundle2-input-bundle: with-transaction
448 bundle2-input-part: "replycaps" supported
462 bundle2-input-part: "replycaps" supported
449 bundle2-input-part: total payload size 188
463 bundle2-input-part: total payload size 188
450 bundle2-input-part: "check:phases" supported
464 bundle2-input-part: "check:phases" supported
451 bundle2-input-part: total payload size 24
465 bundle2-input-part: total payload size 24
452 bundle2-input-part: "check:heads" supported
466 bundle2-input-part: "check:heads" supported
453 bundle2-input-part: total payload size 20
467 bundle2-input-part: total payload size 20
454 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
468 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
455 adding changesets
469 adding changesets
456 add changeset ef1ea85a6374
470 add changeset ef1ea85a6374
457 add changeset f9cafe1212c8
471 add changeset f9cafe1212c8
458 add changeset 911600dab2ae
472 add changeset 911600dab2ae
459 adding manifests
473 adding manifests
460 adding file changes
474 adding file changes
461 adding foo/Bar/file.txt revisions
475 adding foo/Bar/file.txt revisions
462 adding foo/file.txt revisions
476 adding foo/file.txt revisions
463 adding quux/file.py revisions
477 adding quux/file.py revisions
464 added 3 changesets with 3 changes to 3 files
478 added 3 changesets with 3 changes to 3 files
465 calling hook pretxnchangegroup.acl: hgext.acl.hook
479 calling hook pretxnchangegroup.acl: hgext.acl.hook
466 acl: checking access for user "barney"
480 acl: checking access for user "barney"
467 acl: acl.allow.branches not enabled
481 acl: acl.allow.branches not enabled
468 acl: acl.deny.branches not enabled
482 acl: acl.deny.branches not enabled
469 acl: acl.allow enabled, 0 entries for user barney
483 acl: acl.allow enabled, 0 entries for user barney
470 acl: acl.deny enabled, 0 entries for user barney
484 acl: acl.deny enabled, 0 entries for user barney
471 acl: branch access granted: "ef1ea85a6374" on branch "default"
485 acl: branch access granted: "ef1ea85a6374" on branch "default"
472 error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
486 error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
473 bundle2-input-part: total payload size 1553
487 bundle2-input-part: total payload size 1553
474 bundle2-input-part: total payload size 24
488 bundle2-input-part: total payload size 24
475 bundle2-input-bundle: 4 parts total
489 bundle2-input-bundle: 4 parts total
476 transaction abort!
490 transaction abort!
477 rollback completed
491 rollback completed
478 abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
492 abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
479 no rollback information available
493 no rollback information available
480 0:6675d58eff77
494 0:6675d58eff77
481
495
482
496
483 fred is allowed inside foo/, but not foo/bar/ (case matters)
497 fred is allowed inside foo/, but not foo/bar/ (case matters)
484
498
485 $ echo 'foo/bar/** = fred' >> $config
499 $ echo 'foo/bar/** = fred' >> $config
486 $ do_push fred
500 $ do_push fred
487 Pushing as user fred
501 Pushing as user fred
488 hgrc = """
502 hgrc = """
489 [hooks]
503 [hooks]
490 pretxnchangegroup.acl = python:hgext.acl.hook
504 pretxnchangegroup.acl = python:hgext.acl.hook
491 [acl]
505 [acl]
492 sources = push
506 sources = push
493 [acl.allow]
507 [acl.allow]
494 foo/** = fred
508 foo/** = fred
495 [acl.deny]
509 [acl.deny]
496 foo/bar/** = fred
510 foo/bar/** = fred
497 """
511 """
498 pushing to ../b
512 pushing to ../b
499 query 1; heads
513 query 1; heads
500 searching for changes
514 searching for changes
501 all remote heads known locally
515 all remote heads known locally
502 listing keys for "phases"
516 listing keys for "phases"
503 checking for updated bookmarks
517 checking for updated bookmarks
504 listing keys for "bookmarks"
518 listing keys for "bookmarks"
505 listing keys for "bookmarks"
519 listing keys for "bookmarks"
506 3 changesets found
520 3 changesets found
507 list of changesets:
521 list of changesets:
508 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
522 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
509 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
523 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
510 911600dab2ae7a9baff75958b84fe606851ce955
524 911600dab2ae7a9baff75958b84fe606851ce955
511 bundle2-output-bundle: "HG20", 5 parts total
525 bundle2-output-bundle: "HG20", 5 parts total
512 bundle2-output-part: "replycaps" 188 bytes payload
526 bundle2-output-part: "replycaps" 188 bytes payload
513 bundle2-output-part: "check:phases" 24 bytes payload
527 bundle2-output-part: "check:phases" 24 bytes payload
514 bundle2-output-part: "check:heads" streamed payload
528 bundle2-output-part: "check:heads" streamed payload
515 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
529 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
516 bundle2-output-part: "phase-heads" 24 bytes payload
530 bundle2-output-part: "phase-heads" 24 bytes payload
517 bundle2-input-bundle: with-transaction
531 bundle2-input-bundle: with-transaction
518 bundle2-input-part: "replycaps" supported
532 bundle2-input-part: "replycaps" supported
519 bundle2-input-part: total payload size 188
533 bundle2-input-part: total payload size 188
520 bundle2-input-part: "check:phases" supported
534 bundle2-input-part: "check:phases" supported
521 bundle2-input-part: total payload size 24
535 bundle2-input-part: total payload size 24
522 bundle2-input-part: "check:heads" supported
536 bundle2-input-part: "check:heads" supported
523 bundle2-input-part: total payload size 20
537 bundle2-input-part: total payload size 20
524 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
538 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
525 adding changesets
539 adding changesets
526 add changeset ef1ea85a6374
540 add changeset ef1ea85a6374
527 add changeset f9cafe1212c8
541 add changeset f9cafe1212c8
528 add changeset 911600dab2ae
542 add changeset 911600dab2ae
529 adding manifests
543 adding manifests
530 adding file changes
544 adding file changes
531 adding foo/Bar/file.txt revisions
545 adding foo/Bar/file.txt revisions
532 adding foo/file.txt revisions
546 adding foo/file.txt revisions
533 adding quux/file.py revisions
547 adding quux/file.py revisions
534 added 3 changesets with 3 changes to 3 files
548 added 3 changesets with 3 changes to 3 files
535 calling hook pretxnchangegroup.acl: hgext.acl.hook
549 calling hook pretxnchangegroup.acl: hgext.acl.hook
536 acl: checking access for user "fred"
550 acl: checking access for user "fred"
537 acl: acl.allow.branches not enabled
551 acl: acl.allow.branches not enabled
538 acl: acl.deny.branches not enabled
552 acl: acl.deny.branches not enabled
539 acl: acl.allow enabled, 1 entries for user fred
553 acl: acl.allow enabled, 1 entries for user fred
540 acl: acl.deny enabled, 1 entries for user fred
554 acl: acl.deny enabled, 1 entries for user fred
541 acl: branch access granted: "ef1ea85a6374" on branch "default"
555 acl: branch access granted: "ef1ea85a6374" on branch "default"
542 acl: path access granted: "ef1ea85a6374"
556 acl: path access granted: "ef1ea85a6374"
543 acl: branch access granted: "f9cafe1212c8" on branch "default"
557 acl: branch access granted: "f9cafe1212c8" on branch "default"
544 acl: path access granted: "f9cafe1212c8"
558 acl: path access granted: "f9cafe1212c8"
545 acl: branch access granted: "911600dab2ae" on branch "default"
559 acl: branch access granted: "911600dab2ae" on branch "default"
546 error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
560 error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
547 bundle2-input-part: total payload size 1553
561 bundle2-input-part: total payload size 1553
548 bundle2-input-part: total payload size 24
562 bundle2-input-part: total payload size 24
549 bundle2-input-bundle: 4 parts total
563 bundle2-input-bundle: 4 parts total
550 transaction abort!
564 transaction abort!
551 rollback completed
565 rollback completed
552 abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
566 abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
553 no rollback information available
567 no rollback information available
554 0:6675d58eff77
568 0:6675d58eff77
555
569
556
570
557 fred is allowed inside foo/, but not foo/Bar/
571 fred is allowed inside foo/, but not foo/Bar/
558
572
559 $ echo 'foo/Bar/** = fred' >> $config
573 $ echo 'foo/Bar/** = fred' >> $config
560 $ do_push fred
574 $ do_push fred
561 Pushing as user fred
575 Pushing as user fred
562 hgrc = """
576 hgrc = """
563 [hooks]
577 [hooks]
564 pretxnchangegroup.acl = python:hgext.acl.hook
578 pretxnchangegroup.acl = python:hgext.acl.hook
565 [acl]
579 [acl]
566 sources = push
580 sources = push
567 [acl.allow]
581 [acl.allow]
568 foo/** = fred
582 foo/** = fred
569 [acl.deny]
583 [acl.deny]
570 foo/bar/** = fred
584 foo/bar/** = fred
571 foo/Bar/** = fred
585 foo/Bar/** = fred
572 """
586 """
573 pushing to ../b
587 pushing to ../b
574 query 1; heads
588 query 1; heads
575 searching for changes
589 searching for changes
576 all remote heads known locally
590 all remote heads known locally
577 listing keys for "phases"
591 listing keys for "phases"
578 checking for updated bookmarks
592 checking for updated bookmarks
579 listing keys for "bookmarks"
593 listing keys for "bookmarks"
580 listing keys for "bookmarks"
594 listing keys for "bookmarks"
581 3 changesets found
595 3 changesets found
582 list of changesets:
596 list of changesets:
583 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
597 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
584 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
598 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
585 911600dab2ae7a9baff75958b84fe606851ce955
599 911600dab2ae7a9baff75958b84fe606851ce955
586 bundle2-output-bundle: "HG20", 5 parts total
600 bundle2-output-bundle: "HG20", 5 parts total
587 bundle2-output-part: "replycaps" 188 bytes payload
601 bundle2-output-part: "replycaps" 188 bytes payload
588 bundle2-output-part: "check:phases" 24 bytes payload
602 bundle2-output-part: "check:phases" 24 bytes payload
589 bundle2-output-part: "check:heads" streamed payload
603 bundle2-output-part: "check:heads" streamed payload
590 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
604 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
591 bundle2-output-part: "phase-heads" 24 bytes payload
605 bundle2-output-part: "phase-heads" 24 bytes payload
592 bundle2-input-bundle: with-transaction
606 bundle2-input-bundle: with-transaction
593 bundle2-input-part: "replycaps" supported
607 bundle2-input-part: "replycaps" supported
594 bundle2-input-part: total payload size 188
608 bundle2-input-part: total payload size 188
595 bundle2-input-part: "check:phases" supported
609 bundle2-input-part: "check:phases" supported
596 bundle2-input-part: total payload size 24
610 bundle2-input-part: total payload size 24
597 bundle2-input-part: "check:heads" supported
611 bundle2-input-part: "check:heads" supported
598 bundle2-input-part: total payload size 20
612 bundle2-input-part: total payload size 20
599 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
613 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
600 adding changesets
614 adding changesets
601 add changeset ef1ea85a6374
615 add changeset ef1ea85a6374
602 add changeset f9cafe1212c8
616 add changeset f9cafe1212c8
603 add changeset 911600dab2ae
617 add changeset 911600dab2ae
604 adding manifests
618 adding manifests
605 adding file changes
619 adding file changes
606 adding foo/Bar/file.txt revisions
620 adding foo/Bar/file.txt revisions
607 adding foo/file.txt revisions
621 adding foo/file.txt revisions
608 adding quux/file.py revisions
622 adding quux/file.py revisions
609 added 3 changesets with 3 changes to 3 files
623 added 3 changesets with 3 changes to 3 files
610 calling hook pretxnchangegroup.acl: hgext.acl.hook
624 calling hook pretxnchangegroup.acl: hgext.acl.hook
611 acl: checking access for user "fred"
625 acl: checking access for user "fred"
612 acl: acl.allow.branches not enabled
626 acl: acl.allow.branches not enabled
613 acl: acl.deny.branches not enabled
627 acl: acl.deny.branches not enabled
614 acl: acl.allow enabled, 1 entries for user fred
628 acl: acl.allow enabled, 1 entries for user fred
615 acl: acl.deny enabled, 2 entries for user fred
629 acl: acl.deny enabled, 2 entries for user fred
616 acl: branch access granted: "ef1ea85a6374" on branch "default"
630 acl: branch access granted: "ef1ea85a6374" on branch "default"
617 acl: path access granted: "ef1ea85a6374"
631 acl: path access granted: "ef1ea85a6374"
618 acl: branch access granted: "f9cafe1212c8" on branch "default"
632 acl: branch access granted: "f9cafe1212c8" on branch "default"
619 error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
633 error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
620 bundle2-input-part: total payload size 1553
634 bundle2-input-part: total payload size 1553
621 bundle2-input-part: total payload size 24
635 bundle2-input-part: total payload size 24
622 bundle2-input-bundle: 4 parts total
636 bundle2-input-bundle: 4 parts total
623 transaction abort!
637 transaction abort!
624 rollback completed
638 rollback completed
625 abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
639 abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
626 no rollback information available
640 no rollback information available
627 0:6675d58eff77
641 0:6675d58eff77
628
642
629
643
630 $ echo 'barney is not mentioned => not allowed anywhere'
644 $ echo 'barney is not mentioned => not allowed anywhere'
631 barney is not mentioned => not allowed anywhere
645 barney is not mentioned => not allowed anywhere
632 $ do_push barney
646 $ do_push barney
633 Pushing as user barney
647 Pushing as user barney
634 hgrc = """
648 hgrc = """
635 [hooks]
649 [hooks]
636 pretxnchangegroup.acl = python:hgext.acl.hook
650 pretxnchangegroup.acl = python:hgext.acl.hook
637 [acl]
651 [acl]
638 sources = push
652 sources = push
639 [acl.allow]
653 [acl.allow]
640 foo/** = fred
654 foo/** = fred
641 [acl.deny]
655 [acl.deny]
642 foo/bar/** = fred
656 foo/bar/** = fred
643 foo/Bar/** = fred
657 foo/Bar/** = fred
644 """
658 """
645 pushing to ../b
659 pushing to ../b
646 query 1; heads
660 query 1; heads
647 searching for changes
661 searching for changes
648 all remote heads known locally
662 all remote heads known locally
649 listing keys for "phases"
663 listing keys for "phases"
650 checking for updated bookmarks
664 checking for updated bookmarks
651 listing keys for "bookmarks"
665 listing keys for "bookmarks"
652 listing keys for "bookmarks"
666 listing keys for "bookmarks"
653 3 changesets found
667 3 changesets found
654 list of changesets:
668 list of changesets:
655 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
669 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
656 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
670 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
657 911600dab2ae7a9baff75958b84fe606851ce955
671 911600dab2ae7a9baff75958b84fe606851ce955
658 bundle2-output-bundle: "HG20", 5 parts total
672 bundle2-output-bundle: "HG20", 5 parts total
659 bundle2-output-part: "replycaps" 188 bytes payload
673 bundle2-output-part: "replycaps" 188 bytes payload
660 bundle2-output-part: "check:phases" 24 bytes payload
674 bundle2-output-part: "check:phases" 24 bytes payload
661 bundle2-output-part: "check:heads" streamed payload
675 bundle2-output-part: "check:heads" streamed payload
662 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
676 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
663 bundle2-output-part: "phase-heads" 24 bytes payload
677 bundle2-output-part: "phase-heads" 24 bytes payload
664 bundle2-input-bundle: with-transaction
678 bundle2-input-bundle: with-transaction
665 bundle2-input-part: "replycaps" supported
679 bundle2-input-part: "replycaps" supported
666 bundle2-input-part: total payload size 188
680 bundle2-input-part: total payload size 188
667 bundle2-input-part: "check:phases" supported
681 bundle2-input-part: "check:phases" supported
668 bundle2-input-part: total payload size 24
682 bundle2-input-part: total payload size 24
669 bundle2-input-part: "check:heads" supported
683 bundle2-input-part: "check:heads" supported
670 bundle2-input-part: total payload size 20
684 bundle2-input-part: total payload size 20
671 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
685 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
672 adding changesets
686 adding changesets
673 add changeset ef1ea85a6374
687 add changeset ef1ea85a6374
674 add changeset f9cafe1212c8
688 add changeset f9cafe1212c8
675 add changeset 911600dab2ae
689 add changeset 911600dab2ae
676 adding manifests
690 adding manifests
677 adding file changes
691 adding file changes
678 adding foo/Bar/file.txt revisions
692 adding foo/Bar/file.txt revisions
679 adding foo/file.txt revisions
693 adding foo/file.txt revisions
680 adding quux/file.py revisions
694 adding quux/file.py revisions
681 added 3 changesets with 3 changes to 3 files
695 added 3 changesets with 3 changes to 3 files
682 calling hook pretxnchangegroup.acl: hgext.acl.hook
696 calling hook pretxnchangegroup.acl: hgext.acl.hook
683 acl: checking access for user "barney"
697 acl: checking access for user "barney"
684 acl: acl.allow.branches not enabled
698 acl: acl.allow.branches not enabled
685 acl: acl.deny.branches not enabled
699 acl: acl.deny.branches not enabled
686 acl: acl.allow enabled, 0 entries for user barney
700 acl: acl.allow enabled, 0 entries for user barney
687 acl: acl.deny enabled, 0 entries for user barney
701 acl: acl.deny enabled, 0 entries for user barney
688 acl: branch access granted: "ef1ea85a6374" on branch "default"
702 acl: branch access granted: "ef1ea85a6374" on branch "default"
689 error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
703 error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
690 bundle2-input-part: total payload size 1553
704 bundle2-input-part: total payload size 1553
691 bundle2-input-part: total payload size 24
705 bundle2-input-part: total payload size 24
692 bundle2-input-bundle: 4 parts total
706 bundle2-input-bundle: 4 parts total
693 transaction abort!
707 transaction abort!
694 rollback completed
708 rollback completed
695 abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
709 abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
696 no rollback information available
710 no rollback information available
697 0:6675d58eff77
711 0:6675d58eff77
698
712
699
713
700 barney is allowed everywhere
714 barney is allowed everywhere
701
715
702 $ echo '[acl.allow]' >> $config
716 $ echo '[acl.allow]' >> $config
703 $ echo '** = barney' >> $config
717 $ echo '** = barney' >> $config
704 $ do_push barney
718 $ do_push barney
705 Pushing as user barney
719 Pushing as user barney
706 hgrc = """
720 hgrc = """
707 [hooks]
721 [hooks]
708 pretxnchangegroup.acl = python:hgext.acl.hook
722 pretxnchangegroup.acl = python:hgext.acl.hook
709 [acl]
723 [acl]
710 sources = push
724 sources = push
711 [acl.allow]
725 [acl.allow]
712 foo/** = fred
726 foo/** = fred
713 [acl.deny]
727 [acl.deny]
714 foo/bar/** = fred
728 foo/bar/** = fred
715 foo/Bar/** = fred
729 foo/Bar/** = fred
716 [acl.allow]
730 [acl.allow]
717 ** = barney
731 ** = barney
718 """
732 """
719 pushing to ../b
733 pushing to ../b
720 query 1; heads
734 query 1; heads
721 searching for changes
735 searching for changes
722 all remote heads known locally
736 all remote heads known locally
723 listing keys for "phases"
737 listing keys for "phases"
724 checking for updated bookmarks
738 checking for updated bookmarks
725 listing keys for "bookmarks"
739 listing keys for "bookmarks"
726 listing keys for "bookmarks"
740 listing keys for "bookmarks"
727 3 changesets found
741 3 changesets found
728 list of changesets:
742 list of changesets:
729 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
743 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
730 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
744 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
731 911600dab2ae7a9baff75958b84fe606851ce955
745 911600dab2ae7a9baff75958b84fe606851ce955
732 bundle2-output-bundle: "HG20", 5 parts total
746 bundle2-output-bundle: "HG20", 5 parts total
733 bundle2-output-part: "replycaps" 188 bytes payload
747 bundle2-output-part: "replycaps" 188 bytes payload
734 bundle2-output-part: "check:phases" 24 bytes payload
748 bundle2-output-part: "check:phases" 24 bytes payload
735 bundle2-output-part: "check:heads" streamed payload
749 bundle2-output-part: "check:heads" streamed payload
736 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
750 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
737 bundle2-output-part: "phase-heads" 24 bytes payload
751 bundle2-output-part: "phase-heads" 24 bytes payload
738 bundle2-input-bundle: with-transaction
752 bundle2-input-bundle: with-transaction
739 bundle2-input-part: "replycaps" supported
753 bundle2-input-part: "replycaps" supported
740 bundle2-input-part: total payload size 188
754 bundle2-input-part: total payload size 188
741 bundle2-input-part: "check:phases" supported
755 bundle2-input-part: "check:phases" supported
742 bundle2-input-part: total payload size 24
756 bundle2-input-part: total payload size 24
743 bundle2-input-part: "check:heads" supported
757 bundle2-input-part: "check:heads" supported
744 bundle2-input-part: total payload size 20
758 bundle2-input-part: total payload size 20
745 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
759 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
746 adding changesets
760 adding changesets
747 add changeset ef1ea85a6374
761 add changeset ef1ea85a6374
748 add changeset f9cafe1212c8
762 add changeset f9cafe1212c8
749 add changeset 911600dab2ae
763 add changeset 911600dab2ae
750 adding manifests
764 adding manifests
751 adding file changes
765 adding file changes
752 adding foo/Bar/file.txt revisions
766 adding foo/Bar/file.txt revisions
753 adding foo/file.txt revisions
767 adding foo/file.txt revisions
754 adding quux/file.py revisions
768 adding quux/file.py revisions
755 added 3 changesets with 3 changes to 3 files
769 added 3 changesets with 3 changes to 3 files
756 calling hook pretxnchangegroup.acl: hgext.acl.hook
770 calling hook pretxnchangegroup.acl: hgext.acl.hook
757 acl: checking access for user "barney"
771 acl: checking access for user "barney"
758 acl: acl.allow.branches not enabled
772 acl: acl.allow.branches not enabled
759 acl: acl.deny.branches not enabled
773 acl: acl.deny.branches not enabled
760 acl: acl.allow enabled, 1 entries for user barney
774 acl: acl.allow enabled, 1 entries for user barney
761 acl: acl.deny enabled, 0 entries for user barney
775 acl: acl.deny enabled, 0 entries for user barney
762 acl: branch access granted: "ef1ea85a6374" on branch "default"
776 acl: branch access granted: "ef1ea85a6374" on branch "default"
763 acl: path access granted: "ef1ea85a6374"
777 acl: path access granted: "ef1ea85a6374"
764 acl: branch access granted: "f9cafe1212c8" on branch "default"
778 acl: branch access granted: "f9cafe1212c8" on branch "default"
765 acl: path access granted: "f9cafe1212c8"
779 acl: path access granted: "f9cafe1212c8"
766 acl: branch access granted: "911600dab2ae" on branch "default"
780 acl: branch access granted: "911600dab2ae" on branch "default"
767 acl: path access granted: "911600dab2ae"
781 acl: path access granted: "911600dab2ae"
768 bundle2-input-part: total payload size 1553
782 bundle2-input-part: total payload size 1553
769 bundle2-input-part: "phase-heads" supported
783 bundle2-input-part: "phase-heads" supported
770 bundle2-input-part: total payload size 24
784 bundle2-input-part: total payload size 24
771 bundle2-input-bundle: 4 parts total
785 bundle2-input-bundle: 4 parts total
772 updating the branch cache
786 updating the branch cache
773 bundle2-output-bundle: "HG20", 1 parts total
787 bundle2-output-bundle: "HG20", 1 parts total
774 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
788 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
775 bundle2-input-bundle: no-transaction
789 bundle2-input-bundle: no-transaction
776 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
790 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
777 bundle2-input-bundle: 0 parts total
791 bundle2-input-bundle: 0 parts total
778 listing keys for "phases"
792 listing keys for "phases"
779 repository tip rolled back to revision 0 (undo push)
793 repository tip rolled back to revision 0 (undo push)
780 0:6675d58eff77
794 0:6675d58eff77
781
795
782
796
783 wilma can change files with a .txt extension
797 wilma can change files with a .txt extension
784
798
785 $ echo '**/*.txt = wilma' >> $config
799 $ echo '**/*.txt = wilma' >> $config
786 $ do_push wilma
800 $ do_push wilma
787 Pushing as user wilma
801 Pushing as user wilma
788 hgrc = """
802 hgrc = """
789 [hooks]
803 [hooks]
790 pretxnchangegroup.acl = python:hgext.acl.hook
804 pretxnchangegroup.acl = python:hgext.acl.hook
791 [acl]
805 [acl]
792 sources = push
806 sources = push
793 [acl.allow]
807 [acl.allow]
794 foo/** = fred
808 foo/** = fred
795 [acl.deny]
809 [acl.deny]
796 foo/bar/** = fred
810 foo/bar/** = fred
797 foo/Bar/** = fred
811 foo/Bar/** = fred
798 [acl.allow]
812 [acl.allow]
799 ** = barney
813 ** = barney
800 **/*.txt = wilma
814 **/*.txt = wilma
801 """
815 """
802 pushing to ../b
816 pushing to ../b
803 query 1; heads
817 query 1; heads
804 searching for changes
818 searching for changes
805 all remote heads known locally
819 all remote heads known locally
806 listing keys for "phases"
820 listing keys for "phases"
807 checking for updated bookmarks
821 checking for updated bookmarks
808 listing keys for "bookmarks"
822 listing keys for "bookmarks"
809 listing keys for "bookmarks"
823 listing keys for "bookmarks"
810 3 changesets found
824 3 changesets found
811 list of changesets:
825 list of changesets:
812 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
826 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
813 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
827 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
814 911600dab2ae7a9baff75958b84fe606851ce955
828 911600dab2ae7a9baff75958b84fe606851ce955
815 bundle2-output-bundle: "HG20", 5 parts total
829 bundle2-output-bundle: "HG20", 5 parts total
816 bundle2-output-part: "replycaps" 188 bytes payload
830 bundle2-output-part: "replycaps" 188 bytes payload
817 bundle2-output-part: "check:phases" 24 bytes payload
831 bundle2-output-part: "check:phases" 24 bytes payload
818 bundle2-output-part: "check:heads" streamed payload
832 bundle2-output-part: "check:heads" streamed payload
819 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
833 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
820 bundle2-output-part: "phase-heads" 24 bytes payload
834 bundle2-output-part: "phase-heads" 24 bytes payload
821 bundle2-input-bundle: with-transaction
835 bundle2-input-bundle: with-transaction
822 bundle2-input-part: "replycaps" supported
836 bundle2-input-part: "replycaps" supported
823 bundle2-input-part: total payload size 188
837 bundle2-input-part: total payload size 188
824 bundle2-input-part: "check:phases" supported
838 bundle2-input-part: "check:phases" supported
825 bundle2-input-part: total payload size 24
839 bundle2-input-part: total payload size 24
826 bundle2-input-part: "check:heads" supported
840 bundle2-input-part: "check:heads" supported
827 bundle2-input-part: total payload size 20
841 bundle2-input-part: total payload size 20
828 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
842 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
829 adding changesets
843 adding changesets
830 add changeset ef1ea85a6374
844 add changeset ef1ea85a6374
831 add changeset f9cafe1212c8
845 add changeset f9cafe1212c8
832 add changeset 911600dab2ae
846 add changeset 911600dab2ae
833 adding manifests
847 adding manifests
834 adding file changes
848 adding file changes
835 adding foo/Bar/file.txt revisions
849 adding foo/Bar/file.txt revisions
836 adding foo/file.txt revisions
850 adding foo/file.txt revisions
837 adding quux/file.py revisions
851 adding quux/file.py revisions
838 added 3 changesets with 3 changes to 3 files
852 added 3 changesets with 3 changes to 3 files
839 calling hook pretxnchangegroup.acl: hgext.acl.hook
853 calling hook pretxnchangegroup.acl: hgext.acl.hook
840 acl: checking access for user "wilma"
854 acl: checking access for user "wilma"
841 acl: acl.allow.branches not enabled
855 acl: acl.allow.branches not enabled
842 acl: acl.deny.branches not enabled
856 acl: acl.deny.branches not enabled
843 acl: acl.allow enabled, 1 entries for user wilma
857 acl: acl.allow enabled, 1 entries for user wilma
844 acl: acl.deny enabled, 0 entries for user wilma
858 acl: acl.deny enabled, 0 entries for user wilma
845 acl: branch access granted: "ef1ea85a6374" on branch "default"
859 acl: branch access granted: "ef1ea85a6374" on branch "default"
846 acl: path access granted: "ef1ea85a6374"
860 acl: path access granted: "ef1ea85a6374"
847 acl: branch access granted: "f9cafe1212c8" on branch "default"
861 acl: branch access granted: "f9cafe1212c8" on branch "default"
848 acl: path access granted: "f9cafe1212c8"
862 acl: path access granted: "f9cafe1212c8"
849 acl: branch access granted: "911600dab2ae" on branch "default"
863 acl: branch access granted: "911600dab2ae" on branch "default"
850 error: pretxnchangegroup.acl hook failed: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
864 error: pretxnchangegroup.acl hook failed: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
851 bundle2-input-part: total payload size 1553
865 bundle2-input-part: total payload size 1553
852 bundle2-input-part: total payload size 24
866 bundle2-input-part: total payload size 24
853 bundle2-input-bundle: 4 parts total
867 bundle2-input-bundle: 4 parts total
854 transaction abort!
868 transaction abort!
855 rollback completed
869 rollback completed
856 abort: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
870 abort: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
857 no rollback information available
871 no rollback information available
858 0:6675d58eff77
872 0:6675d58eff77
859
873
860
874
861 file specified by acl.config does not exist
875 file specified by acl.config does not exist
862
876
863 $ echo '[acl]' >> $config
877 $ echo '[acl]' >> $config
864 $ echo 'config = ../acl.config' >> $config
878 $ echo 'config = ../acl.config' >> $config
865 $ do_push barney
879 $ do_push barney
866 Pushing as user barney
880 Pushing as user barney
867 hgrc = """
881 hgrc = """
868 [hooks]
882 [hooks]
869 pretxnchangegroup.acl = python:hgext.acl.hook
883 pretxnchangegroup.acl = python:hgext.acl.hook
870 [acl]
884 [acl]
871 sources = push
885 sources = push
872 [acl.allow]
886 [acl.allow]
873 foo/** = fred
887 foo/** = fred
874 [acl.deny]
888 [acl.deny]
875 foo/bar/** = fred
889 foo/bar/** = fred
876 foo/Bar/** = fred
890 foo/Bar/** = fred
877 [acl.allow]
891 [acl.allow]
878 ** = barney
892 ** = barney
879 **/*.txt = wilma
893 **/*.txt = wilma
880 [acl]
894 [acl]
881 config = ../acl.config
895 config = ../acl.config
882 """
896 """
883 pushing to ../b
897 pushing to ../b
884 query 1; heads
898 query 1; heads
885 searching for changes
899 searching for changes
886 all remote heads known locally
900 all remote heads known locally
887 listing keys for "phases"
901 listing keys for "phases"
888 checking for updated bookmarks
902 checking for updated bookmarks
889 listing keys for "bookmarks"
903 listing keys for "bookmarks"
890 listing keys for "bookmarks"
904 listing keys for "bookmarks"
891 3 changesets found
905 3 changesets found
892 list of changesets:
906 list of changesets:
893 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
907 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
894 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
908 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
895 911600dab2ae7a9baff75958b84fe606851ce955
909 911600dab2ae7a9baff75958b84fe606851ce955
896 bundle2-output-bundle: "HG20", 5 parts total
910 bundle2-output-bundle: "HG20", 5 parts total
897 bundle2-output-part: "replycaps" 188 bytes payload
911 bundle2-output-part: "replycaps" 188 bytes payload
898 bundle2-output-part: "check:phases" 24 bytes payload
912 bundle2-output-part: "check:phases" 24 bytes payload
899 bundle2-output-part: "check:heads" streamed payload
913 bundle2-output-part: "check:heads" streamed payload
900 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
914 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
901 bundle2-output-part: "phase-heads" 24 bytes payload
915 bundle2-output-part: "phase-heads" 24 bytes payload
902 bundle2-input-bundle: with-transaction
916 bundle2-input-bundle: with-transaction
903 bundle2-input-part: "replycaps" supported
917 bundle2-input-part: "replycaps" supported
904 bundle2-input-part: total payload size 188
918 bundle2-input-part: total payload size 188
905 bundle2-input-part: "check:phases" supported
919 bundle2-input-part: "check:phases" supported
906 bundle2-input-part: total payload size 24
920 bundle2-input-part: total payload size 24
907 bundle2-input-part: "check:heads" supported
921 bundle2-input-part: "check:heads" supported
908 bundle2-input-part: total payload size 20
922 bundle2-input-part: total payload size 20
909 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
923 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
910 adding changesets
924 adding changesets
911 add changeset ef1ea85a6374
925 add changeset ef1ea85a6374
912 add changeset f9cafe1212c8
926 add changeset f9cafe1212c8
913 add changeset 911600dab2ae
927 add changeset 911600dab2ae
914 adding manifests
928 adding manifests
915 adding file changes
929 adding file changes
916 adding foo/Bar/file.txt revisions
930 adding foo/Bar/file.txt revisions
917 adding foo/file.txt revisions
931 adding foo/file.txt revisions
918 adding quux/file.py revisions
932 adding quux/file.py revisions
919 added 3 changesets with 3 changes to 3 files
933 added 3 changesets with 3 changes to 3 files
920 calling hook pretxnchangegroup.acl: hgext.acl.hook
934 calling hook pretxnchangegroup.acl: hgext.acl.hook
921 acl: checking access for user "barney"
935 acl: checking access for user "barney"
922 error: pretxnchangegroup.acl hook raised an exception: [Errno *] * (glob)
936 error: pretxnchangegroup.acl hook raised an exception: [Errno *] * (glob)
923 bundle2-input-part: total payload size 1553
937 bundle2-input-part: total payload size 1553
924 bundle2-input-part: total payload size 24
938 bundle2-input-part: total payload size 24
925 bundle2-input-bundle: 4 parts total
939 bundle2-input-bundle: 4 parts total
926 transaction abort!
940 transaction abort!
927 rollback completed
941 rollback completed
928 abort: $ENOENT$: ../acl.config
942 abort: $ENOENT$: ../acl.config
929 no rollback information available
943 no rollback information available
930 0:6675d58eff77
944 0:6675d58eff77
931
945
932
946
933 betty is allowed inside foo/ by a acl.config file
947 betty is allowed inside foo/ by a acl.config file
934
948
935 $ echo '[acl.allow]' >> acl.config
949 $ echo '[acl.allow]' >> acl.config
936 $ echo 'foo/** = betty' >> acl.config
950 $ echo 'foo/** = betty' >> acl.config
937 $ do_push betty
951 $ do_push betty
938 Pushing as user betty
952 Pushing as user betty
939 hgrc = """
953 hgrc = """
940 [hooks]
954 [hooks]
941 pretxnchangegroup.acl = python:hgext.acl.hook
955 pretxnchangegroup.acl = python:hgext.acl.hook
942 [acl]
956 [acl]
943 sources = push
957 sources = push
944 [acl.allow]
958 [acl.allow]
945 foo/** = fred
959 foo/** = fred
946 [acl.deny]
960 [acl.deny]
947 foo/bar/** = fred
961 foo/bar/** = fred
948 foo/Bar/** = fred
962 foo/Bar/** = fred
949 [acl.allow]
963 [acl.allow]
950 ** = barney
964 ** = barney
951 **/*.txt = wilma
965 **/*.txt = wilma
952 [acl]
966 [acl]
953 config = ../acl.config
967 config = ../acl.config
954 """
968 """
955 acl.config = """
969 acl.config = """
956 [acl.allow]
970 [acl.allow]
957 foo/** = betty
971 foo/** = betty
958 """
972 """
959 pushing to ../b
973 pushing to ../b
960 query 1; heads
974 query 1; heads
961 searching for changes
975 searching for changes
962 all remote heads known locally
976 all remote heads known locally
963 listing keys for "phases"
977 listing keys for "phases"
964 checking for updated bookmarks
978 checking for updated bookmarks
965 listing keys for "bookmarks"
979 listing keys for "bookmarks"
966 listing keys for "bookmarks"
980 listing keys for "bookmarks"
967 3 changesets found
981 3 changesets found
968 list of changesets:
982 list of changesets:
969 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
983 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
970 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
984 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
971 911600dab2ae7a9baff75958b84fe606851ce955
985 911600dab2ae7a9baff75958b84fe606851ce955
972 bundle2-output-bundle: "HG20", 5 parts total
986 bundle2-output-bundle: "HG20", 5 parts total
973 bundle2-output-part: "replycaps" 188 bytes payload
987 bundle2-output-part: "replycaps" 188 bytes payload
974 bundle2-output-part: "check:phases" 24 bytes payload
988 bundle2-output-part: "check:phases" 24 bytes payload
975 bundle2-output-part: "check:heads" streamed payload
989 bundle2-output-part: "check:heads" streamed payload
976 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
990 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
977 bundle2-output-part: "phase-heads" 24 bytes payload
991 bundle2-output-part: "phase-heads" 24 bytes payload
978 bundle2-input-bundle: with-transaction
992 bundle2-input-bundle: with-transaction
979 bundle2-input-part: "replycaps" supported
993 bundle2-input-part: "replycaps" supported
980 bundle2-input-part: total payload size 188
994 bundle2-input-part: total payload size 188
981 bundle2-input-part: "check:phases" supported
995 bundle2-input-part: "check:phases" supported
982 bundle2-input-part: total payload size 24
996 bundle2-input-part: total payload size 24
983 bundle2-input-part: "check:heads" supported
997 bundle2-input-part: "check:heads" supported
984 bundle2-input-part: total payload size 20
998 bundle2-input-part: total payload size 20
985 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
999 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
986 adding changesets
1000 adding changesets
987 add changeset ef1ea85a6374
1001 add changeset ef1ea85a6374
988 add changeset f9cafe1212c8
1002 add changeset f9cafe1212c8
989 add changeset 911600dab2ae
1003 add changeset 911600dab2ae
990 adding manifests
1004 adding manifests
991 adding file changes
1005 adding file changes
992 adding foo/Bar/file.txt revisions
1006 adding foo/Bar/file.txt revisions
993 adding foo/file.txt revisions
1007 adding foo/file.txt revisions
994 adding quux/file.py revisions
1008 adding quux/file.py revisions
995 added 3 changesets with 3 changes to 3 files
1009 added 3 changesets with 3 changes to 3 files
996 calling hook pretxnchangegroup.acl: hgext.acl.hook
1010 calling hook pretxnchangegroup.acl: hgext.acl.hook
997 acl: checking access for user "betty"
1011 acl: checking access for user "betty"
998 acl: acl.allow.branches not enabled
1012 acl: acl.allow.branches not enabled
999 acl: acl.deny.branches not enabled
1013 acl: acl.deny.branches not enabled
1000 acl: acl.allow enabled, 1 entries for user betty
1014 acl: acl.allow enabled, 1 entries for user betty
1001 acl: acl.deny enabled, 0 entries for user betty
1015 acl: acl.deny enabled, 0 entries for user betty
1002 acl: branch access granted: "ef1ea85a6374" on branch "default"
1016 acl: branch access granted: "ef1ea85a6374" on branch "default"
1003 acl: path access granted: "ef1ea85a6374"
1017 acl: path access granted: "ef1ea85a6374"
1004 acl: branch access granted: "f9cafe1212c8" on branch "default"
1018 acl: branch access granted: "f9cafe1212c8" on branch "default"
1005 acl: path access granted: "f9cafe1212c8"
1019 acl: path access granted: "f9cafe1212c8"
1006 acl: branch access granted: "911600dab2ae" on branch "default"
1020 acl: branch access granted: "911600dab2ae" on branch "default"
1007 error: pretxnchangegroup.acl hook failed: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
1021 error: pretxnchangegroup.acl hook failed: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
1008 bundle2-input-part: total payload size 1553
1022 bundle2-input-part: total payload size 1553
1009 bundle2-input-part: total payload size 24
1023 bundle2-input-part: total payload size 24
1010 bundle2-input-bundle: 4 parts total
1024 bundle2-input-bundle: 4 parts total
1011 transaction abort!
1025 transaction abort!
1012 rollback completed
1026 rollback completed
1013 abort: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
1027 abort: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
1014 no rollback information available
1028 no rollback information available
1015 0:6675d58eff77
1029 0:6675d58eff77
1016
1030
1017
1031
1018 acl.config can set only [acl.allow]/[acl.deny]
1032 acl.config can set only [acl.allow]/[acl.deny]
1019
1033
1020 $ echo '[hooks]' >> acl.config
1034 $ echo '[hooks]' >> acl.config
1021 $ echo 'changegroup.acl = false' >> acl.config
1035 $ echo 'changegroup.acl = false' >> acl.config
1022 $ do_push barney
1036 $ do_push barney
1023 Pushing as user barney
1037 Pushing as user barney
1024 hgrc = """
1038 hgrc = """
1025 [hooks]
1039 [hooks]
1026 pretxnchangegroup.acl = python:hgext.acl.hook
1040 pretxnchangegroup.acl = python:hgext.acl.hook
1027 [acl]
1041 [acl]
1028 sources = push
1042 sources = push
1029 [acl.allow]
1043 [acl.allow]
1030 foo/** = fred
1044 foo/** = fred
1031 [acl.deny]
1045 [acl.deny]
1032 foo/bar/** = fred
1046 foo/bar/** = fred
1033 foo/Bar/** = fred
1047 foo/Bar/** = fred
1034 [acl.allow]
1048 [acl.allow]
1035 ** = barney
1049 ** = barney
1036 **/*.txt = wilma
1050 **/*.txt = wilma
1037 [acl]
1051 [acl]
1038 config = ../acl.config
1052 config = ../acl.config
1039 """
1053 """
1040 acl.config = """
1054 acl.config = """
1041 [acl.allow]
1055 [acl.allow]
1042 foo/** = betty
1056 foo/** = betty
1043 [hooks]
1057 [hooks]
1044 changegroup.acl = false
1058 changegroup.acl = false
1045 """
1059 """
1046 pushing to ../b
1060 pushing to ../b
1047 query 1; heads
1061 query 1; heads
1048 searching for changes
1062 searching for changes
1049 all remote heads known locally
1063 all remote heads known locally
1050 listing keys for "phases"
1064 listing keys for "phases"
1051 checking for updated bookmarks
1065 checking for updated bookmarks
1052 listing keys for "bookmarks"
1066 listing keys for "bookmarks"
1053 listing keys for "bookmarks"
1067 listing keys for "bookmarks"
1054 3 changesets found
1068 3 changesets found
1055 list of changesets:
1069 list of changesets:
1056 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1070 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1057 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1071 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1058 911600dab2ae7a9baff75958b84fe606851ce955
1072 911600dab2ae7a9baff75958b84fe606851ce955
1059 bundle2-output-bundle: "HG20", 5 parts total
1073 bundle2-output-bundle: "HG20", 5 parts total
1060 bundle2-output-part: "replycaps" 188 bytes payload
1074 bundle2-output-part: "replycaps" 188 bytes payload
1061 bundle2-output-part: "check:phases" 24 bytes payload
1075 bundle2-output-part: "check:phases" 24 bytes payload
1062 bundle2-output-part: "check:heads" streamed payload
1076 bundle2-output-part: "check:heads" streamed payload
1063 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1077 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1064 bundle2-output-part: "phase-heads" 24 bytes payload
1078 bundle2-output-part: "phase-heads" 24 bytes payload
1065 bundle2-input-bundle: with-transaction
1079 bundle2-input-bundle: with-transaction
1066 bundle2-input-part: "replycaps" supported
1080 bundle2-input-part: "replycaps" supported
1067 bundle2-input-part: total payload size 188
1081 bundle2-input-part: total payload size 188
1068 bundle2-input-part: "check:phases" supported
1082 bundle2-input-part: "check:phases" supported
1069 bundle2-input-part: total payload size 24
1083 bundle2-input-part: total payload size 24
1070 bundle2-input-part: "check:heads" supported
1084 bundle2-input-part: "check:heads" supported
1071 bundle2-input-part: total payload size 20
1085 bundle2-input-part: total payload size 20
1072 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1086 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1073 adding changesets
1087 adding changesets
1074 add changeset ef1ea85a6374
1088 add changeset ef1ea85a6374
1075 add changeset f9cafe1212c8
1089 add changeset f9cafe1212c8
1076 add changeset 911600dab2ae
1090 add changeset 911600dab2ae
1077 adding manifests
1091 adding manifests
1078 adding file changes
1092 adding file changes
1079 adding foo/Bar/file.txt revisions
1093 adding foo/Bar/file.txt revisions
1080 adding foo/file.txt revisions
1094 adding foo/file.txt revisions
1081 adding quux/file.py revisions
1095 adding quux/file.py revisions
1082 added 3 changesets with 3 changes to 3 files
1096 added 3 changesets with 3 changes to 3 files
1083 calling hook pretxnchangegroup.acl: hgext.acl.hook
1097 calling hook pretxnchangegroup.acl: hgext.acl.hook
1084 acl: checking access for user "barney"
1098 acl: checking access for user "barney"
1085 acl: acl.allow.branches not enabled
1099 acl: acl.allow.branches not enabled
1086 acl: acl.deny.branches not enabled
1100 acl: acl.deny.branches not enabled
1087 acl: acl.allow enabled, 1 entries for user barney
1101 acl: acl.allow enabled, 1 entries for user barney
1088 acl: acl.deny enabled, 0 entries for user barney
1102 acl: acl.deny enabled, 0 entries for user barney
1089 acl: branch access granted: "ef1ea85a6374" on branch "default"
1103 acl: branch access granted: "ef1ea85a6374" on branch "default"
1090 acl: path access granted: "ef1ea85a6374"
1104 acl: path access granted: "ef1ea85a6374"
1091 acl: branch access granted: "f9cafe1212c8" on branch "default"
1105 acl: branch access granted: "f9cafe1212c8" on branch "default"
1092 acl: path access granted: "f9cafe1212c8"
1106 acl: path access granted: "f9cafe1212c8"
1093 acl: branch access granted: "911600dab2ae" on branch "default"
1107 acl: branch access granted: "911600dab2ae" on branch "default"
1094 acl: path access granted: "911600dab2ae"
1108 acl: path access granted: "911600dab2ae"
1095 bundle2-input-part: total payload size 1553
1109 bundle2-input-part: total payload size 1553
1096 bundle2-input-part: "phase-heads" supported
1110 bundle2-input-part: "phase-heads" supported
1097 bundle2-input-part: total payload size 24
1111 bundle2-input-part: total payload size 24
1098 bundle2-input-bundle: 4 parts total
1112 bundle2-input-bundle: 4 parts total
1099 updating the branch cache
1113 updating the branch cache
1100 bundle2-output-bundle: "HG20", 1 parts total
1114 bundle2-output-bundle: "HG20", 1 parts total
1101 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1115 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1102 bundle2-input-bundle: no-transaction
1116 bundle2-input-bundle: no-transaction
1103 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1117 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1104 bundle2-input-bundle: 0 parts total
1118 bundle2-input-bundle: 0 parts total
1105 listing keys for "phases"
1119 listing keys for "phases"
1106 repository tip rolled back to revision 0 (undo push)
1120 repository tip rolled back to revision 0 (undo push)
1107 0:6675d58eff77
1121 0:6675d58eff77
1108
1122
1109
1123
1110 asterisk
1124 asterisk
1111
1125
1112 $ init_config
1126 $ init_config
1113
1127
1114 asterisk test
1128 asterisk test
1115
1129
1116 $ echo '[acl.allow]' >> $config
1130 $ echo '[acl.allow]' >> $config
1117 $ echo "** = fred" >> $config
1131 $ echo "** = fred" >> $config
1118
1132
1119 fred is always allowed
1133 fred is always allowed
1120
1134
1121 $ do_push fred
1135 $ do_push fred
1122 Pushing as user fred
1136 Pushing as user fred
1123 hgrc = """
1137 hgrc = """
1124 [hooks]
1138 [hooks]
1125 pretxnchangegroup.acl = python:hgext.acl.hook
1139 pretxnchangegroup.acl = python:hgext.acl.hook
1126 [acl]
1140 [acl]
1127 sources = push
1141 sources = push
1128 [extensions]
1142 [extensions]
1143 posixgetuser=$TESTTMP/posixgetuser.py
1129 [acl.allow]
1144 [acl.allow]
1130 ** = fred
1145 ** = fred
1131 """
1146 """
1132 pushing to ../b
1147 pushing to ../b
1133 query 1; heads
1148 query 1; heads
1134 searching for changes
1149 searching for changes
1135 all remote heads known locally
1150 all remote heads known locally
1136 listing keys for "phases"
1151 listing keys for "phases"
1137 checking for updated bookmarks
1152 checking for updated bookmarks
1138 listing keys for "bookmarks"
1153 listing keys for "bookmarks"
1139 listing keys for "bookmarks"
1154 listing keys for "bookmarks"
1140 3 changesets found
1155 3 changesets found
1141 list of changesets:
1156 list of changesets:
1142 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1157 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1143 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1158 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1144 911600dab2ae7a9baff75958b84fe606851ce955
1159 911600dab2ae7a9baff75958b84fe606851ce955
1145 bundle2-output-bundle: "HG20", 5 parts total
1160 bundle2-output-bundle: "HG20", 5 parts total
1146 bundle2-output-part: "replycaps" 188 bytes payload
1161 bundle2-output-part: "replycaps" 188 bytes payload
1147 bundle2-output-part: "check:phases" 24 bytes payload
1162 bundle2-output-part: "check:phases" 24 bytes payload
1148 bundle2-output-part: "check:heads" streamed payload
1163 bundle2-output-part: "check:heads" streamed payload
1149 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1164 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1150 bundle2-output-part: "phase-heads" 24 bytes payload
1165 bundle2-output-part: "phase-heads" 24 bytes payload
1151 bundle2-input-bundle: with-transaction
1166 bundle2-input-bundle: with-transaction
1152 bundle2-input-part: "replycaps" supported
1167 bundle2-input-part: "replycaps" supported
1153 bundle2-input-part: total payload size 188
1168 bundle2-input-part: total payload size 188
1154 bundle2-input-part: "check:phases" supported
1169 bundle2-input-part: "check:phases" supported
1155 bundle2-input-part: total payload size 24
1170 bundle2-input-part: total payload size 24
1156 bundle2-input-part: "check:heads" supported
1171 bundle2-input-part: "check:heads" supported
1157 bundle2-input-part: total payload size 20
1172 bundle2-input-part: total payload size 20
1158 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1173 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1159 adding changesets
1174 adding changesets
1160 add changeset ef1ea85a6374
1175 add changeset ef1ea85a6374
1161 add changeset f9cafe1212c8
1176 add changeset f9cafe1212c8
1162 add changeset 911600dab2ae
1177 add changeset 911600dab2ae
1163 adding manifests
1178 adding manifests
1164 adding file changes
1179 adding file changes
1165 adding foo/Bar/file.txt revisions
1180 adding foo/Bar/file.txt revisions
1166 adding foo/file.txt revisions
1181 adding foo/file.txt revisions
1167 adding quux/file.py revisions
1182 adding quux/file.py revisions
1168 added 3 changesets with 3 changes to 3 files
1183 added 3 changesets with 3 changes to 3 files
1169 calling hook pretxnchangegroup.acl: hgext.acl.hook
1184 calling hook pretxnchangegroup.acl: hgext.acl.hook
1170 acl: checking access for user "fred"
1185 acl: checking access for user "fred"
1171 acl: acl.allow.branches not enabled
1186 acl: acl.allow.branches not enabled
1172 acl: acl.deny.branches not enabled
1187 acl: acl.deny.branches not enabled
1173 acl: acl.allow enabled, 1 entries for user fred
1188 acl: acl.allow enabled, 1 entries for user fred
1174 acl: acl.deny not enabled
1189 acl: acl.deny not enabled
1175 acl: branch access granted: "ef1ea85a6374" on branch "default"
1190 acl: branch access granted: "ef1ea85a6374" on branch "default"
1176 acl: path access granted: "ef1ea85a6374"
1191 acl: path access granted: "ef1ea85a6374"
1177 acl: branch access granted: "f9cafe1212c8" on branch "default"
1192 acl: branch access granted: "f9cafe1212c8" on branch "default"
1178 acl: path access granted: "f9cafe1212c8"
1193 acl: path access granted: "f9cafe1212c8"
1179 acl: branch access granted: "911600dab2ae" on branch "default"
1194 acl: branch access granted: "911600dab2ae" on branch "default"
1180 acl: path access granted: "911600dab2ae"
1195 acl: path access granted: "911600dab2ae"
1181 bundle2-input-part: total payload size 1553
1196 bundle2-input-part: total payload size 1553
1182 bundle2-input-part: "phase-heads" supported
1197 bundle2-input-part: "phase-heads" supported
1183 bundle2-input-part: total payload size 24
1198 bundle2-input-part: total payload size 24
1184 bundle2-input-bundle: 4 parts total
1199 bundle2-input-bundle: 4 parts total
1185 updating the branch cache
1200 updating the branch cache
1186 bundle2-output-bundle: "HG20", 1 parts total
1201 bundle2-output-bundle: "HG20", 1 parts total
1187 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1202 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1188 bundle2-input-bundle: no-transaction
1203 bundle2-input-bundle: no-transaction
1189 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1204 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1190 bundle2-input-bundle: 0 parts total
1205 bundle2-input-bundle: 0 parts total
1191 listing keys for "phases"
1206 listing keys for "phases"
1192 repository tip rolled back to revision 0 (undo push)
1207 repository tip rolled back to revision 0 (undo push)
1193 0:6675d58eff77
1208 0:6675d58eff77
1194
1209
1195
1210
1196 $ echo '[acl.deny]' >> $config
1211 $ echo '[acl.deny]' >> $config
1197 $ echo "foo/Bar/** = *" >> $config
1212 $ echo "foo/Bar/** = *" >> $config
1198
1213
1199 no one is allowed inside foo/Bar/
1214 no one is allowed inside foo/Bar/
1200
1215
1201 $ do_push fred
1216 $ do_push fred
1202 Pushing as user fred
1217 Pushing as user fred
1203 hgrc = """
1218 hgrc = """
1204 [hooks]
1219 [hooks]
1205 pretxnchangegroup.acl = python:hgext.acl.hook
1220 pretxnchangegroup.acl = python:hgext.acl.hook
1206 [acl]
1221 [acl]
1207 sources = push
1222 sources = push
1208 [extensions]
1223 [extensions]
1224 posixgetuser=$TESTTMP/posixgetuser.py
1209 [acl.allow]
1225 [acl.allow]
1210 ** = fred
1226 ** = fred
1211 [acl.deny]
1227 [acl.deny]
1212 foo/Bar/** = *
1228 foo/Bar/** = *
1213 """
1229 """
1214 pushing to ../b
1230 pushing to ../b
1215 query 1; heads
1231 query 1; heads
1216 searching for changes
1232 searching for changes
1217 all remote heads known locally
1233 all remote heads known locally
1218 listing keys for "phases"
1234 listing keys for "phases"
1219 checking for updated bookmarks
1235 checking for updated bookmarks
1220 listing keys for "bookmarks"
1236 listing keys for "bookmarks"
1221 listing keys for "bookmarks"
1237 listing keys for "bookmarks"
1222 3 changesets found
1238 3 changesets found
1223 list of changesets:
1239 list of changesets:
1224 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1240 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1225 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1241 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1226 911600dab2ae7a9baff75958b84fe606851ce955
1242 911600dab2ae7a9baff75958b84fe606851ce955
1227 bundle2-output-bundle: "HG20", 5 parts total
1243 bundle2-output-bundle: "HG20", 5 parts total
1228 bundle2-output-part: "replycaps" 188 bytes payload
1244 bundle2-output-part: "replycaps" 188 bytes payload
1229 bundle2-output-part: "check:phases" 24 bytes payload
1245 bundle2-output-part: "check:phases" 24 bytes payload
1230 bundle2-output-part: "check:heads" streamed payload
1246 bundle2-output-part: "check:heads" streamed payload
1231 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1247 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1232 bundle2-output-part: "phase-heads" 24 bytes payload
1248 bundle2-output-part: "phase-heads" 24 bytes payload
1233 bundle2-input-bundle: with-transaction
1249 bundle2-input-bundle: with-transaction
1234 bundle2-input-part: "replycaps" supported
1250 bundle2-input-part: "replycaps" supported
1235 bundle2-input-part: total payload size 188
1251 bundle2-input-part: total payload size 188
1236 bundle2-input-part: "check:phases" supported
1252 bundle2-input-part: "check:phases" supported
1237 bundle2-input-part: total payload size 24
1253 bundle2-input-part: total payload size 24
1238 bundle2-input-part: "check:heads" supported
1254 bundle2-input-part: "check:heads" supported
1239 bundle2-input-part: total payload size 20
1255 bundle2-input-part: total payload size 20
1240 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1256 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1241 adding changesets
1257 adding changesets
1242 add changeset ef1ea85a6374
1258 add changeset ef1ea85a6374
1243 add changeset f9cafe1212c8
1259 add changeset f9cafe1212c8
1244 add changeset 911600dab2ae
1260 add changeset 911600dab2ae
1245 adding manifests
1261 adding manifests
1246 adding file changes
1262 adding file changes
1247 adding foo/Bar/file.txt revisions
1263 adding foo/Bar/file.txt revisions
1248 adding foo/file.txt revisions
1264 adding foo/file.txt revisions
1249 adding quux/file.py revisions
1265 adding quux/file.py revisions
1250 added 3 changesets with 3 changes to 3 files
1266 added 3 changesets with 3 changes to 3 files
1251 calling hook pretxnchangegroup.acl: hgext.acl.hook
1267 calling hook pretxnchangegroup.acl: hgext.acl.hook
1252 acl: checking access for user "fred"
1268 acl: checking access for user "fred"
1253 acl: acl.allow.branches not enabled
1269 acl: acl.allow.branches not enabled
1254 acl: acl.deny.branches not enabled
1270 acl: acl.deny.branches not enabled
1255 acl: acl.allow enabled, 1 entries for user fred
1271 acl: acl.allow enabled, 1 entries for user fred
1256 acl: acl.deny enabled, 1 entries for user fred
1272 acl: acl.deny enabled, 1 entries for user fred
1257 acl: branch access granted: "ef1ea85a6374" on branch "default"
1273 acl: branch access granted: "ef1ea85a6374" on branch "default"
1258 acl: path access granted: "ef1ea85a6374"
1274 acl: path access granted: "ef1ea85a6374"
1259 acl: branch access granted: "f9cafe1212c8" on branch "default"
1275 acl: branch access granted: "f9cafe1212c8" on branch "default"
1260 error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1276 error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1261 bundle2-input-part: total payload size 1553
1277 bundle2-input-part: total payload size 1553
1262 bundle2-input-part: total payload size 24
1278 bundle2-input-part: total payload size 24
1263 bundle2-input-bundle: 4 parts total
1279 bundle2-input-bundle: 4 parts total
1264 transaction abort!
1280 transaction abort!
1265 rollback completed
1281 rollback completed
1266 abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1282 abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1267 no rollback information available
1283 no rollback information available
1268 0:6675d58eff77
1284 0:6675d58eff77
1269
1285
1270
1286
1271 Groups
1287 Groups
1272
1288
1273 $ init_config
1289 $ init_config
1274
1290
1275 OS-level groups
1291 OS-level groups
1276
1292
1277 $ echo '[acl.allow]' >> $config
1293 $ echo '[acl.allow]' >> $config
1278 $ echo "** = @group1" >> $config
1294 $ echo "** = @group1" >> $config
1279
1295
1280 @group1 is always allowed
1296 @group1 is always allowed
1281
1297
1282 $ do_push fred
1298 $ do_push fred
1283 Pushing as user fred
1299 Pushing as user fred
1284 hgrc = """
1300 hgrc = """
1285 [hooks]
1301 [hooks]
1286 pretxnchangegroup.acl = python:hgext.acl.hook
1302 pretxnchangegroup.acl = python:hgext.acl.hook
1287 [acl]
1303 [acl]
1288 sources = push
1304 sources = push
1289 [extensions]
1305 [extensions]
1306 posixgetuser=$TESTTMP/posixgetuser.py
1290 [acl.allow]
1307 [acl.allow]
1291 ** = @group1
1308 ** = @group1
1292 """
1309 """
1293 pushing to ../b
1310 pushing to ../b
1294 query 1; heads
1311 query 1; heads
1295 searching for changes
1312 searching for changes
1296 all remote heads known locally
1313 all remote heads known locally
1297 listing keys for "phases"
1314 listing keys for "phases"
1298 checking for updated bookmarks
1315 checking for updated bookmarks
1299 listing keys for "bookmarks"
1316 listing keys for "bookmarks"
1300 listing keys for "bookmarks"
1317 listing keys for "bookmarks"
1301 3 changesets found
1318 3 changesets found
1302 list of changesets:
1319 list of changesets:
1303 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1320 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1304 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1321 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1305 911600dab2ae7a9baff75958b84fe606851ce955
1322 911600dab2ae7a9baff75958b84fe606851ce955
1306 bundle2-output-bundle: "HG20", 5 parts total
1323 bundle2-output-bundle: "HG20", 5 parts total
1307 bundle2-output-part: "replycaps" 188 bytes payload
1324 bundle2-output-part: "replycaps" 188 bytes payload
1308 bundle2-output-part: "check:phases" 24 bytes payload
1325 bundle2-output-part: "check:phases" 24 bytes payload
1309 bundle2-output-part: "check:heads" streamed payload
1326 bundle2-output-part: "check:heads" streamed payload
1310 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1327 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1311 bundle2-output-part: "phase-heads" 24 bytes payload
1328 bundle2-output-part: "phase-heads" 24 bytes payload
1312 bundle2-input-bundle: with-transaction
1329 bundle2-input-bundle: with-transaction
1313 bundle2-input-part: "replycaps" supported
1330 bundle2-input-part: "replycaps" supported
1314 bundle2-input-part: total payload size 188
1331 bundle2-input-part: total payload size 188
1315 bundle2-input-part: "check:phases" supported
1332 bundle2-input-part: "check:phases" supported
1316 bundle2-input-part: total payload size 24
1333 bundle2-input-part: total payload size 24
1317 bundle2-input-part: "check:heads" supported
1334 bundle2-input-part: "check:heads" supported
1318 bundle2-input-part: total payload size 20
1335 bundle2-input-part: total payload size 20
1319 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1336 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1320 adding changesets
1337 adding changesets
1321 add changeset ef1ea85a6374
1338 add changeset ef1ea85a6374
1322 add changeset f9cafe1212c8
1339 add changeset f9cafe1212c8
1323 add changeset 911600dab2ae
1340 add changeset 911600dab2ae
1324 adding manifests
1341 adding manifests
1325 adding file changes
1342 adding file changes
1326 adding foo/Bar/file.txt revisions
1343 adding foo/Bar/file.txt revisions
1327 adding foo/file.txt revisions
1344 adding foo/file.txt revisions
1328 adding quux/file.py revisions
1345 adding quux/file.py revisions
1329 added 3 changesets with 3 changes to 3 files
1346 added 3 changesets with 3 changes to 3 files
1330 calling hook pretxnchangegroup.acl: hgext.acl.hook
1347 calling hook pretxnchangegroup.acl: hgext.acl.hook
1331 acl: checking access for user "fred"
1348 acl: checking access for user "fred"
1332 acl: acl.allow.branches not enabled
1349 acl: acl.allow.branches not enabled
1333 acl: acl.deny.branches not enabled
1350 acl: acl.deny.branches not enabled
1334 acl: "group1" not defined in [acl.groups]
1351 acl: "group1" not defined in [acl.groups]
1335 acl: acl.allow enabled, 1 entries for user fred
1352 acl: acl.allow enabled, 1 entries for user fred
1336 acl: acl.deny not enabled
1353 acl: acl.deny not enabled
1337 acl: branch access granted: "ef1ea85a6374" on branch "default"
1354 acl: branch access granted: "ef1ea85a6374" on branch "default"
1338 acl: path access granted: "ef1ea85a6374"
1355 acl: path access granted: "ef1ea85a6374"
1339 acl: branch access granted: "f9cafe1212c8" on branch "default"
1356 acl: branch access granted: "f9cafe1212c8" on branch "default"
1340 acl: path access granted: "f9cafe1212c8"
1357 acl: path access granted: "f9cafe1212c8"
1341 acl: branch access granted: "911600dab2ae" on branch "default"
1358 acl: branch access granted: "911600dab2ae" on branch "default"
1342 acl: path access granted: "911600dab2ae"
1359 acl: path access granted: "911600dab2ae"
1343 bundle2-input-part: total payload size 1553
1360 bundle2-input-part: total payload size 1553
1344 bundle2-input-part: "phase-heads" supported
1361 bundle2-input-part: "phase-heads" supported
1345 bundle2-input-part: total payload size 24
1362 bundle2-input-part: total payload size 24
1346 bundle2-input-bundle: 4 parts total
1363 bundle2-input-bundle: 4 parts total
1347 updating the branch cache
1364 updating the branch cache
1348 bundle2-output-bundle: "HG20", 1 parts total
1365 bundle2-output-bundle: "HG20", 1 parts total
1349 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1366 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1350 bundle2-input-bundle: no-transaction
1367 bundle2-input-bundle: no-transaction
1351 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1368 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1352 bundle2-input-bundle: 0 parts total
1369 bundle2-input-bundle: 0 parts total
1353 listing keys for "phases"
1370 listing keys for "phases"
1354 repository tip rolled back to revision 0 (undo push)
1371 repository tip rolled back to revision 0 (undo push)
1355 0:6675d58eff77
1372 0:6675d58eff77
1356
1373
1357
1374
1358 $ echo '[acl.deny]' >> $config
1375 $ echo '[acl.deny]' >> $config
1359 $ echo "foo/Bar/** = @group1" >> $config
1376 $ echo "foo/Bar/** = @group1" >> $config
1360
1377
1361 @group is allowed inside anything but foo/Bar/
1378 @group is allowed inside anything but foo/Bar/
1362
1379
1363 $ do_push fred
1380 $ do_push fred
1364 Pushing as user fred
1381 Pushing as user fred
1365 hgrc = """
1382 hgrc = """
1366 [hooks]
1383 [hooks]
1367 pretxnchangegroup.acl = python:hgext.acl.hook
1384 pretxnchangegroup.acl = python:hgext.acl.hook
1368 [acl]
1385 [acl]
1369 sources = push
1386 sources = push
1370 [extensions]
1387 [extensions]
1388 posixgetuser=$TESTTMP/posixgetuser.py
1371 [acl.allow]
1389 [acl.allow]
1372 ** = @group1
1390 ** = @group1
1373 [acl.deny]
1391 [acl.deny]
1374 foo/Bar/** = @group1
1392 foo/Bar/** = @group1
1375 """
1393 """
1376 pushing to ../b
1394 pushing to ../b
1377 query 1; heads
1395 query 1; heads
1378 searching for changes
1396 searching for changes
1379 all remote heads known locally
1397 all remote heads known locally
1380 listing keys for "phases"
1398 listing keys for "phases"
1381 checking for updated bookmarks
1399 checking for updated bookmarks
1382 listing keys for "bookmarks"
1400 listing keys for "bookmarks"
1383 listing keys for "bookmarks"
1401 listing keys for "bookmarks"
1384 3 changesets found
1402 3 changesets found
1385 list of changesets:
1403 list of changesets:
1386 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1404 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1387 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1405 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1388 911600dab2ae7a9baff75958b84fe606851ce955
1406 911600dab2ae7a9baff75958b84fe606851ce955
1389 bundle2-output-bundle: "HG20", 5 parts total
1407 bundle2-output-bundle: "HG20", 5 parts total
1390 bundle2-output-part: "replycaps" 188 bytes payload
1408 bundle2-output-part: "replycaps" 188 bytes payload
1391 bundle2-output-part: "check:phases" 24 bytes payload
1409 bundle2-output-part: "check:phases" 24 bytes payload
1392 bundle2-output-part: "check:heads" streamed payload
1410 bundle2-output-part: "check:heads" streamed payload
1393 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1411 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1394 bundle2-output-part: "phase-heads" 24 bytes payload
1412 bundle2-output-part: "phase-heads" 24 bytes payload
1395 bundle2-input-bundle: with-transaction
1413 bundle2-input-bundle: with-transaction
1396 bundle2-input-part: "replycaps" supported
1414 bundle2-input-part: "replycaps" supported
1397 bundle2-input-part: total payload size 188
1415 bundle2-input-part: total payload size 188
1398 bundle2-input-part: "check:phases" supported
1416 bundle2-input-part: "check:phases" supported
1399 bundle2-input-part: total payload size 24
1417 bundle2-input-part: total payload size 24
1400 bundle2-input-part: "check:heads" supported
1418 bundle2-input-part: "check:heads" supported
1401 bundle2-input-part: total payload size 20
1419 bundle2-input-part: total payload size 20
1402 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1420 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1403 adding changesets
1421 adding changesets
1404 add changeset ef1ea85a6374
1422 add changeset ef1ea85a6374
1405 add changeset f9cafe1212c8
1423 add changeset f9cafe1212c8
1406 add changeset 911600dab2ae
1424 add changeset 911600dab2ae
1407 adding manifests
1425 adding manifests
1408 adding file changes
1426 adding file changes
1409 adding foo/Bar/file.txt revisions
1427 adding foo/Bar/file.txt revisions
1410 adding foo/file.txt revisions
1428 adding foo/file.txt revisions
1411 adding quux/file.py revisions
1429 adding quux/file.py revisions
1412 added 3 changesets with 3 changes to 3 files
1430 added 3 changesets with 3 changes to 3 files
1413 calling hook pretxnchangegroup.acl: hgext.acl.hook
1431 calling hook pretxnchangegroup.acl: hgext.acl.hook
1414 acl: checking access for user "fred"
1432 acl: checking access for user "fred"
1415 acl: acl.allow.branches not enabled
1433 acl: acl.allow.branches not enabled
1416 acl: acl.deny.branches not enabled
1434 acl: acl.deny.branches not enabled
1417 acl: "group1" not defined in [acl.groups]
1435 acl: "group1" not defined in [acl.groups]
1418 acl: acl.allow enabled, 1 entries for user fred
1436 acl: acl.allow enabled, 1 entries for user fred
1419 acl: "group1" not defined in [acl.groups]
1437 acl: "group1" not defined in [acl.groups]
1420 acl: acl.deny enabled, 1 entries for user fred
1438 acl: acl.deny enabled, 1 entries for user fred
1421 acl: branch access granted: "ef1ea85a6374" on branch "default"
1439 acl: branch access granted: "ef1ea85a6374" on branch "default"
1422 acl: path access granted: "ef1ea85a6374"
1440 acl: path access granted: "ef1ea85a6374"
1423 acl: branch access granted: "f9cafe1212c8" on branch "default"
1441 acl: branch access granted: "f9cafe1212c8" on branch "default"
1424 error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1442 error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1425 bundle2-input-part: total payload size 1553
1443 bundle2-input-part: total payload size 1553
1426 bundle2-input-part: total payload size 24
1444 bundle2-input-part: total payload size 24
1427 bundle2-input-bundle: 4 parts total
1445 bundle2-input-bundle: 4 parts total
1428 transaction abort!
1446 transaction abort!
1429 rollback completed
1447 rollback completed
1430 abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1448 abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
1431 no rollback information available
1449 no rollback information available
1432 0:6675d58eff77
1450 0:6675d58eff77
1433
1451
1434
1452
1435 Invalid group
1453 Invalid group
1436
1454
1437 Disable the fakegroups trick to get real failures
1455 Disable the fakegroups trick to get real failures
1438
1456
1439 $ grep -v fakegroups $config > config.tmp
1457 $ grep -v fakegroups $config > config.tmp
1440 $ mv config.tmp $config
1458 $ mv config.tmp $config
1441 $ echo '[acl.allow]' >> $config
1459 $ echo '[acl.allow]' >> $config
1442 $ echo "** = @unlikelytoexist" >> $config
1460 $ echo "** = @unlikelytoexist" >> $config
1443 $ do_push fred 2>&1 | grep unlikelytoexist
1461 $ do_push fred 2>&1 | grep unlikelytoexist
1444 ** = @unlikelytoexist
1462 ** = @unlikelytoexist
1445 acl: "unlikelytoexist" not defined in [acl.groups]
1463 acl: "unlikelytoexist" not defined in [acl.groups]
1446 error: pretxnchangegroup.acl hook failed: group 'unlikelytoexist' is undefined
1464 error: pretxnchangegroup.acl hook failed: group 'unlikelytoexist' is undefined
1447 abort: group 'unlikelytoexist' is undefined
1465 abort: group 'unlikelytoexist' is undefined
1448
1466
1449
1467
1450 Branch acl tests setup
1468 Branch acl tests setup
1451
1469
1452 $ init_config
1470 $ init_config
1453 $ cd b
1471 $ cd b
1454 $ hg up
1472 $ hg up
1455 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1473 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1456 $ hg branch foobar
1474 $ hg branch foobar
1457 marked working directory as branch foobar
1475 marked working directory as branch foobar
1458 (branches are permanent and global, did you want a bookmark?)
1476 (branches are permanent and global, did you want a bookmark?)
1459 $ hg commit -m 'create foobar'
1477 $ hg commit -m 'create foobar'
1460 $ echo 'foo contents' > abc.txt
1478 $ echo 'foo contents' > abc.txt
1461 $ hg add abc.txt
1479 $ hg add abc.txt
1462 $ hg commit -m 'foobar contents'
1480 $ hg commit -m 'foobar contents'
1463 $ cd ..
1481 $ cd ..
1464 $ hg --cwd a pull ../b
1482 $ hg --cwd a pull ../b
1465 pulling from ../b
1483 pulling from ../b
1466 searching for changes
1484 searching for changes
1467 adding changesets
1485 adding changesets
1468 adding manifests
1486 adding manifests
1469 adding file changes
1487 adding file changes
1470 added 2 changesets with 1 changes to 1 files (+1 heads)
1488 added 2 changesets with 1 changes to 1 files (+1 heads)
1471 new changesets 81fbf4469322:fb35475503ef
1489 new changesets 81fbf4469322:fb35475503ef
1472 (run 'hg heads' to see heads)
1490 (run 'hg heads' to see heads)
1473
1491
1474 Create additional changeset on foobar branch
1492 Create additional changeset on foobar branch
1475
1493
1476 $ cd a
1494 $ cd a
1477 $ hg up -C foobar
1495 $ hg up -C foobar
1478 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
1496 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
1479 $ echo 'foo contents2' > abc.txt
1497 $ echo 'foo contents2' > abc.txt
1480 $ hg commit -m 'foobar contents2'
1498 $ hg commit -m 'foobar contents2'
1481 $ cd ..
1499 $ cd ..
1482
1500
1483
1501
1484 No branch acls specified
1502 No branch acls specified
1485
1503
1486 $ do_push astro
1504 $ do_push astro
1487 Pushing as user astro
1505 Pushing as user astro
1488 hgrc = """
1506 hgrc = """
1489 [hooks]
1507 [hooks]
1490 pretxnchangegroup.acl = python:hgext.acl.hook
1508 pretxnchangegroup.acl = python:hgext.acl.hook
1491 [acl]
1509 [acl]
1492 sources = push
1510 sources = push
1493 [extensions]
1511 [extensions]
1512 posixgetuser=$TESTTMP/posixgetuser.py
1494 """
1513 """
1495 pushing to ../b
1514 pushing to ../b
1496 query 1; heads
1515 query 1; heads
1497 searching for changes
1516 searching for changes
1498 all remote heads known locally
1517 all remote heads known locally
1499 listing keys for "phases"
1518 listing keys for "phases"
1500 checking for updated bookmarks
1519 checking for updated bookmarks
1501 listing keys for "bookmarks"
1520 listing keys for "bookmarks"
1502 listing keys for "bookmarks"
1521 listing keys for "bookmarks"
1503 4 changesets found
1522 4 changesets found
1504 list of changesets:
1523 list of changesets:
1505 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1524 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1506 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1525 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1507 911600dab2ae7a9baff75958b84fe606851ce955
1526 911600dab2ae7a9baff75958b84fe606851ce955
1508 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1527 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1509 bundle2-output-bundle: "HG20", 5 parts total
1528 bundle2-output-bundle: "HG20", 5 parts total
1510 bundle2-output-part: "replycaps" 188 bytes payload
1529 bundle2-output-part: "replycaps" 188 bytes payload
1511 bundle2-output-part: "check:phases" 48 bytes payload
1530 bundle2-output-part: "check:phases" 48 bytes payload
1512 bundle2-output-part: "check:heads" streamed payload
1531 bundle2-output-part: "check:heads" streamed payload
1513 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1532 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1514 bundle2-output-part: "phase-heads" 48 bytes payload
1533 bundle2-output-part: "phase-heads" 48 bytes payload
1515 bundle2-input-bundle: with-transaction
1534 bundle2-input-bundle: with-transaction
1516 bundle2-input-part: "replycaps" supported
1535 bundle2-input-part: "replycaps" supported
1517 bundle2-input-part: total payload size 188
1536 bundle2-input-part: total payload size 188
1518 bundle2-input-part: "check:phases" supported
1537 bundle2-input-part: "check:phases" supported
1519 bundle2-input-part: total payload size 48
1538 bundle2-input-part: total payload size 48
1520 bundle2-input-part: "check:heads" supported
1539 bundle2-input-part: "check:heads" supported
1521 bundle2-input-part: total payload size 20
1540 bundle2-input-part: total payload size 20
1522 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1541 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1523 adding changesets
1542 adding changesets
1524 add changeset ef1ea85a6374
1543 add changeset ef1ea85a6374
1525 add changeset f9cafe1212c8
1544 add changeset f9cafe1212c8
1526 add changeset 911600dab2ae
1545 add changeset 911600dab2ae
1527 add changeset e8fc755d4d82
1546 add changeset e8fc755d4d82
1528 adding manifests
1547 adding manifests
1529 adding file changes
1548 adding file changes
1530 adding abc.txt revisions
1549 adding abc.txt revisions
1531 adding foo/Bar/file.txt revisions
1550 adding foo/Bar/file.txt revisions
1532 adding foo/file.txt revisions
1551 adding foo/file.txt revisions
1533 adding quux/file.py revisions
1552 adding quux/file.py revisions
1534 added 4 changesets with 4 changes to 4 files (+1 heads)
1553 added 4 changesets with 4 changes to 4 files (+1 heads)
1535 calling hook pretxnchangegroup.acl: hgext.acl.hook
1554 calling hook pretxnchangegroup.acl: hgext.acl.hook
1536 acl: checking access for user "astro"
1555 acl: checking access for user "astro"
1537 acl: acl.allow.branches not enabled
1556 acl: acl.allow.branches not enabled
1538 acl: acl.deny.branches not enabled
1557 acl: acl.deny.branches not enabled
1539 acl: acl.allow not enabled
1558 acl: acl.allow not enabled
1540 acl: acl.deny not enabled
1559 acl: acl.deny not enabled
1541 acl: branch access granted: "ef1ea85a6374" on branch "default"
1560 acl: branch access granted: "ef1ea85a6374" on branch "default"
1542 acl: path access granted: "ef1ea85a6374"
1561 acl: path access granted: "ef1ea85a6374"
1543 acl: branch access granted: "f9cafe1212c8" on branch "default"
1562 acl: branch access granted: "f9cafe1212c8" on branch "default"
1544 acl: path access granted: "f9cafe1212c8"
1563 acl: path access granted: "f9cafe1212c8"
1545 acl: branch access granted: "911600dab2ae" on branch "default"
1564 acl: branch access granted: "911600dab2ae" on branch "default"
1546 acl: path access granted: "911600dab2ae"
1565 acl: path access granted: "911600dab2ae"
1547 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
1566 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
1548 acl: path access granted: "e8fc755d4d82"
1567 acl: path access granted: "e8fc755d4d82"
1549 bundle2-input-part: total payload size 2068
1568 bundle2-input-part: total payload size 2068
1550 bundle2-input-part: "phase-heads" supported
1569 bundle2-input-part: "phase-heads" supported
1551 bundle2-input-part: total payload size 48
1570 bundle2-input-part: total payload size 48
1552 bundle2-input-bundle: 4 parts total
1571 bundle2-input-bundle: 4 parts total
1553 updating the branch cache
1572 updating the branch cache
1554 bundle2-output-bundle: "HG20", 1 parts total
1573 bundle2-output-bundle: "HG20", 1 parts total
1555 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1574 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1556 bundle2-input-bundle: no-transaction
1575 bundle2-input-bundle: no-transaction
1557 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1576 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1558 bundle2-input-bundle: 0 parts total
1577 bundle2-input-bundle: 0 parts total
1559 listing keys for "phases"
1578 listing keys for "phases"
1560 repository tip rolled back to revision 2 (undo push)
1579 repository tip rolled back to revision 2 (undo push)
1561 2:fb35475503ef
1580 2:fb35475503ef
1562
1581
1563
1582
1564 Branch acl deny test
1583 Branch acl deny test
1565
1584
1566 $ echo "[acl.deny.branches]" >> $config
1585 $ echo "[acl.deny.branches]" >> $config
1567 $ echo "foobar = *" >> $config
1586 $ echo "foobar = *" >> $config
1568 $ do_push astro
1587 $ do_push astro
1569 Pushing as user astro
1588 Pushing as user astro
1570 hgrc = """
1589 hgrc = """
1571 [hooks]
1590 [hooks]
1572 pretxnchangegroup.acl = python:hgext.acl.hook
1591 pretxnchangegroup.acl = python:hgext.acl.hook
1573 [acl]
1592 [acl]
1574 sources = push
1593 sources = push
1575 [extensions]
1594 [extensions]
1595 posixgetuser=$TESTTMP/posixgetuser.py
1576 [acl.deny.branches]
1596 [acl.deny.branches]
1577 foobar = *
1597 foobar = *
1578 """
1598 """
1579 pushing to ../b
1599 pushing to ../b
1580 query 1; heads
1600 query 1; heads
1581 searching for changes
1601 searching for changes
1582 all remote heads known locally
1602 all remote heads known locally
1583 listing keys for "phases"
1603 listing keys for "phases"
1584 checking for updated bookmarks
1604 checking for updated bookmarks
1585 listing keys for "bookmarks"
1605 listing keys for "bookmarks"
1586 listing keys for "bookmarks"
1606 listing keys for "bookmarks"
1587 4 changesets found
1607 4 changesets found
1588 list of changesets:
1608 list of changesets:
1589 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1609 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1590 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1610 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1591 911600dab2ae7a9baff75958b84fe606851ce955
1611 911600dab2ae7a9baff75958b84fe606851ce955
1592 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1612 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1593 bundle2-output-bundle: "HG20", 5 parts total
1613 bundle2-output-bundle: "HG20", 5 parts total
1594 bundle2-output-part: "replycaps" 188 bytes payload
1614 bundle2-output-part: "replycaps" 188 bytes payload
1595 bundle2-output-part: "check:phases" 48 bytes payload
1615 bundle2-output-part: "check:phases" 48 bytes payload
1596 bundle2-output-part: "check:heads" streamed payload
1616 bundle2-output-part: "check:heads" streamed payload
1597 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1617 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1598 bundle2-output-part: "phase-heads" 48 bytes payload
1618 bundle2-output-part: "phase-heads" 48 bytes payload
1599 bundle2-input-bundle: with-transaction
1619 bundle2-input-bundle: with-transaction
1600 bundle2-input-part: "replycaps" supported
1620 bundle2-input-part: "replycaps" supported
1601 bundle2-input-part: total payload size 188
1621 bundle2-input-part: total payload size 188
1602 bundle2-input-part: "check:phases" supported
1622 bundle2-input-part: "check:phases" supported
1603 bundle2-input-part: total payload size 48
1623 bundle2-input-part: total payload size 48
1604 bundle2-input-part: "check:heads" supported
1624 bundle2-input-part: "check:heads" supported
1605 bundle2-input-part: total payload size 20
1625 bundle2-input-part: total payload size 20
1606 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1626 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1607 adding changesets
1627 adding changesets
1608 add changeset ef1ea85a6374
1628 add changeset ef1ea85a6374
1609 add changeset f9cafe1212c8
1629 add changeset f9cafe1212c8
1610 add changeset 911600dab2ae
1630 add changeset 911600dab2ae
1611 add changeset e8fc755d4d82
1631 add changeset e8fc755d4d82
1612 adding manifests
1632 adding manifests
1613 adding file changes
1633 adding file changes
1614 adding abc.txt revisions
1634 adding abc.txt revisions
1615 adding foo/Bar/file.txt revisions
1635 adding foo/Bar/file.txt revisions
1616 adding foo/file.txt revisions
1636 adding foo/file.txt revisions
1617 adding quux/file.py revisions
1637 adding quux/file.py revisions
1618 added 4 changesets with 4 changes to 4 files (+1 heads)
1638 added 4 changesets with 4 changes to 4 files (+1 heads)
1619 calling hook pretxnchangegroup.acl: hgext.acl.hook
1639 calling hook pretxnchangegroup.acl: hgext.acl.hook
1620 acl: checking access for user "astro"
1640 acl: checking access for user "astro"
1621 acl: acl.allow.branches not enabled
1641 acl: acl.allow.branches not enabled
1622 acl: acl.deny.branches enabled, 1 entries for user astro
1642 acl: acl.deny.branches enabled, 1 entries for user astro
1623 acl: acl.allow not enabled
1643 acl: acl.allow not enabled
1624 acl: acl.deny not enabled
1644 acl: acl.deny not enabled
1625 acl: branch access granted: "ef1ea85a6374" on branch "default"
1645 acl: branch access granted: "ef1ea85a6374" on branch "default"
1626 acl: path access granted: "ef1ea85a6374"
1646 acl: path access granted: "ef1ea85a6374"
1627 acl: branch access granted: "f9cafe1212c8" on branch "default"
1647 acl: branch access granted: "f9cafe1212c8" on branch "default"
1628 acl: path access granted: "f9cafe1212c8"
1648 acl: path access granted: "f9cafe1212c8"
1629 acl: branch access granted: "911600dab2ae" on branch "default"
1649 acl: branch access granted: "911600dab2ae" on branch "default"
1630 acl: path access granted: "911600dab2ae"
1650 acl: path access granted: "911600dab2ae"
1631 error: pretxnchangegroup.acl hook failed: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
1651 error: pretxnchangegroup.acl hook failed: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
1632 bundle2-input-part: total payload size 2068
1652 bundle2-input-part: total payload size 2068
1633 bundle2-input-part: total payload size 48
1653 bundle2-input-part: total payload size 48
1634 bundle2-input-bundle: 4 parts total
1654 bundle2-input-bundle: 4 parts total
1635 transaction abort!
1655 transaction abort!
1636 rollback completed
1656 rollback completed
1637 abort: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
1657 abort: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
1638 no rollback information available
1658 no rollback information available
1639 2:fb35475503ef
1659 2:fb35475503ef
1640
1660
1641
1661
1642 Branch acl empty allow test
1662 Branch acl empty allow test
1643
1663
1644 $ init_config
1664 $ init_config
1645 $ echo "[acl.allow.branches]" >> $config
1665 $ echo "[acl.allow.branches]" >> $config
1646 $ do_push astro
1666 $ do_push astro
1647 Pushing as user astro
1667 Pushing as user astro
1648 hgrc = """
1668 hgrc = """
1649 [hooks]
1669 [hooks]
1650 pretxnchangegroup.acl = python:hgext.acl.hook
1670 pretxnchangegroup.acl = python:hgext.acl.hook
1651 [acl]
1671 [acl]
1652 sources = push
1672 sources = push
1653 [extensions]
1673 [extensions]
1674 posixgetuser=$TESTTMP/posixgetuser.py
1654 [acl.allow.branches]
1675 [acl.allow.branches]
1655 """
1676 """
1656 pushing to ../b
1677 pushing to ../b
1657 query 1; heads
1678 query 1; heads
1658 searching for changes
1679 searching for changes
1659 all remote heads known locally
1680 all remote heads known locally
1660 listing keys for "phases"
1681 listing keys for "phases"
1661 checking for updated bookmarks
1682 checking for updated bookmarks
1662 listing keys for "bookmarks"
1683 listing keys for "bookmarks"
1663 listing keys for "bookmarks"
1684 listing keys for "bookmarks"
1664 4 changesets found
1685 4 changesets found
1665 list of changesets:
1686 list of changesets:
1666 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1687 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1667 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1688 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1668 911600dab2ae7a9baff75958b84fe606851ce955
1689 911600dab2ae7a9baff75958b84fe606851ce955
1669 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1690 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1670 bundle2-output-bundle: "HG20", 5 parts total
1691 bundle2-output-bundle: "HG20", 5 parts total
1671 bundle2-output-part: "replycaps" 188 bytes payload
1692 bundle2-output-part: "replycaps" 188 bytes payload
1672 bundle2-output-part: "check:phases" 48 bytes payload
1693 bundle2-output-part: "check:phases" 48 bytes payload
1673 bundle2-output-part: "check:heads" streamed payload
1694 bundle2-output-part: "check:heads" streamed payload
1674 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1695 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1675 bundle2-output-part: "phase-heads" 48 bytes payload
1696 bundle2-output-part: "phase-heads" 48 bytes payload
1676 bundle2-input-bundle: with-transaction
1697 bundle2-input-bundle: with-transaction
1677 bundle2-input-part: "replycaps" supported
1698 bundle2-input-part: "replycaps" supported
1678 bundle2-input-part: total payload size 188
1699 bundle2-input-part: total payload size 188
1679 bundle2-input-part: "check:phases" supported
1700 bundle2-input-part: "check:phases" supported
1680 bundle2-input-part: total payload size 48
1701 bundle2-input-part: total payload size 48
1681 bundle2-input-part: "check:heads" supported
1702 bundle2-input-part: "check:heads" supported
1682 bundle2-input-part: total payload size 20
1703 bundle2-input-part: total payload size 20
1683 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1704 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1684 adding changesets
1705 adding changesets
1685 add changeset ef1ea85a6374
1706 add changeset ef1ea85a6374
1686 add changeset f9cafe1212c8
1707 add changeset f9cafe1212c8
1687 add changeset 911600dab2ae
1708 add changeset 911600dab2ae
1688 add changeset e8fc755d4d82
1709 add changeset e8fc755d4d82
1689 adding manifests
1710 adding manifests
1690 adding file changes
1711 adding file changes
1691 adding abc.txt revisions
1712 adding abc.txt revisions
1692 adding foo/Bar/file.txt revisions
1713 adding foo/Bar/file.txt revisions
1693 adding foo/file.txt revisions
1714 adding foo/file.txt revisions
1694 adding quux/file.py revisions
1715 adding quux/file.py revisions
1695 added 4 changesets with 4 changes to 4 files (+1 heads)
1716 added 4 changesets with 4 changes to 4 files (+1 heads)
1696 calling hook pretxnchangegroup.acl: hgext.acl.hook
1717 calling hook pretxnchangegroup.acl: hgext.acl.hook
1697 acl: checking access for user "astro"
1718 acl: checking access for user "astro"
1698 acl: acl.allow.branches enabled, 0 entries for user astro
1719 acl: acl.allow.branches enabled, 0 entries for user astro
1699 acl: acl.deny.branches not enabled
1720 acl: acl.deny.branches not enabled
1700 acl: acl.allow not enabled
1721 acl: acl.allow not enabled
1701 acl: acl.deny not enabled
1722 acl: acl.deny not enabled
1702 error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1723 error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1703 bundle2-input-part: total payload size 2068
1724 bundle2-input-part: total payload size 2068
1704 bundle2-input-part: total payload size 48
1725 bundle2-input-part: total payload size 48
1705 bundle2-input-bundle: 4 parts total
1726 bundle2-input-bundle: 4 parts total
1706 transaction abort!
1727 transaction abort!
1707 rollback completed
1728 rollback completed
1708 abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1729 abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1709 no rollback information available
1730 no rollback information available
1710 2:fb35475503ef
1731 2:fb35475503ef
1711
1732
1712
1733
1713 Branch acl allow other
1734 Branch acl allow other
1714
1735
1715 $ init_config
1736 $ init_config
1716 $ echo "[acl.allow.branches]" >> $config
1737 $ echo "[acl.allow.branches]" >> $config
1717 $ echo "* = george" >> $config
1738 $ echo "* = george" >> $config
1718 $ do_push astro
1739 $ do_push astro
1719 Pushing as user astro
1740 Pushing as user astro
1720 hgrc = """
1741 hgrc = """
1721 [hooks]
1742 [hooks]
1722 pretxnchangegroup.acl = python:hgext.acl.hook
1743 pretxnchangegroup.acl = python:hgext.acl.hook
1723 [acl]
1744 [acl]
1724 sources = push
1745 sources = push
1725 [extensions]
1746 [extensions]
1747 posixgetuser=$TESTTMP/posixgetuser.py
1726 [acl.allow.branches]
1748 [acl.allow.branches]
1727 * = george
1749 * = george
1728 """
1750 """
1729 pushing to ../b
1751 pushing to ../b
1730 query 1; heads
1752 query 1; heads
1731 searching for changes
1753 searching for changes
1732 all remote heads known locally
1754 all remote heads known locally
1733 listing keys for "phases"
1755 listing keys for "phases"
1734 checking for updated bookmarks
1756 checking for updated bookmarks
1735 listing keys for "bookmarks"
1757 listing keys for "bookmarks"
1736 listing keys for "bookmarks"
1758 listing keys for "bookmarks"
1737 4 changesets found
1759 4 changesets found
1738 list of changesets:
1760 list of changesets:
1739 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1761 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1740 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1762 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1741 911600dab2ae7a9baff75958b84fe606851ce955
1763 911600dab2ae7a9baff75958b84fe606851ce955
1742 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1764 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1743 bundle2-output-bundle: "HG20", 5 parts total
1765 bundle2-output-bundle: "HG20", 5 parts total
1744 bundle2-output-part: "replycaps" 188 bytes payload
1766 bundle2-output-part: "replycaps" 188 bytes payload
1745 bundle2-output-part: "check:phases" 48 bytes payload
1767 bundle2-output-part: "check:phases" 48 bytes payload
1746 bundle2-output-part: "check:heads" streamed payload
1768 bundle2-output-part: "check:heads" streamed payload
1747 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1769 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1748 bundle2-output-part: "phase-heads" 48 bytes payload
1770 bundle2-output-part: "phase-heads" 48 bytes payload
1749 bundle2-input-bundle: with-transaction
1771 bundle2-input-bundle: with-transaction
1750 bundle2-input-part: "replycaps" supported
1772 bundle2-input-part: "replycaps" supported
1751 bundle2-input-part: total payload size 188
1773 bundle2-input-part: total payload size 188
1752 bundle2-input-part: "check:phases" supported
1774 bundle2-input-part: "check:phases" supported
1753 bundle2-input-part: total payload size 48
1775 bundle2-input-part: total payload size 48
1754 bundle2-input-part: "check:heads" supported
1776 bundle2-input-part: "check:heads" supported
1755 bundle2-input-part: total payload size 20
1777 bundle2-input-part: total payload size 20
1756 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1778 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1757 adding changesets
1779 adding changesets
1758 add changeset ef1ea85a6374
1780 add changeset ef1ea85a6374
1759 add changeset f9cafe1212c8
1781 add changeset f9cafe1212c8
1760 add changeset 911600dab2ae
1782 add changeset 911600dab2ae
1761 add changeset e8fc755d4d82
1783 add changeset e8fc755d4d82
1762 adding manifests
1784 adding manifests
1763 adding file changes
1785 adding file changes
1764 adding abc.txt revisions
1786 adding abc.txt revisions
1765 adding foo/Bar/file.txt revisions
1787 adding foo/Bar/file.txt revisions
1766 adding foo/file.txt revisions
1788 adding foo/file.txt revisions
1767 adding quux/file.py revisions
1789 adding quux/file.py revisions
1768 added 4 changesets with 4 changes to 4 files (+1 heads)
1790 added 4 changesets with 4 changes to 4 files (+1 heads)
1769 calling hook pretxnchangegroup.acl: hgext.acl.hook
1791 calling hook pretxnchangegroup.acl: hgext.acl.hook
1770 acl: checking access for user "astro"
1792 acl: checking access for user "astro"
1771 acl: acl.allow.branches enabled, 0 entries for user astro
1793 acl: acl.allow.branches enabled, 0 entries for user astro
1772 acl: acl.deny.branches not enabled
1794 acl: acl.deny.branches not enabled
1773 acl: acl.allow not enabled
1795 acl: acl.allow not enabled
1774 acl: acl.deny not enabled
1796 acl: acl.deny not enabled
1775 error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1797 error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1776 bundle2-input-part: total payload size 2068
1798 bundle2-input-part: total payload size 2068
1777 bundle2-input-part: total payload size 48
1799 bundle2-input-part: total payload size 48
1778 bundle2-input-bundle: 4 parts total
1800 bundle2-input-bundle: 4 parts total
1779 transaction abort!
1801 transaction abort!
1780 rollback completed
1802 rollback completed
1781 abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1803 abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
1782 no rollback information available
1804 no rollback information available
1783 2:fb35475503ef
1805 2:fb35475503ef
1784
1806
1785 $ do_push george
1807 $ do_push george
1786 Pushing as user george
1808 Pushing as user george
1787 hgrc = """
1809 hgrc = """
1788 [hooks]
1810 [hooks]
1789 pretxnchangegroup.acl = python:hgext.acl.hook
1811 pretxnchangegroup.acl = python:hgext.acl.hook
1790 [acl]
1812 [acl]
1791 sources = push
1813 sources = push
1792 [extensions]
1814 [extensions]
1815 posixgetuser=$TESTTMP/posixgetuser.py
1793 [acl.allow.branches]
1816 [acl.allow.branches]
1794 * = george
1817 * = george
1795 """
1818 """
1796 pushing to ../b
1819 pushing to ../b
1797 query 1; heads
1820 query 1; heads
1798 searching for changes
1821 searching for changes
1799 all remote heads known locally
1822 all remote heads known locally
1800 listing keys for "phases"
1823 listing keys for "phases"
1801 checking for updated bookmarks
1824 checking for updated bookmarks
1802 listing keys for "bookmarks"
1825 listing keys for "bookmarks"
1803 listing keys for "bookmarks"
1826 listing keys for "bookmarks"
1804 4 changesets found
1827 4 changesets found
1805 list of changesets:
1828 list of changesets:
1806 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1829 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1807 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1830 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1808 911600dab2ae7a9baff75958b84fe606851ce955
1831 911600dab2ae7a9baff75958b84fe606851ce955
1809 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1832 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1810 bundle2-output-bundle: "HG20", 5 parts total
1833 bundle2-output-bundle: "HG20", 5 parts total
1811 bundle2-output-part: "replycaps" 188 bytes payload
1834 bundle2-output-part: "replycaps" 188 bytes payload
1812 bundle2-output-part: "check:phases" 48 bytes payload
1835 bundle2-output-part: "check:phases" 48 bytes payload
1813 bundle2-output-part: "check:heads" streamed payload
1836 bundle2-output-part: "check:heads" streamed payload
1814 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1837 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1815 bundle2-output-part: "phase-heads" 48 bytes payload
1838 bundle2-output-part: "phase-heads" 48 bytes payload
1816 bundle2-input-bundle: with-transaction
1839 bundle2-input-bundle: with-transaction
1817 bundle2-input-part: "replycaps" supported
1840 bundle2-input-part: "replycaps" supported
1818 bundle2-input-part: total payload size 188
1841 bundle2-input-part: total payload size 188
1819 bundle2-input-part: "check:phases" supported
1842 bundle2-input-part: "check:phases" supported
1820 bundle2-input-part: total payload size 48
1843 bundle2-input-part: total payload size 48
1821 bundle2-input-part: "check:heads" supported
1844 bundle2-input-part: "check:heads" supported
1822 bundle2-input-part: total payload size 20
1845 bundle2-input-part: total payload size 20
1823 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1846 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1824 adding changesets
1847 adding changesets
1825 add changeset ef1ea85a6374
1848 add changeset ef1ea85a6374
1826 add changeset f9cafe1212c8
1849 add changeset f9cafe1212c8
1827 add changeset 911600dab2ae
1850 add changeset 911600dab2ae
1828 add changeset e8fc755d4d82
1851 add changeset e8fc755d4d82
1829 adding manifests
1852 adding manifests
1830 adding file changes
1853 adding file changes
1831 adding abc.txt revisions
1854 adding abc.txt revisions
1832 adding foo/Bar/file.txt revisions
1855 adding foo/Bar/file.txt revisions
1833 adding foo/file.txt revisions
1856 adding foo/file.txt revisions
1834 adding quux/file.py revisions
1857 adding quux/file.py revisions
1835 added 4 changesets with 4 changes to 4 files (+1 heads)
1858 added 4 changesets with 4 changes to 4 files (+1 heads)
1836 calling hook pretxnchangegroup.acl: hgext.acl.hook
1859 calling hook pretxnchangegroup.acl: hgext.acl.hook
1837 acl: checking access for user "george"
1860 acl: checking access for user "george"
1838 acl: acl.allow.branches enabled, 1 entries for user george
1861 acl: acl.allow.branches enabled, 1 entries for user george
1839 acl: acl.deny.branches not enabled
1862 acl: acl.deny.branches not enabled
1840 acl: acl.allow not enabled
1863 acl: acl.allow not enabled
1841 acl: acl.deny not enabled
1864 acl: acl.deny not enabled
1842 acl: branch access granted: "ef1ea85a6374" on branch "default"
1865 acl: branch access granted: "ef1ea85a6374" on branch "default"
1843 acl: path access granted: "ef1ea85a6374"
1866 acl: path access granted: "ef1ea85a6374"
1844 acl: branch access granted: "f9cafe1212c8" on branch "default"
1867 acl: branch access granted: "f9cafe1212c8" on branch "default"
1845 acl: path access granted: "f9cafe1212c8"
1868 acl: path access granted: "f9cafe1212c8"
1846 acl: branch access granted: "911600dab2ae" on branch "default"
1869 acl: branch access granted: "911600dab2ae" on branch "default"
1847 acl: path access granted: "911600dab2ae"
1870 acl: path access granted: "911600dab2ae"
1848 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
1871 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
1849 acl: path access granted: "e8fc755d4d82"
1872 acl: path access granted: "e8fc755d4d82"
1850 bundle2-input-part: total payload size 2068
1873 bundle2-input-part: total payload size 2068
1851 bundle2-input-part: "phase-heads" supported
1874 bundle2-input-part: "phase-heads" supported
1852 bundle2-input-part: total payload size 48
1875 bundle2-input-part: total payload size 48
1853 bundle2-input-bundle: 4 parts total
1876 bundle2-input-bundle: 4 parts total
1854 updating the branch cache
1877 updating the branch cache
1855 bundle2-output-bundle: "HG20", 1 parts total
1878 bundle2-output-bundle: "HG20", 1 parts total
1856 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1879 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1857 bundle2-input-bundle: no-transaction
1880 bundle2-input-bundle: no-transaction
1858 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1881 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1859 bundle2-input-bundle: 0 parts total
1882 bundle2-input-bundle: 0 parts total
1860 listing keys for "phases"
1883 listing keys for "phases"
1861 repository tip rolled back to revision 2 (undo push)
1884 repository tip rolled back to revision 2 (undo push)
1862 2:fb35475503ef
1885 2:fb35475503ef
1863
1886
1864
1887
1865 Branch acl conflicting allow
1888 Branch acl conflicting allow
1866 asterisk ends up applying to all branches and allowing george to
1889 asterisk ends up applying to all branches and allowing george to
1867 push foobar into the remote
1890 push foobar into the remote
1868
1891
1869 $ init_config
1892 $ init_config
1870 $ echo "[acl.allow.branches]" >> $config
1893 $ echo "[acl.allow.branches]" >> $config
1871 $ echo "foobar = astro" >> $config
1894 $ echo "foobar = astro" >> $config
1872 $ echo "* = george" >> $config
1895 $ echo "* = george" >> $config
1873 $ do_push george
1896 $ do_push george
1874 Pushing as user george
1897 Pushing as user george
1875 hgrc = """
1898 hgrc = """
1876 [hooks]
1899 [hooks]
1877 pretxnchangegroup.acl = python:hgext.acl.hook
1900 pretxnchangegroup.acl = python:hgext.acl.hook
1878 [acl]
1901 [acl]
1879 sources = push
1902 sources = push
1880 [extensions]
1903 [extensions]
1904 posixgetuser=$TESTTMP/posixgetuser.py
1881 [acl.allow.branches]
1905 [acl.allow.branches]
1882 foobar = astro
1906 foobar = astro
1883 * = george
1907 * = george
1884 """
1908 """
1885 pushing to ../b
1909 pushing to ../b
1886 query 1; heads
1910 query 1; heads
1887 searching for changes
1911 searching for changes
1888 all remote heads known locally
1912 all remote heads known locally
1889 listing keys for "phases"
1913 listing keys for "phases"
1890 checking for updated bookmarks
1914 checking for updated bookmarks
1891 listing keys for "bookmarks"
1915 listing keys for "bookmarks"
1892 listing keys for "bookmarks"
1916 listing keys for "bookmarks"
1893 4 changesets found
1917 4 changesets found
1894 list of changesets:
1918 list of changesets:
1895 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1919 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1896 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1920 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1897 911600dab2ae7a9baff75958b84fe606851ce955
1921 911600dab2ae7a9baff75958b84fe606851ce955
1898 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1922 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1899 bundle2-output-bundle: "HG20", 5 parts total
1923 bundle2-output-bundle: "HG20", 5 parts total
1900 bundle2-output-part: "replycaps" 188 bytes payload
1924 bundle2-output-part: "replycaps" 188 bytes payload
1901 bundle2-output-part: "check:phases" 48 bytes payload
1925 bundle2-output-part: "check:phases" 48 bytes payload
1902 bundle2-output-part: "check:heads" streamed payload
1926 bundle2-output-part: "check:heads" streamed payload
1903 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1927 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1904 bundle2-output-part: "phase-heads" 48 bytes payload
1928 bundle2-output-part: "phase-heads" 48 bytes payload
1905 bundle2-input-bundle: with-transaction
1929 bundle2-input-bundle: with-transaction
1906 bundle2-input-part: "replycaps" supported
1930 bundle2-input-part: "replycaps" supported
1907 bundle2-input-part: total payload size 188
1931 bundle2-input-part: total payload size 188
1908 bundle2-input-part: "check:phases" supported
1932 bundle2-input-part: "check:phases" supported
1909 bundle2-input-part: total payload size 48
1933 bundle2-input-part: total payload size 48
1910 bundle2-input-part: "check:heads" supported
1934 bundle2-input-part: "check:heads" supported
1911 bundle2-input-part: total payload size 20
1935 bundle2-input-part: total payload size 20
1912 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1936 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
1913 adding changesets
1937 adding changesets
1914 add changeset ef1ea85a6374
1938 add changeset ef1ea85a6374
1915 add changeset f9cafe1212c8
1939 add changeset f9cafe1212c8
1916 add changeset 911600dab2ae
1940 add changeset 911600dab2ae
1917 add changeset e8fc755d4d82
1941 add changeset e8fc755d4d82
1918 adding manifests
1942 adding manifests
1919 adding file changes
1943 adding file changes
1920 adding abc.txt revisions
1944 adding abc.txt revisions
1921 adding foo/Bar/file.txt revisions
1945 adding foo/Bar/file.txt revisions
1922 adding foo/file.txt revisions
1946 adding foo/file.txt revisions
1923 adding quux/file.py revisions
1947 adding quux/file.py revisions
1924 added 4 changesets with 4 changes to 4 files (+1 heads)
1948 added 4 changesets with 4 changes to 4 files (+1 heads)
1925 calling hook pretxnchangegroup.acl: hgext.acl.hook
1949 calling hook pretxnchangegroup.acl: hgext.acl.hook
1926 acl: checking access for user "george"
1950 acl: checking access for user "george"
1927 acl: acl.allow.branches enabled, 1 entries for user george
1951 acl: acl.allow.branches enabled, 1 entries for user george
1928 acl: acl.deny.branches not enabled
1952 acl: acl.deny.branches not enabled
1929 acl: acl.allow not enabled
1953 acl: acl.allow not enabled
1930 acl: acl.deny not enabled
1954 acl: acl.deny not enabled
1931 acl: branch access granted: "ef1ea85a6374" on branch "default"
1955 acl: branch access granted: "ef1ea85a6374" on branch "default"
1932 acl: path access granted: "ef1ea85a6374"
1956 acl: path access granted: "ef1ea85a6374"
1933 acl: branch access granted: "f9cafe1212c8" on branch "default"
1957 acl: branch access granted: "f9cafe1212c8" on branch "default"
1934 acl: path access granted: "f9cafe1212c8"
1958 acl: path access granted: "f9cafe1212c8"
1935 acl: branch access granted: "911600dab2ae" on branch "default"
1959 acl: branch access granted: "911600dab2ae" on branch "default"
1936 acl: path access granted: "911600dab2ae"
1960 acl: path access granted: "911600dab2ae"
1937 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
1961 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
1938 acl: path access granted: "e8fc755d4d82"
1962 acl: path access granted: "e8fc755d4d82"
1939 bundle2-input-part: total payload size 2068
1963 bundle2-input-part: total payload size 2068
1940 bundle2-input-part: "phase-heads" supported
1964 bundle2-input-part: "phase-heads" supported
1941 bundle2-input-part: total payload size 48
1965 bundle2-input-part: total payload size 48
1942 bundle2-input-bundle: 4 parts total
1966 bundle2-input-bundle: 4 parts total
1943 updating the branch cache
1967 updating the branch cache
1944 bundle2-output-bundle: "HG20", 1 parts total
1968 bundle2-output-bundle: "HG20", 1 parts total
1945 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1969 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
1946 bundle2-input-bundle: no-transaction
1970 bundle2-input-bundle: no-transaction
1947 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1971 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
1948 bundle2-input-bundle: 0 parts total
1972 bundle2-input-bundle: 0 parts total
1949 listing keys for "phases"
1973 listing keys for "phases"
1950 repository tip rolled back to revision 2 (undo push)
1974 repository tip rolled back to revision 2 (undo push)
1951 2:fb35475503ef
1975 2:fb35475503ef
1952
1976
1953 Branch acl conflicting deny
1977 Branch acl conflicting deny
1954
1978
1955 $ init_config
1979 $ init_config
1956 $ echo "[acl.deny.branches]" >> $config
1980 $ echo "[acl.deny.branches]" >> $config
1957 $ echo "foobar = astro" >> $config
1981 $ echo "foobar = astro" >> $config
1958 $ echo "default = astro" >> $config
1982 $ echo "default = astro" >> $config
1959 $ echo "* = george" >> $config
1983 $ echo "* = george" >> $config
1960 $ do_push george
1984 $ do_push george
1961 Pushing as user george
1985 Pushing as user george
1962 hgrc = """
1986 hgrc = """
1963 [hooks]
1987 [hooks]
1964 pretxnchangegroup.acl = python:hgext.acl.hook
1988 pretxnchangegroup.acl = python:hgext.acl.hook
1965 [acl]
1989 [acl]
1966 sources = push
1990 sources = push
1967 [extensions]
1991 [extensions]
1992 posixgetuser=$TESTTMP/posixgetuser.py
1968 [acl.deny.branches]
1993 [acl.deny.branches]
1969 foobar = astro
1994 foobar = astro
1970 default = astro
1995 default = astro
1971 * = george
1996 * = george
1972 """
1997 """
1973 pushing to ../b
1998 pushing to ../b
1974 query 1; heads
1999 query 1; heads
1975 searching for changes
2000 searching for changes
1976 all remote heads known locally
2001 all remote heads known locally
1977 listing keys for "phases"
2002 listing keys for "phases"
1978 checking for updated bookmarks
2003 checking for updated bookmarks
1979 listing keys for "bookmarks"
2004 listing keys for "bookmarks"
1980 listing keys for "bookmarks"
2005 listing keys for "bookmarks"
1981 4 changesets found
2006 4 changesets found
1982 list of changesets:
2007 list of changesets:
1983 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
2008 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
1984 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
2009 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
1985 911600dab2ae7a9baff75958b84fe606851ce955
2010 911600dab2ae7a9baff75958b84fe606851ce955
1986 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
2011 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
1987 bundle2-output-bundle: "HG20", 5 parts total
2012 bundle2-output-bundle: "HG20", 5 parts total
1988 bundle2-output-part: "replycaps" 188 bytes payload
2013 bundle2-output-part: "replycaps" 188 bytes payload
1989 bundle2-output-part: "check:phases" 48 bytes payload
2014 bundle2-output-part: "check:phases" 48 bytes payload
1990 bundle2-output-part: "check:heads" streamed payload
2015 bundle2-output-part: "check:heads" streamed payload
1991 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
2016 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
1992 bundle2-output-part: "phase-heads" 48 bytes payload
2017 bundle2-output-part: "phase-heads" 48 bytes payload
1993 bundle2-input-bundle: with-transaction
2018 bundle2-input-bundle: with-transaction
1994 bundle2-input-part: "replycaps" supported
2019 bundle2-input-part: "replycaps" supported
1995 bundle2-input-part: total payload size 188
2020 bundle2-input-part: total payload size 188
1996 bundle2-input-part: "check:phases" supported
2021 bundle2-input-part: "check:phases" supported
1997 bundle2-input-part: total payload size 48
2022 bundle2-input-part: total payload size 48
1998 bundle2-input-part: "check:heads" supported
2023 bundle2-input-part: "check:heads" supported
1999 bundle2-input-part: total payload size 20
2024 bundle2-input-part: total payload size 20
2000 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
2025 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
2001 adding changesets
2026 adding changesets
2002 add changeset ef1ea85a6374
2027 add changeset ef1ea85a6374
2003 add changeset f9cafe1212c8
2028 add changeset f9cafe1212c8
2004 add changeset 911600dab2ae
2029 add changeset 911600dab2ae
2005 add changeset e8fc755d4d82
2030 add changeset e8fc755d4d82
2006 adding manifests
2031 adding manifests
2007 adding file changes
2032 adding file changes
2008 adding abc.txt revisions
2033 adding abc.txt revisions
2009 adding foo/Bar/file.txt revisions
2034 adding foo/Bar/file.txt revisions
2010 adding foo/file.txt revisions
2035 adding foo/file.txt revisions
2011 adding quux/file.py revisions
2036 adding quux/file.py revisions
2012 added 4 changesets with 4 changes to 4 files (+1 heads)
2037 added 4 changesets with 4 changes to 4 files (+1 heads)
2013 calling hook pretxnchangegroup.acl: hgext.acl.hook
2038 calling hook pretxnchangegroup.acl: hgext.acl.hook
2014 acl: checking access for user "george"
2039 acl: checking access for user "george"
2015 acl: acl.allow.branches not enabled
2040 acl: acl.allow.branches not enabled
2016 acl: acl.deny.branches enabled, 1 entries for user george
2041 acl: acl.deny.branches enabled, 1 entries for user george
2017 acl: acl.allow not enabled
2042 acl: acl.allow not enabled
2018 acl: acl.deny not enabled
2043 acl: acl.deny not enabled
2019 error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2044 error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2020 bundle2-input-part: total payload size 2068
2045 bundle2-input-part: total payload size 2068
2021 bundle2-input-part: total payload size 48
2046 bundle2-input-part: total payload size 48
2022 bundle2-input-bundle: 4 parts total
2047 bundle2-input-bundle: 4 parts total
2023 transaction abort!
2048 transaction abort!
2024 rollback completed
2049 rollback completed
2025 abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2050 abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2026 no rollback information available
2051 no rollback information available
2027 2:fb35475503ef
2052 2:fb35475503ef
2028
2053
2029 User 'astro' must not be denied
2054 User 'astro' must not be denied
2030
2055
2031 $ init_config
2056 $ init_config
2032 $ echo "[acl.deny.branches]" >> $config
2057 $ echo "[acl.deny.branches]" >> $config
2033 $ echo "default = !astro" >> $config
2058 $ echo "default = !astro" >> $config
2034 $ do_push astro
2059 $ do_push astro
2035 Pushing as user astro
2060 Pushing as user astro
2036 hgrc = """
2061 hgrc = """
2037 [hooks]
2062 [hooks]
2038 pretxnchangegroup.acl = python:hgext.acl.hook
2063 pretxnchangegroup.acl = python:hgext.acl.hook
2039 [acl]
2064 [acl]
2040 sources = push
2065 sources = push
2041 [extensions]
2066 [extensions]
2067 posixgetuser=$TESTTMP/posixgetuser.py
2042 [acl.deny.branches]
2068 [acl.deny.branches]
2043 default = !astro
2069 default = !astro
2044 """
2070 """
2045 pushing to ../b
2071 pushing to ../b
2046 query 1; heads
2072 query 1; heads
2047 searching for changes
2073 searching for changes
2048 all remote heads known locally
2074 all remote heads known locally
2049 listing keys for "phases"
2075 listing keys for "phases"
2050 checking for updated bookmarks
2076 checking for updated bookmarks
2051 listing keys for "bookmarks"
2077 listing keys for "bookmarks"
2052 listing keys for "bookmarks"
2078 listing keys for "bookmarks"
2053 4 changesets found
2079 4 changesets found
2054 list of changesets:
2080 list of changesets:
2055 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
2081 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
2056 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
2082 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
2057 911600dab2ae7a9baff75958b84fe606851ce955
2083 911600dab2ae7a9baff75958b84fe606851ce955
2058 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
2084 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
2059 bundle2-output-bundle: "HG20", 5 parts total
2085 bundle2-output-bundle: "HG20", 5 parts total
2060 bundle2-output-part: "replycaps" 188 bytes payload
2086 bundle2-output-part: "replycaps" 188 bytes payload
2061 bundle2-output-part: "check:phases" 48 bytes payload
2087 bundle2-output-part: "check:phases" 48 bytes payload
2062 bundle2-output-part: "check:heads" streamed payload
2088 bundle2-output-part: "check:heads" streamed payload
2063 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
2089 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
2064 bundle2-output-part: "phase-heads" 48 bytes payload
2090 bundle2-output-part: "phase-heads" 48 bytes payload
2065 bundle2-input-bundle: with-transaction
2091 bundle2-input-bundle: with-transaction
2066 bundle2-input-part: "replycaps" supported
2092 bundle2-input-part: "replycaps" supported
2067 bundle2-input-part: total payload size 188
2093 bundle2-input-part: total payload size 188
2068 bundle2-input-part: "check:phases" supported
2094 bundle2-input-part: "check:phases" supported
2069 bundle2-input-part: total payload size 48
2095 bundle2-input-part: total payload size 48
2070 bundle2-input-part: "check:heads" supported
2096 bundle2-input-part: "check:heads" supported
2071 bundle2-input-part: total payload size 20
2097 bundle2-input-part: total payload size 20
2072 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
2098 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
2073 adding changesets
2099 adding changesets
2074 add changeset ef1ea85a6374
2100 add changeset ef1ea85a6374
2075 add changeset f9cafe1212c8
2101 add changeset f9cafe1212c8
2076 add changeset 911600dab2ae
2102 add changeset 911600dab2ae
2077 add changeset e8fc755d4d82
2103 add changeset e8fc755d4d82
2078 adding manifests
2104 adding manifests
2079 adding file changes
2105 adding file changes
2080 adding abc.txt revisions
2106 adding abc.txt revisions
2081 adding foo/Bar/file.txt revisions
2107 adding foo/Bar/file.txt revisions
2082 adding foo/file.txt revisions
2108 adding foo/file.txt revisions
2083 adding quux/file.py revisions
2109 adding quux/file.py revisions
2084 added 4 changesets with 4 changes to 4 files (+1 heads)
2110 added 4 changesets with 4 changes to 4 files (+1 heads)
2085 calling hook pretxnchangegroup.acl: hgext.acl.hook
2111 calling hook pretxnchangegroup.acl: hgext.acl.hook
2086 acl: checking access for user "astro"
2112 acl: checking access for user "astro"
2087 acl: acl.allow.branches not enabled
2113 acl: acl.allow.branches not enabled
2088 acl: acl.deny.branches enabled, 0 entries for user astro
2114 acl: acl.deny.branches enabled, 0 entries for user astro
2089 acl: acl.allow not enabled
2115 acl: acl.allow not enabled
2090 acl: acl.deny not enabled
2116 acl: acl.deny not enabled
2091 acl: branch access granted: "ef1ea85a6374" on branch "default"
2117 acl: branch access granted: "ef1ea85a6374" on branch "default"
2092 acl: path access granted: "ef1ea85a6374"
2118 acl: path access granted: "ef1ea85a6374"
2093 acl: branch access granted: "f9cafe1212c8" on branch "default"
2119 acl: branch access granted: "f9cafe1212c8" on branch "default"
2094 acl: path access granted: "f9cafe1212c8"
2120 acl: path access granted: "f9cafe1212c8"
2095 acl: branch access granted: "911600dab2ae" on branch "default"
2121 acl: branch access granted: "911600dab2ae" on branch "default"
2096 acl: path access granted: "911600dab2ae"
2122 acl: path access granted: "911600dab2ae"
2097 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
2123 acl: branch access granted: "e8fc755d4d82" on branch "foobar"
2098 acl: path access granted: "e8fc755d4d82"
2124 acl: path access granted: "e8fc755d4d82"
2099 bundle2-input-part: total payload size 2068
2125 bundle2-input-part: total payload size 2068
2100 bundle2-input-part: "phase-heads" supported
2126 bundle2-input-part: "phase-heads" supported
2101 bundle2-input-part: total payload size 48
2127 bundle2-input-part: total payload size 48
2102 bundle2-input-bundle: 4 parts total
2128 bundle2-input-bundle: 4 parts total
2103 updating the branch cache
2129 updating the branch cache
2104 bundle2-output-bundle: "HG20", 1 parts total
2130 bundle2-output-bundle: "HG20", 1 parts total
2105 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
2131 bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
2106 bundle2-input-bundle: no-transaction
2132 bundle2-input-bundle: no-transaction
2107 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
2133 bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
2108 bundle2-input-bundle: 0 parts total
2134 bundle2-input-bundle: 0 parts total
2109 listing keys for "phases"
2135 listing keys for "phases"
2110 repository tip rolled back to revision 2 (undo push)
2136 repository tip rolled back to revision 2 (undo push)
2111 2:fb35475503ef
2137 2:fb35475503ef
2112
2138
2113
2139
2114 Non-astro users must be denied
2140 Non-astro users must be denied
2115
2141
2116 $ do_push george
2142 $ do_push george
2117 Pushing as user george
2143 Pushing as user george
2118 hgrc = """
2144 hgrc = """
2119 [hooks]
2145 [hooks]
2120 pretxnchangegroup.acl = python:hgext.acl.hook
2146 pretxnchangegroup.acl = python:hgext.acl.hook
2121 [acl]
2147 [acl]
2122 sources = push
2148 sources = push
2123 [extensions]
2149 [extensions]
2150 posixgetuser=$TESTTMP/posixgetuser.py
2124 [acl.deny.branches]
2151 [acl.deny.branches]
2125 default = !astro
2152 default = !astro
2126 """
2153 """
2127 pushing to ../b
2154 pushing to ../b
2128 query 1; heads
2155 query 1; heads
2129 searching for changes
2156 searching for changes
2130 all remote heads known locally
2157 all remote heads known locally
2131 listing keys for "phases"
2158 listing keys for "phases"
2132 checking for updated bookmarks
2159 checking for updated bookmarks
2133 listing keys for "bookmarks"
2160 listing keys for "bookmarks"
2134 listing keys for "bookmarks"
2161 listing keys for "bookmarks"
2135 4 changesets found
2162 4 changesets found
2136 list of changesets:
2163 list of changesets:
2137 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
2164 ef1ea85a6374b77d6da9dcda9541f498f2d17df7
2138 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
2165 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
2139 911600dab2ae7a9baff75958b84fe606851ce955
2166 911600dab2ae7a9baff75958b84fe606851ce955
2140 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
2167 e8fc755d4d8217ee5b0c2bb41558c40d43b92c01
2141 bundle2-output-bundle: "HG20", 5 parts total
2168 bundle2-output-bundle: "HG20", 5 parts total
2142 bundle2-output-part: "replycaps" 188 bytes payload
2169 bundle2-output-part: "replycaps" 188 bytes payload
2143 bundle2-output-part: "check:phases" 48 bytes payload
2170 bundle2-output-part: "check:phases" 48 bytes payload
2144 bundle2-output-part: "check:heads" streamed payload
2171 bundle2-output-part: "check:heads" streamed payload
2145 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
2172 bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
2146 bundle2-output-part: "phase-heads" 48 bytes payload
2173 bundle2-output-part: "phase-heads" 48 bytes payload
2147 bundle2-input-bundle: with-transaction
2174 bundle2-input-bundle: with-transaction
2148 bundle2-input-part: "replycaps" supported
2175 bundle2-input-part: "replycaps" supported
2149 bundle2-input-part: total payload size 188
2176 bundle2-input-part: total payload size 188
2150 bundle2-input-part: "check:phases" supported
2177 bundle2-input-part: "check:phases" supported
2151 bundle2-input-part: total payload size 48
2178 bundle2-input-part: total payload size 48
2152 bundle2-input-part: "check:heads" supported
2179 bundle2-input-part: "check:heads" supported
2153 bundle2-input-part: total payload size 20
2180 bundle2-input-part: total payload size 20
2154 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
2181 bundle2-input-part: "changegroup" (params: 1 mandatory) supported
2155 adding changesets
2182 adding changesets
2156 add changeset ef1ea85a6374
2183 add changeset ef1ea85a6374
2157 add changeset f9cafe1212c8
2184 add changeset f9cafe1212c8
2158 add changeset 911600dab2ae
2185 add changeset 911600dab2ae
2159 add changeset e8fc755d4d82
2186 add changeset e8fc755d4d82
2160 adding manifests
2187 adding manifests
2161 adding file changes
2188 adding file changes
2162 adding abc.txt revisions
2189 adding abc.txt revisions
2163 adding foo/Bar/file.txt revisions
2190 adding foo/Bar/file.txt revisions
2164 adding foo/file.txt revisions
2191 adding foo/file.txt revisions
2165 adding quux/file.py revisions
2192 adding quux/file.py revisions
2166 added 4 changesets with 4 changes to 4 files (+1 heads)
2193 added 4 changesets with 4 changes to 4 files (+1 heads)
2167 calling hook pretxnchangegroup.acl: hgext.acl.hook
2194 calling hook pretxnchangegroup.acl: hgext.acl.hook
2168 acl: checking access for user "george"
2195 acl: checking access for user "george"
2169 acl: acl.allow.branches not enabled
2196 acl: acl.allow.branches not enabled
2170 acl: acl.deny.branches enabled, 1 entries for user george
2197 acl: acl.deny.branches enabled, 1 entries for user george
2171 acl: acl.allow not enabled
2198 acl: acl.allow not enabled
2172 acl: acl.deny not enabled
2199 acl: acl.deny not enabled
2173 error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2200 error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2174 bundle2-input-part: total payload size 2068
2201 bundle2-input-part: total payload size 2068
2175 bundle2-input-part: total payload size 48
2202 bundle2-input-part: total payload size 48
2176 bundle2-input-bundle: 4 parts total
2203 bundle2-input-bundle: 4 parts total
2177 transaction abort!
2204 transaction abort!
2178 rollback completed
2205 rollback completed
2179 abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2206 abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
2180 no rollback information available
2207 no rollback information available
2181 2:fb35475503ef
2208 2:fb35475503ef
2182
2209
2183
2210
General Comments 0
You need to be logged in to leave comments. Login now