txnutil.py
33 lines
| 978 B
| text/x-python
|
PythonLexer
/ mercurial / txnutil.py
FUJIWARA Katsunori
|
r31050 | # 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. | ||||
Matt Harbison
|
r52756 | from __future__ import annotations | ||
FUJIWARA Katsunori
|
r31050 | |||
Augie Fackler
|
r43346 | from . import encoding | ||
FUJIWARA Katsunori
|
r31050 | |||
def mayhavepending(root): | ||||
Augie Fackler
|
r46554 | """return whether 'root' may have pending changes, which are | ||
FUJIWARA Katsunori
|
r31050 | visible to this process. | ||
Augie Fackler
|
r46554 | """ | ||
Augie Fackler
|
r43347 | return root == encoding.environ.get(b'HG_PENDING') | ||
FUJIWARA Katsunori
|
r31050 | |||
Augie Fackler
|
r43346 | |||
FUJIWARA Katsunori
|
r31050 | def trypending(root, vfs, filename, **kwargs): | ||
Augie Fackler
|
r46554 | """Open file to be read according to HG_PENDING environment variable | ||
FUJIWARA Katsunori
|
r31050 | |||
This opens '.pending' of specified 'filename' only when HG_PENDING | ||||
is equal to 'root'. | ||||
This returns '(fp, is_pending_opened)' tuple. | ||||
Augie Fackler
|
r46554 | """ | ||
FUJIWARA Katsunori
|
r31050 | if mayhavepending(root): | ||
try: | ||||
Augie Fackler
|
r43347 | return (vfs(b'%s.pending' % filename, **kwargs), True) | ||
Manuel Jacob
|
r50201 | except FileNotFoundError: | ||
pass | ||||
FUJIWARA Katsunori
|
r31050 | return (vfs(filename, **kwargs), False) | ||