annotate tests/fakemergerecord.py @ 40009:842ffcf1d42f

storageutil: extract most of emitrevisions() to standalone function As part of implementing a storage backend, I found myself copying most of revlog.emitrevisions(). This code is highly nuanced and it bothered me greatly to be copying such low-level code. This commit extracts the bulk of revlog.emitrevisions() into a new standalone function. In order to make the function generally usable, all "self" function calls that aren't exposed on the ifilestorage interface are passed in via callable arguments. No meaningful behavior should have changed as part of the port. Upcoming commits will tweak behavior to make the code more generically usable. Differential Revision: https://phab.mercurial-scm.org/D4803
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 28 Sep 2018 16:16:22 -0700
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)