Mercurial > hg
view mercurial/txnutil.py @ 44810:62435a5b46fe
revisions: parse "x123" as "nodeid starting with 123" without prefixhexnode
`experimental.revisions.prefixhexnode` makes it so the template
function `shortest()` uses an "x" prefix to disambiguate between short
nodeids and revnums. That config has so far also been used for
enabling parsing of "x123" unambiguously as a nodeid. That makes it a
little annoying for people who have prefixhexnode=yes to share such
nodeids with people who have prefixhexnode=no ("x123" will be
considered invalid for them). There seems to be little harm in
allowing that parsing for everyone. We still let e.g. bookmark names
like "x123" take precedence over the nodeid, so that's not a
concern. The only thing I can think of is that people get used to the
"x" prefix being valid, making it impossible for us to change to a
different prefix if we wanted to do that when graduating the feature.
Differential Revision: https://phab.mercurial-scm.org/D8514
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 11 May 2020 09:07:31 -0700 |
parents | 687b865b95ad |
children | 89a2afe31e82 |
line wrap: on
line source
# txnutil.py - transaction related utilities # # Copyright FUJIWARA Katsunori <foozy@lares.dti.ne.jp> and others # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from __future__ import absolute_import import errno from . import encoding def mayhavepending(root): '''return whether 'root' may have pending changes, which are visible to this process. ''' return root == encoding.environ.get(b'HG_PENDING') def trypending(root, vfs, filename, **kwargs): '''Open file to be read according to HG_PENDING environment variable This opens '.pending' of specified 'filename' only when HG_PENDING is equal to 'root'. This returns '(fp, is_pending_opened)' tuple. ''' if mayhavepending(root): try: return (vfs(b'%s.pending' % filename, **kwargs), True) except IOError as inst: if inst.errno != errno.ENOENT: raise return (vfs(filename, **kwargs), False)