375 for l in r: |
375 for l in r: |
376 l.sort() |
376 l.sort() |
377 |
377 |
378 return r |
378 return r |
379 |
379 |
|
380 def changectxdeprecwarn(repo): |
|
381 # changectx's constructor will soon lose support for these forms of |
|
382 # changeids: |
|
383 # * stringinfied ints |
|
384 # * bookmarks, tags, branches, and other namespace identifiers |
|
385 # * hex nodeid prefixes |
|
386 # |
|
387 # Depending on your use case, replace repo[x] by one of these: |
|
388 # * If you want to support general revsets, use scmutil.revsingle(x) |
|
389 # * If you know that "x" is a stringified int, use repo[int(x)] |
|
390 # * If you know that "x" is a bookmark, use repo._bookmarks.changectx(x) |
|
391 # * If you know that "x" is a tag, use repo[repo.tags()[x]] |
|
392 # * If you know that "x" is a branch or in some other namespace, |
|
393 # use the appropriate mechanism for that namespace |
|
394 # * If you know that "x" is a hex nodeid prefix, use |
|
395 # repo[scmutil.resolvepartialhexnodeid(repo, x)] |
|
396 # * If "x" is a string that can be any of the above, but you don't want |
|
397 # to allow general revsets (perhaps because "x" may come from a remote |
|
398 # user and the revset may be too costly), use scmutil.revsymbol(repo, x) |
|
399 # * If "x" can be a mix of the above, you'll have to figure it out |
|
400 # yourself |
|
401 repo.ui.deprecwarn("changectx.__init__ is getting more limited, see source " |
|
402 "for details", "4.6") |
|
403 |
380 class changectx(basectx): |
404 class changectx(basectx): |
381 """A changecontext object makes access to data related to a particular |
405 """A changecontext object makes access to data related to a particular |
382 changeset convenient. It represents a read-only context already present in |
406 changeset convenient. It represents a read-only context already present in |
383 the repo.""" |
407 the repo.""" |
384 def __init__(self, repo, changeid='.'): |
408 def __init__(self, repo, changeid='.'): |
424 r += l |
448 r += l |
425 if r < 0 or r >= l and r != wdirrev: |
449 if r < 0 or r >= l and r != wdirrev: |
426 raise ValueError |
450 raise ValueError |
427 self._rev = r |
451 self._rev = r |
428 self._node = repo.changelog.node(r) |
452 self._node = repo.changelog.node(r) |
|
453 changectxdeprecwarn(repo) |
429 return |
454 return |
430 except error.FilteredIndexError: |
455 except error.FilteredIndexError: |
431 raise |
456 raise |
432 except (ValueError, OverflowError, IndexError): |
457 except (ValueError, OverflowError, IndexError): |
433 pass |
458 pass |
444 |
469 |
445 # lookup bookmarks through the name interface |
470 # lookup bookmarks through the name interface |
446 try: |
471 try: |
447 self._node = repo.names.singlenode(repo, changeid) |
472 self._node = repo.names.singlenode(repo, changeid) |
448 self._rev = repo.changelog.rev(self._node) |
473 self._rev = repo.changelog.rev(self._node) |
|
474 changectxdeprecwarn(repo) |
449 return |
475 return |
450 except KeyError: |
476 except KeyError: |
451 pass |
477 pass |
452 |
478 |
453 self._node = scmutil.resolvepartialhexnodeid(repo, changeid) |
479 self._node = scmutil.resolvepartialhexnodeid(repo, changeid) |
454 if self._node is not None: |
480 if self._node is not None: |
455 self._rev = repo.changelog.rev(self._node) |
481 self._rev = repo.changelog.rev(self._node) |
|
482 changectxdeprecwarn(repo) |
456 return |
483 return |
457 |
484 |
458 # lookup failed |
485 # lookup failed |
459 # check if it might have come from damaged dirstate |
486 # check if it might have come from damaged dirstate |
460 # |
487 # |