annotate tests/fakemergerecord.py @ 40390:7e3b6c4f01a2

localrepo: support marking repos as having shallow file storage Various operations against repositories need to know if repository storage is full or partial. For example, a checkout (including possibly a widening of a sparse checkout), needs to know if it can assume all file revisions are available or whether to look for missing revisions first. This commit lays the plumbing for doing that. We define a repo creation option that indicates that shallow file storage is desired. The SQLite store uses this creation option to add an extra repo requirement indicating file storage is shallow. A new repository feature has been added to indicate that file storage is shallow. The SQLite store adds this feature when the shallow file store requirement is present. Code can now look at repo.features to determine if repo file storage may be shallow and take additional actions if so. While we're here, we also teach the SQLite store to handle the narrow repo requirement, which gets added when making narrow clones. Differential Revision: https://phab.mercurial-scm.org/D5166
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 19 Oct 2018 14:59:03 +0200
parents 4dc6f0905722
children 2372284d9457
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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 (
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
8 merge,
32376
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29766
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 = {}
32376
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29766
diff changeset
13 command = registrar.command(cmdtable)
27027
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
14
36211
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32376
diff changeset
15 @command(b'fakemergerecord',
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32376
diff changeset
16 [(b'X', b'mandatory', None, b'add a fake mandatory record'),
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32376
diff changeset
17 (b'x', b'advisory', None, b'add a fake advisory record')], '')
27027
a01ecbcfaf84 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
18 def fakemergerecord(ui, repo, *pats, **opts):
29766
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
19 with repo.wlock():
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
20 ms = merge.mergestate.read(repo)
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
21 records = ms._makerecords()
36510
4dc6f0905722 py3: backout changeset 56635c506608 which wrongly added couple of b''
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36222
diff changeset
22 if opts.get('mandatory'):
36211
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32376
diff changeset
23 records.append((b'X', b'mandatory record'))
36510
4dc6f0905722 py3: backout changeset 56635c506608 which wrongly added couple of b''
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36222
diff changeset
24 if opts.get('advisory'):
36211
8173eeb69fb3 tests: port fakemergerecord to python3
Augie Fackler <augie@google.com>
parents: 32376
diff changeset
25 records.append((b'x', b'advisory record'))
29766
b303b3817d0e fakemergerecord: take wlock to write the merge state
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 27027
diff changeset
26 ms._writerecords(records)