Kyle Lippincott <spectral@google.com> [Thu, 23 Aug 2018 13:33:19 -0700] rev 39313
log: respect graphshorten on terminal nodes (collapsing o-~ to just o~)
Internally we have a custom template that's inspired by ones that we have seen
in the community. Normally, this looks something like:
o 0834ec17 spectral tip
| crecord: support x to toggle single, X to toggle a range
o ee932990 spectral @
| filemerge: allow specifying $hgeditor as merge-tools.X.executable
@ 66f04611 matt_harbison
| cext: fix truncation warnings in revlog on Windows
o 42cc76d0 matt_harbison
| cext: fix revlog compiler error on Windows
~
o bd63ada7 stable boris
| phases: drop dead code in `newheads`
~
With graphshorten on, and the descriptions of the public nodes hidden, it looks
like this, note that the commits right before the ~ are still "full height":
o 0834ec17 spectral tip
| crecord: support x to toggle single, X to toggle a range
o ee932990 spectral @
| filemerge: allow specifying $hgeditor as merge-tools.X.executable
@ 66f04611 matt_harbison
o 42cc76d0 matt_harbison
|
~
o bd63ada7 stable boris
|
~
This patch makes them look like this, removing the | but keeping the ~:
o 0834ec17 spectral tip
| crecord: support x to toggle single, X to toggle a range
o ee932990 spectral @
| filemerge: allow specifying $hgeditor as merge-tools.X.executable
@ 66f04611 matt_harbison
o 42cc76d0 matt_harbison
~
o bd63ada7 stable boris
~
This originally removed the ~s entirely, but this was determined to be too much
information loss and potentially confusing. This would have looked like the
following (note that the last commit is on a different branch than all of the
ones above it, and they are *not* linearly related):
o 0834ec17 spectral tip
| crecord: support x to toggle single, X to toggle a range
o ee932990 spectral @
| filemerge: allow specifying $hgeditor as merge-tools.X.executable
@ 66f04611 matt_harbison
o 42cc76d0 matt_harbison
o bd63ada7 stable boris
Differential Revision: https://phab.mercurial-scm.org/D4363
Pulkit Goyal <pulkit@yandex-team.ru> [Sun, 26 Aug 2018 19:14:26 +0300] rev 39312
filemerge: fix the wrong placements of messages in prompt
Mistakenly, the local-changed-other-deleted-message was put in
other-change-local-deleted and vice versa. This followups on D4336.
Thanks to Yuya who spotted this.
Differential Revision: https://phab.mercurial-scm.org/D4375
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 25 Aug 2018 21:17:34 +0300] rev 39311
filemerge: print the filename in quotes in prompt
This is better as the filename is in quotes and user can understand better what
the filename is and what is important part in the prompt.
Differential Revision: https://phab.mercurial-scm.org/D4373
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 14 Aug 2018 17:00:32 +0000] rev 39310
filelog: remove proxies to revlog
These proxy attributes and methods were added to facilitate various
debug* and perf* commands. Now that cmdutil.openrevlog() returns
an actual revlog, we no longer need these on the filelog class.
There's probably a few other attributes that could be removed. But
this feels like a worthy start.
Differential Revision: https://phab.mercurial-scm.org/D4359
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 21 Aug 2018 00:01:54 +0000] rev 39309
debugcommands: introduce debugrevlogindex (BC)
`hg debugindex` was originally invented for displaying revlog index
data and is highly tailored towards that. e.g. it accepts a --format
option to display index data for a particular revlog version and
displays things like offset and length.
As we support non-revlog storage, it makes sense for `hg debugindex`
to display generic index data and for there to exist storage-specific
or storage-aware debug* commands for dumping non-generic index data.
This commit effectively renames `hg debugindex` to
`hg debugrevlogindex` and replaces `hg debugindex` with a version that
is storage agnostic.
Tests using --format have been updated to use `hg debugrevlogindex`.
Output is backwards compatible. The replacement command uses the
formatter, which means output can be templatized.
At some point, we may want to tweak output (e.g. to add the revision
size). But I don't feel like taking a bigger BC break at the moment.
The renamed command/function had to be moved because check-code
enforces alphabetical ordering of commands in this file.
Differential Revision: https://phab.mercurial-scm.org/D4358
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 20 Aug 2018 23:08:57 +0000] rev 39308
debugcommands: use openstorage() in debugdata (BC)
Nothing we're doing here requires a revlog. So use openstorage().
.. bc::
`hg debugdata` no longer accepts the path to a revlog file.
Differential Revision: https://phab.mercurial-scm.org/D4357
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 20 Aug 2018 23:06:47 +0000] rev 39307
tests: use inline Python for revlog test
`hg debugdata` will soon stop accepting the raw path to a revlog file.
Adjust a test accordingly.
The changed test is for a security bug. So this should be reviewed
with scrutiny.
Differential Revision: https://phab.mercurial-scm.org/D4356
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 20 Aug 2018 21:01:05 +0000] rev 39306
debugcommands: use openstorage() in debugindexdot
And add test coverage for changelog and manifests.
Differential Revision: https://phab.mercurial-scm.org/D4355
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 14 Aug 2018 16:28:21 +0000] rev 39305
cmdutil: return a revlog from openrevlog() and split function
The filelog class is a wrapper around a revlog instance. I have plans
to give manifests and the changelog a similar treatment.
When filelog was ported away from revlog and when I started writing
patches to do the same for manifests, I noticed that a lot of
debug* and perf* commands were relying on low-level revlog APIs
like start(), end(), deltaparent(), etc. For filelog, I added these
to the interface, even though I didn't want to because they don't
belong on a generic storage interface.
For manifest (and eventually changelog), the pain is too much to bear.
We need to cut the tight coupling.
These debug* and perf* commands use cmdutil.openrevlog() to obtain
a revlog instance.
This commit effectively renames openrevlog() to openstorage(), adds
an argument to ensure a revlog instance is returned, and introduces a
replacement openrevlog() that calls openstorage() such that a revlog
instance is returned.
By doing things this way, we allow the debug* and perf* commands to
still work on revlog-based repositories without having to expose
low-level revlog APIs in the storage interfaces.
The practical side-effect of this on the current code base is we return
a revlog instance instead of a filelog. The manifest and changelog are
not affected at this time.
Some of filelog's storage APIs are different from revlog. For example,
read() strips the optional header containing copy/rename metadata. This
may impact some perf* commands. But I don't think the impact is
worth worrying about.
Upcoming commits will port existing consumers to openstorage(), where
appropriate.
This commit does cause some test regressions when using the simple
store. These will be fixed as commands are ported to use storage APIs.
.. api:: cmdutil.openrevlog() now returns a revlog instance or aborts
Previously, it would return a storage object, which may not be a
revlog instance.
Use the new cmdutil.openstorage() API to return an object conforming
to the storage interface of the thing you are accessing if you don't
need a revlog instance.
Differential Revision: https://phab.mercurial-scm.org/D4354
Augie Fackler <augie@google.com> [Mon, 20 Aug 2018 13:29:48 -0400] rev 39304
merge: improve interactive one-changed one-deleted message (issue5550)
I like the wording from the bug, so I figured I'd package it up in a
change and see what people think.
Differential Revision: https://phab.mercurial-scm.org/D4336