Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 Jan 2019 13:11:49 -0800] rev 41193
dispatch: add newline after ui.log "ui blocked ms" message
Differential Revision: https://phab.mercurial-scm.org/D5573
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 Jan 2019 14:07:35 -0800] rev 41192
remotefilelog: fix {file_copies} template keyword
remotefilelog overrides templatekw.getrenamedfn(). I changed the
return type of that function in
ec37df9042f9 (templatekw: make
getrenamed() return only filename, not nodeid, 2018-03-26). So we need
to change remotefilelog too. The function is used by the {file_copies}
template keyword and by `hg log --copies`.
Differential Revision: https://phab.mercurial-scm.org/D5576
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 Jan 2019 16:44:39 -0800] rev 41191
tests: demonstrate broken {file_copies} template with remotefilelog
Differential Revision: https://phab.mercurial-scm.org/D5575
Boris Feld <boris.feld@octobus.net> [Thu, 03 Jan 2019 22:13:28 +0100] rev 41190
contrib: update window title when possible in perf-revlog-write-plot.py
This is useful when comparing multiple graphs.
Kyle Lippincott <spectral@google.com> [Fri, 11 Jan 2019 12:40:16 -0800] rev 41189
histedit: add newline after ui.log "# acttions to histedit" message
Differential Revision: https://phab.mercurial-scm.org/D5572
Georges Racinet <georges.racinet@octobus.net> [Fri, 30 Nov 2018 20:05:34 +0100] rev 41188
rust-cpython: bindings for MissingAncestors
The exposition is rather straightforward, except for the
remove_ancestors_from() method, which forces us to an inefficient
conversion between Python sets and Rust HashSets.
Two alternatives are proposed in comments:
- changing the inner API to "emit" the revision numbers to discard
this would be a substantial change, and it would be better only in the
cases where there are more to retain than to discard
- mutating the Python set directly: this would force us to define an abstract
`RevisionSet` trait, and implement it both for plain `HashSet` and for
a struct enclosing a Python set with the GIL marker `Python<'p>`, also a non
trivial effort.
The main (and seemingly only) caller of this method being
`mercurial.setdiscovery`, which is currently undergoing serious refactoring,
it's not clear whether these improvements would be worth the effort right now,
so we're leaving it as-is.
Also, in `get_bases()` (will also be used by `setdiscovery`), we'd prefer
to build a Python set directly, but we resort to returning a tuple, waiting
to hear back from our PR onto rust-cpython about that
Differential Revision: https://phab.mercurial-scm.org/D5550
Georges Racinet <georges.racinet@octobus.net> [Wed, 09 Jan 2019 17:31:36 +0100] rev 41187
rust-cpython: generalised conversion function
Because `hg::ancestors::MissingAncestors` has methods taking
some `HashSet<Revision>` besides `impl IntoIterator<Item = Revision>`
as parameters we'll need the more generic `rev_pyiter_collect()` function
to also build these
Differential Revision: https://phab.mercurial-scm.org/D5549
Georges Racinet <georges.racinet@octobus.net> [Tue, 08 Jan 2019 14:00:33 +0100] rev 41186
rust-cpython: style consistency leftovers
In particular, during review of `LazyAncestors` bindings,
most `match` statements for error conversion
have been replaced by higher level methods of `Result` and most
personal insecurity comments have been removed.
This makes it more systematic.
Differential Revision: https://phab.mercurial-scm.org/D5548
Georges Racinet <georges.racinet@octobus.net> [Tue, 08 Jan 2019 13:54:01 +0100] rev 41185
rust-cpython: consistency in use of hg-core constructs
While not everybody likes the `CoreLazy` and `CoreIterator`
aliases, it's better not to mix them with direct references.
Note: it's quite possible in the future that these would stop
being exposed at the top of the `hg` crate
Differential Revision: https://phab.mercurial-scm.org/D5547
Georges Racinet <georges.racinet@octobus.net> [Sat, 22 Dec 2018 11:38:03 +0100] rev 41184
rust-cpython: rustdoc improvements
By default, `cargo doc` builds the documentation for public
constructs only, so we make public those that can. Since `cindex`
is not safe, we keep it private.
Unfortunately, the macro syntax of rust-cpython doesn't allow us
to document the classes directly, so we resort to do that at
the module level.
Differential Revision: https://phab.mercurial-scm.org/D5546
Augie Fackler <augie@google.com> [Thu, 10 Jan 2019 10:23:22 -0500] rev 41183
fuzz: stop building Python in the Makefile
$OUT/sanpy is now built by the build.sh in oss-fuzz, which simplifies
the setup here considerably.
Differential Revision: https://phab.mercurial-scm.org/D5553
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 10 Jan 2019 23:20:46 +0530] rev 41182
py3: add a test to whitelist caught by buildbot
Differential Revision: https://phab.mercurial-scm.org/D5555
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Jan 2019 16:36:55 -0800] rev 41181
tests: de-flake test-narrow-share.t by making dirstate predictable
test-narrow-share.t was sometimes (~0.5% on my machine) failing like this:
@@ -61,7 +61,7 @@
A d3/g
$ hg -R main debugdirstate --no-dates
n 644 2 set d1/f
- n 644 2 unset d3/f
+ n 644 2 set d3/f
a 0 -1 unset d3/g
n 644 2 set d5/f
n 644 2 set d7/f
The timestamp for d3/f would get set if it was determined at some
point that it was clean. That check is usually done when the user runs
`hg st`. We don't do that before the failure in the test case, but it
happens at the end of the `hg clone` call. So if the file system's
time happens to roll over after the clone's working copy has been
written, but before its (final) dirstate has been written, we can end
up with a set timestamp there.
This patch makes it consistent by sleeping for 2 seconds so the
timestamp gets reliably set.
Differential Revision: https://phab.mercurial-scm.org/D5568
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Jan 2019 16:02:05 -0500] rev 41180
convert: don't drop commits that are empty in the source when using --filemap
I ran into this when using `hg lfconvert --to-normal` (which uses the filemap
class internally), and saw that commits with nothing but a branch change were
dropped. We could put in an option that only lfconvert uses internally. But
silently dropping anything other than a commit where all changes were excluded
seems unintended. For example, there's a message in mercurial_sink.putcommit()
if it drops an empty commit. (And the reason that isn't kicking in here is
because lfconvert isn't passing --filemap, so the self.filemapmode conditional
there is always False.)
The naive change of `return not files` broke test-convert-filemap.t, so this is
a little more elaborate than needed for converting from largefiles.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Jan 2019 14:33:06 -0500] rev 41179
convert: add missing numcommits() override to hg sources
Otherwise, the progressbar in converter.walktree() gets None as its total during
the initial scan. (Though that seems harmless, and there are other foreign vcs
sources without this.)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Jan 2019 14:32:36 -0800] rev 41178
testrunner: make `-j100 --runs-per-test=100 test-foo.t` use 100 jobs
It would use only 1 job since
1039404c5e1d (run-tests: print number of
tests and parallel process count, 2018-10-13), but I'm pretty sure
that was unintentional.
Differential Revision: https://phab.mercurial-scm.org/D5557
Martin von Zweigbergk <martinvonz@google.com> [Sun, 06 Jan 2019 23:37:13 -0800] rev 41177
narrow: use merge.ACTION_GET instead of duplicating 'g' constant
As suggested by Yuya.
Differential Revision: https://phab.mercurial-scm.org/D5512
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 Jan 2019 00:37:46 -0800] rev 41176
narrow: drop explicit dirstate write
The dirstate is written when the wlock is released, so we don't need
to write it explicitly in updateworkingcopy(). I don't know why I put
it there in the first place (tests pass without it even in the commit
that introduced it).
Differential Revision: https://phab.mercurial-scm.org/D5515
Augie Fackler <augie@google.com> [Wed, 09 Jan 2019 18:00:20 -0500] rev 41175
histedit: fix --continue and --abort when curses is enabled
I overlooked this when I did the initial import.
Differential Revision: https://phab.mercurial-scm.org/D5540
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Jan 2019 21:57:21 +0900] rev 41174
graft: abort if --date/user specified with --currentdate/currentuser (BC)
They are conflicting options. Let's explicitly ban such combination.
Note that this means you need "--no-currentdate --date" to override
--currentdate specified in aliases/defaults.
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Jan 2019 21:32:37 +0900] rev 41173
amend: turn currentdate into tri-state bool so config option can be negated
Otherwise, rewrite.update-timestap couldn't be overridden by --no-currentdate.
FWIW, which do we like? --no-currentdate vs --no-current-date. If the latter
is preferred, maybe we can add "graft --current-date" and deprecate
"--currentdate".
Boris Feld <boris.feld@octobus.net> [Fri, 04 Jan 2019 17:54:18 +0100] rev 41172
discovery: improve partial discovery documentation
The older documentation could be improved.
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:59:38 +0100] rev 41171
discovery: add a simple `addinfo` method
The method can directly process a sample result. This makes the main code
simpler to follow.
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:48:00 +0100] rev 41170
discovery: move missing tracking inside the partialdiscovery object
This is the final set that we need to track to have a fully up to date
information within the object.