annotate contrib/dumprevlog @ 39318:c03c5f528e9b

perf: use storage API for resolving manifest node lookup() isn't part of the storage API. And this code shouldn't be accessing manifestlog._revlog directly for the modern code base. So let's port it to the modern API. Note that the previous code was busted for cases where we needed to call lookup() because lookup() isn't exposed by manifestrevlog any more. This change is strictly BC breaking because we no longer support resolving partial nodes. But it is a perf* command and I don't think we should flag the change as such. Differential Revision: https://phab.mercurial-scm.org/D4390
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 15 Aug 2018 19:45:39 +0000
parents a8a902d7176e
children a063b84ce064
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6433
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
1 #!/usr/bin/env python
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
2 # Dump revlogs as raw data stream
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
3 # $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
4
29166
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
5 from __future__ import absolute_import, print_function
29165
a212ca70205c py3: make contrib/dumprevlog use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 14233
diff changeset
6
6433
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
7 import sys
29165
a212ca70205c py3: make contrib/dumprevlog use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 14233
diff changeset
8 from mercurial import (
a212ca70205c py3: make contrib/dumprevlog use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 14233
diff changeset
9 node,
a212ca70205c py3: make contrib/dumprevlog use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 14233
diff changeset
10 revlog,
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 35964
diff changeset
11 )
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 35964
diff changeset
12 from mercurial.utils import (
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 35964
diff changeset
13 procutil,
29165
a212ca70205c py3: make contrib/dumprevlog use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 14233
diff changeset
14 )
6466
9c426da6b03b contrib: fix binary file issues with dumprevlog on Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 6433
diff changeset
15
9c426da6b03b contrib: fix binary file issues with dumprevlog on Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 6433
diff changeset
16 for fp in (sys.stdin, sys.stdout, sys.stderr):
37120
a8a902d7176e procutil: bulk-replace function calls to point to new module
Yuya Nishihara <yuya@tcha.org>
parents: 35964
diff changeset
17 procutil.setbinary(fp)
6433
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
18
35964
a915465a731e dumprevlog: handle being passed a mode parameter
Boris Feld <boris.feld@octobus.net>
parents: 29166
diff changeset
19 def binopen(path, mode='rb'):
a915465a731e dumprevlog: handle being passed a mode parameter
Boris Feld <boris.feld@octobus.net>
parents: 29166
diff changeset
20 if 'b' not in mode:
a915465a731e dumprevlog: handle being passed a mode parameter
Boris Feld <boris.feld@octobus.net>
parents: 29166
diff changeset
21 mode = mode + 'b'
a915465a731e dumprevlog: handle being passed a mode parameter
Boris Feld <boris.feld@octobus.net>
parents: 29166
diff changeset
22 return open(path, mode)
a915465a731e dumprevlog: handle being passed a mode parameter
Boris Feld <boris.feld@octobus.net>
parents: 29166
diff changeset
23
6433
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
24 for f in sys.argv[1:]:
6466
9c426da6b03b contrib: fix binary file issues with dumprevlog on Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 6433
diff changeset
25 r = revlog.revlog(binopen, f)
29166
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
26 print("file:", f)
6750
fb42030d79d6 add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents: 6466
diff changeset
27 for i in r:
6433
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
28 n = r.node(i)
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
29 p = r.parents(n)
ec5d77eb3431 add simple dump and undump scripts to contrib/
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
30 d = r.revision(n)
29166
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
31 print("node:", node.hex(n))
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
32 print("linkrev:", r.linkrev(i))
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
33 print("parents:", node.hex(p[0]), node.hex(p[1]))
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
34 print("length:", len(d))
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
35 print("-start-")
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
36 print(d)
6359b80f15fb py3: make contrib/dumprevlog use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29165
diff changeset
37 print("-end-")