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