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