Mercurial > public > mercurial-scm > hg
comparison mercurial/bundle2.py @ 21626:985d139c8e8f
bundle2: ignore advisory part with unknown parameters
Advisory parts are advisory. If a handler exists but does not support the
proper parameters, we can safely ignore it.
Test has been updated to include this case.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 27 May 2014 12:16:45 -0700 |
parents | 511f5fa63aa2 |
children | 3e8bcc90f07c |
comparison
equal
deleted
inserted
replaced
21625:511f5fa63aa2 | 21626:985d139c8e8f |
---|---|
292 for part in iterparts: | 292 for part in iterparts: |
293 parttype = part.type | 293 parttype = part.type |
294 # part key are matched lower case | 294 # part key are matched lower case |
295 key = parttype.lower() | 295 key = parttype.lower() |
296 try: | 296 try: |
297 handler = parthandlermapping[key] | 297 handler = parthandlermapping.get(key) |
298 if handler is None: | |
299 raise error.BundleValueError(parttype=key) | |
298 op.ui.debug('found a handler for part %r\n' % parttype) | 300 op.ui.debug('found a handler for part %r\n' % parttype) |
299 except KeyError: | 301 unknownparams = part.mandatorykeys - handler.params |
302 if unknownparams: | |
303 unknownparams = list(unknownparams) | |
304 unknownparams.sort() | |
305 raise error.BundleValueError(parttype=key, | |
306 params=unknownparams) | |
307 except error.BundleValueError, exc: | |
300 if key != parttype: # mandatory parts | 308 if key != parttype: # mandatory parts |
301 # todo: | 309 raise |
302 # - use a more precise exception | 310 op.ui.debug('ignoring unsupported advisory part %s\n' % exc) |
303 raise error.BundleValueError(parttype=key) | |
304 op.ui.debug('ignoring unknown advisory part %r\n' % key) | |
305 # consuming the part | 311 # consuming the part |
306 part.read() | 312 part.read() |
307 continue | 313 continue |
308 | 314 |
309 unknownparams = part.mandatorykeys - handler.params | |
310 if unknownparams: | |
311 unknownparams = list(unknownparams) | |
312 unknownparams.sort() | |
313 raise error.BundleValueError(parttype=key, params=unknownparams) | |
314 | 315 |
315 # handler is called outside the above try block so that we don't | 316 # handler is called outside the above try block so that we don't |
316 # risk catching KeyErrors from anything other than the | 317 # risk catching KeyErrors from anything other than the |
317 # parthandlermapping lookup (any KeyError raised by handler() | 318 # parthandlermapping lookup (any KeyError raised by handler() |
318 # itself represents a defect of a different variety). | 319 # itself represents a defect of a different variety). |