mercurial/filelog.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 24 Aug 2021 22:07:50 +0200
changeset 47939 74a8d5c6fdc6
parent 47817 2813d406b036
child 48564 c514936d92b4
permissions -rw-r--r--
dirstate: also wrap the new method in `dirstatenonnormalcheck` The goal of this is to make sure we set the data right, so we need to make sure it run after the new method, that we actually call, in addition to the old one, that we no longer call. Differential Revision: https://phab.mercurial-scm.org/D11343
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1089
142b5d5ec9cc Break apart hg.py
mpm@selenic.com
parents: 1072
diff changeset
     1
# filelog.py - file history class for mercurial
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
     2
#
46819
d4ba4d51f85f contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents: 46793
diff changeset
     3
# Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
     4
#
8225
46293a0c7e9f updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents: 7634
diff changeset
     5
# This software may be used and distributed according to the terms of the
10263
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 8531
diff changeset
     6
# GNU General Public License version 2 or any later version.
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
     7
25948
34bd1a5eef5b filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24255
diff changeset
     8
from __future__ import absolute_import
34bd1a5eef5b filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24255
diff changeset
     9
40389
1b183edbb68e repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40387
diff changeset
    10
from .i18n import _
47055
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46819
diff changeset
    11
from .node import nullrev
25948
34bd1a5eef5b filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24255
diff changeset
    12
from . import (
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    13
    error,
42823
268662aac075 interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 42737
diff changeset
    14
    revlog,
268662aac075 interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 42737
diff changeset
    15
)
268662aac075 interfaces: create a new folder for interfaces and move repository.py in it
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 42737
diff changeset
    16
from .interfaces import (
37441
a3202fa83aff filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35567
diff changeset
    17
    repository,
42824
2c4f656c8e9f interfaceutil: move to interfaces/
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 42823
diff changeset
    18
    util as interfaceutil,
25948
34bd1a5eef5b filelog: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24255
diff changeset
    19
)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
    20
from .utils import storageutil
47089
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    21
from .revlogutils import (
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    22
    constants as revlog_constants,
47816
c30ca163b45e issue6528: also filter delta on the fly when applying a changegroup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47815
diff changeset
    23
    rewrite,
47089
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    24
)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
    25
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    26
37810
856f381ad74b interfaceutil: module to stub out zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37497
diff changeset
    27
@interfaceutil.implementer(repository.ifilestorage)
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    28
class filelog(object):
4258
b11a2fb59cf5 revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents: 4257
diff changeset
    29
    def __init__(self, opener, path):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
    30
        self._revlog = revlog.revlog(
47089
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    31
            opener,
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    32
            # XXX should use the unencoded path
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    33
            target=(revlog_constants.KIND_FILELOG, path),
47164
8d3c2f9d4af7 revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47162
diff changeset
    34
            radix=b'/'.join((b'data', path)),
47089
4c041c71ec01 revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47055
diff changeset
    35
            censorable=True,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
    36
        )
39799
76f92d208f7a filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39798
diff changeset
    37
        # Full name of the user visible file, relative to the repository root.
76f92d208f7a filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39798
diff changeset
    38
        # Used by LFS.
39861
96838b620b9c filelog: store filename directly on revlog instance
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39860
diff changeset
    39
        self._revlog.filename = path
46793
6266d19556ad node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46728
diff changeset
    40
        self.nullid = self._revlog.nullid
47817
2813d406b036 issue6528: add a config option to control the fixing on the fly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47816
diff changeset
    41
        opts = opener.options
2813d406b036 issue6528: add a config option to control the fixing on the fly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47816
diff changeset
    42
        self._fix_issue6528 = opts.get(b'issue6528.fix-incoming', True)
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    43
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    44
    def __len__(self):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    45
        return len(self._revlog)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    46
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    47
    def __iter__(self):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    48
        return self._revlog.__iter__()
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    49
40387
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    50
    def hasnode(self, node):
47055
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46819
diff changeset
    51
        if node in (self.nullid, nullrev):
40387
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    52
            return False
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    53
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    54
        try:
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    55
            self._revlog.rev(node)
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    56
            return True
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    57
        except (TypeError, ValueError, IndexError, error.LookupError):
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    58
            return False
