##// END OF EJS Templates
vfs: copy if EPERM to avoid file stat ambiguity forcibly at closing...
vfs: copy if EPERM to avoid file stat ambiguity forcibly at closing Now, files (to be truncated) are opened with checkambig=True, only if localrepository caches it. Therefore, straightforward "copy if EPERM" is always reasonable to avoid file stat ambiguity at closing. This patch makes checkambigatclosing close wrapper copy the target file, and advance mtime on it after renaming, if EPERM. This can avoid file stat ambiguity, even if the target file is owned by another (see issue5418 and issue5584 for detail). This patch factors main logic out instead of changing checkambigatclosing._checkambig() directly, in order to reuse it.

File last commit:

r32684:af854b1b default
r33280:64635229 default
Show More
node.py
35 lines | 917 B | text/x-python | PythonLexer
Martin Geisler
put license and copyright info into comment blocks
r8226 # node.py - basic nodeid manipulation for mercurial
#
# Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
mpm@selenic.com
Break apart hg.py...
r1089
Gregory Szorc
node: use absolute_import
r25962 from __future__ import absolute_import
Matt Mackall
Replace demandload with new demandimport
r3877 import binascii
mpm@selenic.com
Break apart hg.py...
r1089
Siddharth Agarwal
node: add 'nullhex', hex-encoded nullid...
r26980 # This ugly style has a noticeable effect in manifest parsing
hex = binascii.hexlify
bin = binascii.unhexlify
Thomas Arendsen Hein
Define and use nullrev (revision of nullid) instead of -1.
r3578 nullrev = -1
Gregory Szorc
node: use byte literals to construct nullid and wdirid...
r28585 nullid = b"\0" * 20
Siddharth Agarwal
node: add 'nullhex', hex-encoded nullid...
r26980 nullhex = hex(nullid)
mpm@selenic.com
Break apart hg.py...
r1089
Durham Goode
dirstate: change placeholder hash length to 20 bytes...
r30360 # Phony node value to stand-in for new files in some uses of
# manifests.
newnodeid = '!' * 20
Durham Goode
dirstate: change added/modified placeholder hash length to 20 bytes...
r30361 addednodeid = ('0' * 15) + 'added'
modifiednodeid = ('0' * 12) + 'modified'
Durham Goode
dirstate: change placeholder hash length to 20 bytes...
r30360
Martin von Zweigbergk
cleanup: use set literals...
r32291 wdirnodes = {newnodeid, addednodeid, modifiednodeid}
Durham Goode
dirstate: change placeholder hash length to 20 bytes...
r30360
Yuya Nishihara
node: define experimental identifiers for working directory...
r25737 # pseudo identifiers for working directory
# (they are experimental, so don't add too many dependencies on them)
wdirrev = 0x7fffffff
Gregory Szorc
node: use byte literals to construct nullid and wdirid...
r28585 wdirid = b"\xff" * 20
Yuya Nishihara
revlog: add support for partial matching of wdir node id...
r32684 wdirhex = hex(wdirid)
Yuya Nishihara
node: define experimental identifiers for working directory...
r25737
mpm@selenic.com
Break apart hg.py...
r1089 def short(node):
return hex(node[:6])