hg
author Simon Sapin <simon.sapin@octobus.net>
Wed, 13 Oct 2021 17:32:52 +0200
changeset 48219 308d9c245337
parent 47880 769cd5703b2c
child 48875 6000f5b25c9b
permissions -rwxr-xr-x
dirstate-v2: Add storage space for nanoseconds precision in file mtimes For now the sub-second component is always set to zero for tracked files and symlinks. (The mtime of directories for the `readdir`-skipping optimization is a different code path and already uses the full precision available.) This extra storage uses the space previously freed by replacing the 32-bit `mode` field by two bits in the existing `flags` field, so the overall size of nodes is unchanged. (This space had been left as padding for this purpose.) Also move things around in the node layout and documentation to have less duplication. Now that they have the same representation, directory mtime and file mtime are kept in the same field. (Only either one can exist for a given node.) Differential Revision: https://phab.mercurial-scm.org/D11655

#!/usr/bin/env python3
#
# mercurial - scalable distributed SCM
#
# Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
#
# 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 os
import sys

libdir = '@LIBDIR@'

if libdir != '@' 'LIBDIR' '@':
    if not os.path.isabs(libdir):
        libdir = os.path.join(
            os.path.dirname(os.path.realpath(__file__)), libdir
        )
        libdir = os.path.abspath(libdir)
    sys.path.insert(0, libdir)

# Make `pip install --user ...` packages available to the official Windows
# build.  Most py2 packaging installs directly into the system python
# environment, so no changes are necessary for other platforms.  The Windows
# py2 package uses py2exe, which lacks a `site` module.  Hardcode it according
# to the documentation.
if getattr(sys, 'frozen', None) == 'console_exe':
    vi = sys.version_info
    appdata = os.environ.get('APPDATA')
    if appdata:
        sys.path.append(
            os.path.join(
                appdata,
                'Python',
                'Python%d%d' % (vi[0], vi[1]),
                'site-packages',
            )
        )

from hgdemandimport import tracing

with tracing.log('hg script'):
    # enable importing on demand to reduce startup time
    try:
        if sys.version_info[0] < 3 or sys.version_info >= (3, 6):
            import hgdemandimport

            hgdemandimport.enable()
    except ImportError:
        sys.stderr.write(
            "abort: couldn't find mercurial libraries in [%s]\n"
            % ' '.join(sys.path)
        )
        sys.stderr.write("(check your install and PYTHONPATH)\n")
        sys.exit(-1)

    from mercurial import dispatch

    dispatch.run()