f1a39128da95 filelog: add a hasnode() method (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40057
diff changeset
    59
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    60
    def revs(self, start=0, stop=None):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    61
        return self._revlog.revs(start=start, stop=stop)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    62
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    63
    def parents(self, node):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    64
        return self._revlog.parents(node)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    65
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    66
    def parentrevs(self, rev):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    67
        return self._revlog.parentrevs(rev)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    68
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    69
    def rev(self, node):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    70
        return self._revlog.rev(node)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    71
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    72
    def node(self, rev):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    73
        return self._revlog.node(rev)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    74
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    75
    def lookup(self, node):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
    76
        return storageutil.fileidlookup(
47169
96ee8ca99f5a revlog: use revlog.display_id in LookupError
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47164
diff changeset
    77
            self._revlog, node, self._revlog.display_id
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
    78
        )
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    79
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    80
    def linkrev(self, rev):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    81
        return self._revlog.linkrev(rev)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    82
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    83
    def commonancestorsheads(self, node1, node2):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    84
        return self._revlog.commonancestorsheads(node1, node2)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    85
39799
76f92d208f7a filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39798
diff changeset
    86
    # Used by dagop.blockdescendants().
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    87
    def descendants(self, revs):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    88
        return self._revlog.descendants(revs)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    89
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    90
    def heads(self, start=None, stop=None):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    91
        return self._revlog.heads(start, stop)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    92
39799
76f92d208f7a filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39798
diff changeset
    93
    # Used by hgweb, children extension.
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    94
    def children(self, node):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    95
        return self._revlog.children(node)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    96
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    97
    def iscensored(self, rev):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    98
        return self._revlog.iscensored(rev)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
    99
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   100
    def revision(self, node, _df=None, raw=False):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   101
        return self._revlog.revision(node, _df=_df, raw=raw)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   102
42737
bf1e8d2ab900 rawdata: forward the method call on `filelog` object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40496
diff changeset
   103
    def rawdata(self, node, _df=None):
bf1e8d2ab900 rawdata: forward the method call on `filelog` object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40496
diff changeset
   104
        return self._revlog.rawdata(node, _df=_df)
bf1e8d2ab900 rawdata: forward the method call on `filelog` object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40496
diff changeset
   105
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   106
    def emitrevisions(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   107
        self,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   108
        nodes,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   109
        nodesorder=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   110
        revisiondata=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   111
        assumehaveparentrevisions=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   112
        deltamode=repository.CG_DELTAMODE_STD,
46728
45f0d5297698 changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents: 46727
diff changeset
   113
        sidedata_helpers=None,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   114
    ):
39867
5a9ab91e0a45 revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39865
diff changeset
   115
        return self._revlog.emitrevisions(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   116
            nodes,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   117
            nodesorder=nodesorder,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   118
            revisiondata=revisiondata,
39867
5a9ab91e0a45 revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39865
diff changeset
   119
            assumehaveparentrevisions=assumehaveparentrevisions,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   120
            deltamode=deltamode,
46728
45f0d5297698 changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net>
parents: 46727
diff changeset
   121
            sidedata_helpers=sidedata_helpers,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   122
        )
39867
5a9ab91e0a45 revlog: new API to emit revision data
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39865
diff changeset
   123
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   124
    def addrevision(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   125
        self,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   126
        revisiondata,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   127
        transaction,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   128
        linkrev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   129
        p1,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   130
        p2,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   131
        node=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   132
        flags=revlog.REVIDX_DEFAULT_FLAGS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   133
        cachedelta=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   134
    ):
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   135
        return self._revlog.addrevision(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   136
            revisiondata,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   137
            transaction,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   138
            linkrev,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   139
            p1,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   140
            p2,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   141
            node=node,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   142
            flags=flags,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   143
            cachedelta=cachedelta,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   144
        )
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   145
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   146
    def addgroup(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   147
        self,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   148
        deltas,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   149
        linkmapper,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   150
        transaction,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   151
        addrevisioncb=None,
45811
a5206e71c536 revlog: extend addgroup() with callback for duplicates
Joerg Sonnenberger <joerg@bec.de>
parents: 43077
diff changeset
   152
        duplicaterevisioncb=None,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   153
        maybemissingparents=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   154
    ):
40389
1b183edbb68e repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40387
diff changeset
   155
        if maybemissingparents:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   156
            raise error.Abort(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   157
                _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   158
                    b'revlog storage does not support missing '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   159
                    b'parents write mode'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   160
                )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   161
            )
