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