txnutil.py
36 lines
| 1.0 KiB
| 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. | ||||
from __future__ import absolute_import | ||||
import errno | ||||
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) | ||
FUJIWARA Katsunori
|
r31050 | except IOError as inst: | ||
if inst.errno != errno.ENOENT: | ||||
raise | ||||
return (vfs(filename, **kwargs), False) | ||||