40389
1b183edbb68e repository: teach addgroup() to receive data with missing parents
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40387
diff changeset
   162
47815
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   163
        with self._revlog._writing(transaction):
47816
c30ca163b45e issue6528: also filter delta on the fly when applying a changegroup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47815
diff changeset
   164
47817
2813d406b036 issue6528: add a config option to control the fixing on the fly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47816
diff changeset
   165
            if self._fix_issue6528:
2813d406b036 issue6528: add a config option to control the fixing on the fly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47816
diff changeset
   166
                deltas = rewrite.filter_delta_issue6528(self._revlog, deltas)
47816
c30ca163b45e issue6528: also filter delta on the fly when applying a changegroup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47815
diff changeset
   167
47815
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   168
            return self._revlog.addgroup(
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   169
                deltas,
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   170
                linkmapper,
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   171
                transaction,
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   172
                addrevisioncb=addrevisioncb,
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   173
                duplicaterevisioncb=duplicaterevisioncb,
436932c2cfaa filelog: open the writing context a bit earlier in `addgroup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47169
diff changeset
   174
            )
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   175
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   176
    def getstrippoint(self, minlink):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   177
        return self._revlog.getstrippoint(minlink)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   178
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   179
    def strip(self, minlink, transaction):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   180
        return self._revlog.strip(minlink, transaction)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   181
39794
a6b3c4c1019f revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39781
diff changeset
   182
    def censorrevision(self, tr, node, tombstone=b''):
40057
324b4b10351e revlog: rewrite censoring logic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40008
diff changeset
   183
        return self._revlog.censorrevision(tr, node, tombstone=tombstone)
39794
a6b3c4c1019f revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39781
diff changeset
   184
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   185
    def files(self):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   186
        return self._revlog.files()
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   187
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
   188
    def read(self, node):
39885
1b65fb4d43d6 storageutil: new function for extracting metadata-less content from text
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39883
diff changeset
   189
        return storageutil.filtermetadata(self.revision(node))
360
10519e4cbd02 filelog: add metadata support
mpm@selenic.com
parents: 358
diff changeset
   190
10519e4cbd02 filelog: add metadata support
mpm@selenic.com
parents: 358
diff changeset
   191
    def add(self, text, meta, transaction, link, p1=None, p2=None):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   192
        if meta or text.startswith(b'\1\n'):
39883
3e896b51aa5d storageutil: move metadata parsing and packing from revlog (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39881
diff changeset
   193
            text = storageutil.packmeta(meta, text)
46560
f7b61ad3c64a revlog: change addrevision to return the new revision, not node
Joerg Sonnenberger <joerg@bec.de>
parents: 45811
diff changeset
   194
        rev = self.addrevision(text, transaction, link, p1, p2)
f7b61ad3c64a revlog: change addrevision to return the new revision, not node
Joerg Sonnenberger <joerg@bec.de>
parents: 45811
diff changeset
   195
        return self.node(rev)
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
   196
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1089
diff changeset
   197
    def renamed(self, node):
40006
1d97a332c6d9 storageutil: extract copy metadata retrieval out of filelog
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40003
diff changeset
   198
        return storageutil.filerevisioncopied(self, node)
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1089
diff changeset
   199
2898
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   200
    def size(self, rev):
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   201
        """return the size of a given revision"""
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   202
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   203
        # for revisions with renames, we have to go the slow way
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   204
        node = self.node(rev)
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   205
        if self.renamed(node):
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   206
            return len(self.read(node))
24118
76f6ae06ddf5 revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents: 24117
diff changeset
   207
        if self.iscensored(rev):
22597
58ec36686f0e filelog: censored files compare against empty data, have 0 size
Mike Edgar <adgar@google.com>
parents: 22596
diff changeset
   208
            return 0
2898
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   209
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11539
diff changeset
   210
        # XXX if self.read(node).startswith("\1\n"), this returns (size+4)
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   211
        return self._revlog.size(rev)
2898
db397c38005d merge: use file size stored in revlog index
Matt Mackall <mpm@selenic.com>
parents: 2895
diff changeset
   212
2887
05257fd28591 filelog: add hash-based comparisons
Matt Mackall <mpm@selenic.com>
parents: 2859
diff changeset
   213
    def cmp(self, node, text):
11539
a463e3c50212 cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10706
diff changeset
   214
        """compare text with a given file revision
a463e3c50212 cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10706
diff changeset
   215
a463e3c50212 cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10706
diff changeset
   216
        returns True if text is different than what is stored.
a463e3c50212 cmp: document the fact that we return True if content is different
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10706
diff changeset
   217
        """
40008
1470183068b8 storageutil: invert logic of file data comparison
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40007
diff changeset
   218
        return not storageutil.filedataequivalent(self, node, text)
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   219
39847
97986c9c69d3 verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39801
diff changeset
   220
    def verifyintegrity(self, state):
97986c9c69d3 verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39801
diff changeset
   221
        return self._revlog.verifyintegrity(state)
97986c9c69d3 verify: start to abstract file verification
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39801
diff changeset
   222
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   223
    def storageinfo(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   224
        self,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   225
        exclusivefiles=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   226
        sharedfiles=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   227
        revisionscount=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   228
        trackedsize=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   229
        storedsize=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   230
    ):
39874
14e500b58263 revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39872
diff changeset
   231
        return self._revlog.storageinfo(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   232
            exclusivefiles=exclusivefiles,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   233
            sharedfiles=sharedfiles,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   234
            revisionscount=revisionscount,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   235
            trackedsize=trackedsize,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   236
            storedsize=storedsize,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   237
        )
39874
14e500b58263 revlog: add method for obtaining storage info (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39872
diff changeset
   238
39799
76f92d208f7a filelog: record what's using attributes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39798
diff changeset
   239
    # Used by repo upgrade.
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   240
    def clone(self, tr, destrevlog, **kwargs):
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   241
        if not isinstance(destrevlog, filelog):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   242
            raise error.ProgrammingError(b'expected filelog to clone()')
37497
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   243
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   244
        return self._revlog.clone(tr, destrevlog._revlog, **kwargs)
1541e1a8e87d filelog: wrap revlog instead of inheriting it (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37443
diff changeset
   245
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42824
diff changeset
   246
39781
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   247
class narrowfilelog(filelog):
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   248
    """Filelog variation to be used with narrow stores."""
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   249
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   250
    def __init__(self, opener, path, narrowmatch):
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   251
        super(narrowfilelog, self).__init__(opener, path)
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   252
        self._narrowmatch = narrowmatch
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   253
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   254
    def renamed(self, node):
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   255
        res = super(narrowfilelog, self).renamed(node)
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   256
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   257
        # Renames that come from outside the narrowspec are problematic
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   258
        # because we may lack the base text for the rename. This can result
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   259
        # in code attempting to walk the ancestry or compute a diff
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   260
        # encountering a missing revision. We address this by silently
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   261
        # removing rename metadata if the source file is outside the
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   262
        # narrow spec.
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   263
        #
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   264
        # A better solution would be to see if the base revision is available,
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   265
        # rather than assuming it isn't.
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   266
        #
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   267
        # An even better solution would be to teach all consumers of rename
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   268
        # metadata that the base revision may not be available.
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   269
        #
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   270
        # TODO consider better ways of doing this.
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   271
        if res and not self._narrowmatch(res[0]):
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   272
            return None
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   273
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   274
        return res
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   275
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   276
    def size(self, rev):
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   277
        # Because we have a custom renamed() that may lie, we need to call
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   278
        # the base renamed() to report accurate results.
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   279
        node = self.node(rev)
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   280
        if super(narrowfilelog, self).renamed(node):
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   281
            return len(self.read(node))
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   282
        else:
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   283
            return super(narrowfilelog, self).size(rev)
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   284
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   285
    def cmp(self, node, text):
46376
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   286
        # We don't call `super` because narrow parents can be buggy in case of a
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   287
        # ambiguous dirstate. Always take the slow path until there is a better
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   288
        # fix, see issue6150.
39781
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   289
46376
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   290
        # Censored files compare against the empty file.
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   291
        if self.iscensored(self.rev(node)):
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   292
            return text != b''
39781
3e801ffd7269 filelog: custom filelog to be used with narrow repos
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39310
diff changeset
   293
46376
b994db7c4d1e narrow: fix flaky behavior described in issue6150
Raphaël Gomès <rgomes@octobus.net>
parents: 45811
diff changeset
   294
        return self.read(node) != text