tests/fakemergerecord.py
author Simon Sapin <simon.sapin@octobus.net>
Fri, 15 Oct 2021 16:12:00 +0200
changeset 48250 1730b2fceaa1
parent 44856 b7808443ed6a
child 48875 6000f5b25c9b
permissions -rw-r--r--
dirstate-v2: adds a flag to mark a file as modified Right now, a files with a file system state that requires a lookup (same size, different mtime) will requires a lookup. If the result of that lookup is a modified files, it will remains ambiguous, requiring a lookup on the next status run too. To fix this, we introduce a dedicated flag in the new format. Such flag will allow to record such file as "known modified" avoiding an extra lookup later. As None of the associate code currently exist in the status code, we do the minimal implementation: if we read a dirstate entry with this flag set, we make it as "ambiguous" so that the next status code has to look it up. The same as it would have to without this flag existing anyway. Differential Revision: https://phab.mercurial-scm.org/D11681
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27027
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     1
# Extension to write out fake unsupported records into the merge state
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     2
#
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     3
#
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     4
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     5
from __future__ import absolute_import
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     6
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
     7
from mercurial import (
44856
b7808443ed6a mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
     8
    mergestate as mergestatemod,
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29754
diff changeset
     9
    registrar,
27027
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
    10
)
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
    11
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
    12
cmdtable = {}
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29754
diff changeset
    13
command = registrar.command(cmdtable)
27027
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
    14
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    15
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    16
@command(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    17
    b'fakemergerecord',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    18
    [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    19
        (b'X', b'mandatory', None, b'add a fake mandatory record'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    20
        (b'x', b'advisory', None, b'add a fake advisory record'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    21
    ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    22
    '',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36480
diff changeset
    23
)
27027
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
    24
def fakemergerecord(ui, repo, *pats, **opts):
29754
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
    25
    with repo.wlock():
44856
b7808443ed6a mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    26
        ms = mergestatemod.mergestate.read(repo)
29754
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
    27
        records = ms._makerecords()
36480
4dc6f0905722 py3: backout changeset 56635c506608 which wrongly added couple of b''
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36184
diff changeset
    28
        if opts.get('mandatory'):
36173
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32337
diff changeset
    29
            records.append((b'X', b'mandatory record'))
36480
4dc6f0905722 py3: backout changeset 56635c506608 which wrongly added couple of b''
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36184
diff changeset
    30
        if opts.get('advisory'):
36173
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32337
diff changeset
    31
            records.append((b'x', b'advisory record'))
29754
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
    32
        ms._writerecords(records)