##// END OF EJS Templates
dispatch: change cwd when loading local config...
dispatch: change cwd when loading local config Previously, the `_getlocal` function would not correctly load the repo config when given a relative `rpath` and an alternate cwd via the `wd` parameter. Normally when `--cwd` is specified, hg changes to the given directory before attempting to load the local config (and therefore does not specify a `wd`). The only time the function is called with `wd` set is when hg is running as a command server (e.g., with chg), in which case each forked worker process will attempt to configure itself via `_getlocal` before responding to the client. When given a relative repo path, the worker fails to load the repo config, detects a config mismatch with the client, and enters a redirect/respawn loop. To fix this, we can simply change to the desired working directory during config loading. (Note that simply concatenating `wd` and `rpath` won't work in all cases. The repo path could be something more complicated than a simple relative path, such as a `union:` repo.)

File last commit:

r49801:642e31cb default
r50317:3681a476 default
Show More
__init__.py
82 lines | 2.2 KiB | text/x-python | PythonLexer
revlog: introduce an explicit NodeMap class for pure code...
r43924 # mercurial.revlogutils -- basic utilities for revlog
#
# Copyright 2019 Pierre-Yves David <pierre-yves.david@octobus.net>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
revlog: move `offset_type` to `revlogutils`...
r48186
revlog: move `revisioninfo` in `revlogutils`...
r48191 from ..thirdparty import attr
revlog: move `offset_type` to `revlogutils`...
r48186 from ..interfaces import repository
revlog: add a function to build index entry tuple...
r48187 # See mercurial.revlogutils.constants for doc
COMP_MODE_INLINE = 2
rank: add a "rank" value to the revlog-entry tuple...
r49330 RANK_UNKNOWN = -1
revlog: add a function to build index entry tuple...
r48187
revlog: move `offset_type` to `revlogutils`...
r48186
def offset_type(offset, type):
if (type & ~repository.REVISION_FLAGS_KNOWN) != 0:
raise ValueError(b'unknown revlog index flags: %d' % type)
return int(int(offset) << 16 | type)
revlog: add a function to build index entry tuple...
r48187
def entry(
data_offset,
data_compressed_length,
data_delta_base,
link_rev,
parent_rev_1,
parent_rev_2,
node_id,
flags=0,
data_uncompressed_length=-1,
data_compression_mode=COMP_MODE_INLINE,
sidedata_offset=0,
sidedata_compressed_length=0,
sidedata_compression_mode=COMP_MODE_INLINE,
rank: add a "rank" value to the revlog-entry tuple...
r49330 rank=RANK_UNKNOWN,
revlog: add a function to build index entry tuple...
r48187 ):
"""Build one entry from symbolic name
This is useful to abstract the actual detail of how we build the entry
tuple for caller who don't care about it.
This should always be called using keyword arguments. Some arguments have
default value, this match the value used by index version that does not store such data.
"""
return (
offset_type(data_offset, flags),
data_compressed_length,
data_uncompressed_length,
data_delta_base,
link_rev,
parent_rev_1,
parent_rev_2,
node_id,
sidedata_offset,
sidedata_compressed_length,
data_compression_mode,
sidedata_compression_mode,
rank: add a "rank" value to the revlog-entry tuple...
r49330 rank,
revlog: add a function to build index entry tuple...
r48187 )
revlog: move `revisioninfo` in `revlogutils`...
r48191
@attr.s(slots=True, frozen=True)
Gregory Szorc
py3: use class X: instead of class X(object):...
r49801 class revisioninfo:
revlog: move `revisioninfo` in `revlogutils`...
r48191 """Information about a revision that allows building its fulltext
node: expected hash of the revision
p1, p2: parent revs of the revision
btext: built text cache consisting of a one-element list
cachedelta: (baserev, uncompressed_delta) or None
flags: flags associated to the revision storage
One of btext[0] or cachedelta must be set.
"""
node = attr.ib()
p1 = attr.ib()
p2 = attr.ib()
btext = attr.ib()
textlen = attr.ib()
cachedelta = attr.ib()
flags = attr.ib()