Mercurial > hg
annotate contrib/tcsh_completion @ 32292:0ad0d26ff703
changelog: load pending file directly
When changelogs are written, a copy of the index (or inline revlog)
may be written to an 00changelog.i.a file to facilitate hooks and
other processes having access to the pending data before it is
finalized.
The way it works today, the localrepo class loads the changelog
like normal. Then, if it detects a pending transaction, it asks
the changelog class to load a pending changelog. The changelog
class looks for a 00changelog.i.a file. If it exists, it is
loaded and internal data structures on the new revlog class are
copied to the original instance.
The existing mechanism is inefficient because it loads 2 revlog
files. The index, node map, and chunk cache for 00changelog.i
are thrown away and replaced by those for 00changelog.i.a.
The existing mechanism is also brittle because it is a layering
violation to access the data structures being accessed. For example,
the code copies the "chunk cache" because for inline revlogs
this cache contains the raw revision chunks and allows the original
changelog/revlog instance to access revision data for these pending
revisions. This whole behavior of course relies on the revlog
constructor reading the entirety of an inline revlog into memory
and caching it. That's why it is brittle. (I discovered all this
as part of modifying behavior of the chunk cache.)
This patch streamlines the loading of a pending 00changelog.i.a
revlog by doing it directly in the changelog constructor if told
to do so. When this code path is active, we no longer load the
00changelog.i file at all.
The only negative outcome I see from this change is if loading
00changelog.i was somehow facilitating a role. But I can't imagine
what that would be because we throw away its data (the index data
structures are replaced and inline revision data is replaced via
the chunk cache) and since 00changelog.i.a is a copy of
00changelog.i, file content should be identical, so there should
be no meaninful file integrity checking at play. I think this was
all just sub-optimal code.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 13 May 2017 16:26:43 -0700 |
parents | 2616325766e3 |
children |
rev | line source |
---|---|
1156 | 1 # |
2 # tcsh completion for Mercurial | |
3 # | |
4 # This file has been auto-generated by tcsh_completion_build.sh for | |
13515
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
5 # Mercurial Distributed SCM (version 1.7.5+157-8a220ae0b2ba) |
1156 | 6 # |
7 # Copyright (C) 2005 TK Soh. | |
8 # | |
9 # This is free software; you can redistribute it and/or modify it under | |
10 # the terms of the GNU General Public License as published by the Free | |
11 # Software Foundation; either version 2 of the License, or (at your | |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1264
diff
changeset
|
12 # option) any later version. |
1156 | 13 # |
14 | |
15 complete hg \ | |
16 'n/--cwd/d/' 'n/-R/d/' 'n/--repository/d/' \ | |
1158
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
17 'C/-/( -R --repository \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
18 --cwd \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
19 -y --noninteractive \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
20 -q --quiet \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
21 -v --verbose \ |
7766
2b2548342265
Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents:
1308
diff
changeset
|
22 --config \ |
1158
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
23 --debug \ |
1264
be4a14bfaa9c
Generated new tcsh_completion with tcsh_completion_build.sh
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1158
diff
changeset
|
24 --debugger \ |
7766
2b2548342265
Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents:
1308
diff
changeset
|
25 --encoding \ |
2b2548342265
Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents:
1308
diff
changeset
|
26 --encodingmode \ |
1158
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
27 --traceback \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
28 --time \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
29 --profile \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
30 --version \ |
4650ec7ef690
Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents:
1156
diff
changeset
|
31 -h --help)/' \ |
7766
2b2548342265
Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents:
1308
diff
changeset
|
32 'p/1/(add addremove annotate blame archive \ |
13515
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
33 backout bisect bookmarks branch branches \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
34 bundle cat clone commit ci \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
35 copy cp debugancestor debugbuilddag debugcheckstate \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
36 debugcommands debugcomplete debugdag debugdata debugdate \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
37 debugfsinfo debugignore debugindex debugindexdot debuginstall \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
38 debugpushkey debugrebuildstate debugrename debugrevspec debugsetparents \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
39 debugstate debugsub debugwalk diff export \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
40 forget grep heads help identify \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
41 id import patch incoming in \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
42 init locate log history manifest \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
43 merge outgoing out parents paths \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
44 pull push recover remove rm \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
45 rename move mv resolve revert \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
46 rollback root serve showconfig debugconfig \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
47 status st summary sum tag \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
48 tags tip unbundle update up \ |
2616325766e3
contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents:
11445
diff
changeset
|
49 checkout co verify version)/' |
1156 | 50 |