Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View

Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

Boris Feld
revlog: reintroduce `revlog.descendant` as deprecated

Reintroduce `revlog.descendant` to help extensions authors update their
extensions in order to use the new API.
Boris Feld
context: reintroduce `ctx.descendant` as deprecated

Reintroduce `ctx.descendant` to help extensions authors update their
extensions in order to use the new API.
Boris Feld
revset-benchmark: use a generic revset to test `heads(commonancestors())`

This allow to benchmark revset performance in other repositories than just
the mercurial one.
Boris Feld
revset: add larger test for heads(ancestors(…))

It is important to not regress on this benchmark so we move it into the "base"
file. And we add another benchmark with more than two revisions.
Yuya Nishihara
obsolete: explode if metadata contains invalid UTF-8 sequence (API)

The current metadata API can be a source of bugs since it forces callers to
process encoding conversion by themselves. So let's make it reject bad data
as a last ditch. I assume there's no metadata field which is supposed to store
arbitrary BLOB like transplant_source.
Yuya Nishihara
obsolete: clarify users in markerusers() never contain None
Yuya Nishihara
hghave: require clang-format >= 6 due to output change
Yuya Nishihara
py3: use bytes() to byte-stringify Abort message in handleremotechangegroup()
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t

# skip-blame just some b''
Yuya Nishihara
py3: don't str() to byte-stringify object in test-bundle2-remote-changegroup.t
Yuya Nishihara
obsolete: store user name and note in UTF-8 (issue5754) (BC)

Before, user names were stored in local encoding and transferred across
repositories, which made it impossible to restore non-ASCII user names on
different platforms. This patch fixes new markers to be encoded in UTF-8
and decoded back to local encoding when displaying. Existing markers are
unfixable so they may result in mojibake.

I don't like the API that requires metadata dict to be UTF-8 encoded, which
is a source of bugs, but there's no abstraction layer to process the encoding
thingy efficiently. So we apply the same rule as extras dict to obsstore
Yuya Nishihara
revset: special case commonancestors(none()) to be empty set

This matches the behavior of ancestor(none()).

From an implementation perspective, ancestor() and commonancestors() are
intersection, and ancestors() is union, so it would make some sense that
commonancestors(none()) returned all revisions. However, ancestor(none())
isn't implemented as such, which breaks ancestor(x) == max(commonancestors(x)).

From a user perspective, ancestors of nothing is nothing whichever type
of operation the ancestor predicate does.
Yuya Nishihara
revset: clarify heads() order doesn't matter while computing common ancestors

Follows up 5460926352ee and 52f19a840543.
Yuya Nishihara
cext: reformat with clang-format 6.0

It appears some changes in clang-format affect our code. I didn't dig into
that deeper since the new output looks better.
Yuya Nishihara
py3: open file in binary mode in test-bundle2-remote-changegroup.t
Boris Feld
store: assert the fncache have been loaded if dirty

This should catch fncache corruption as the one that existed in
Boris Feld
perf: add a 'perf.all-timing' option to display more than best time

Minimal time is a useful information, but it is useful to have a wider view on
the performance picture.
Boris Feld
statprof: small if cleanup

Explicitly testing for None to avoid comparison bugs.
Boris Feld
perf: document the perfmanifest command
Boris Feld
perffncachewrite: load fncache after lock is acquired

Without this patch, running perffncachewrite on a repository destroy its

Lock Acquisition drops various caches, including the fncache one. Then writing
of an non-loaded fncache result into an empty one.
Yuya Nishihara
fileset: remove subset and unused filtering functions from matchctx
Yuya Nishihara
fileset: remove fullmatchctx class

It's exactly the same as matchctx.
Yuya Nishihara
fileset: parse argument of size() by predicate function

This change is necessary to pass in a size expression to predicatematcher.
See the next patch.
Yuya Nishihara
fileset: add helpers to make predicatematcher and nevermatcher

These functions will be used to compose a tree of matchers from a fileset
Yuya Nishihara
highlight: use matcher API to test if file should be pygmentized

Prepares for the upcoming API change. We'll no longer have to call the
fileset function directly since the cost of the matcher-based fileset will
become O(number of tests) from O(number of files in subset).
Yuya Nishihara
fileset: remove callexisting flag and mctx.existing() (API)

They are no longer needed since any files are included as long as they are
passed in to the matcher.
Yuya Nishihara
fileset: rewrite andset() to not use mctx.narrow()

New code is less efficient than the original, but it helps porting andset()
to matcher composition. This will be cleaned up later.

This effectively disables the fullmatchctx magic since mctx will never be
demoted to the matchctx. The fullmatchctx class will be removed later.
Yuya Nishihara
fileset: rewrite predicates to return matcher not closed to subset (API) (BC)

This makes fileset expression open to any input, so that we can just say
"hg status 'set: not binary()'" to select text files including unknowns.

With this and removal of subset computation, 'set:**' becomes as fast as
'glob:**'. Further optimization will probably be possible by narrowing the
file tree to compute status for example.

This also fixes 'subrepo()' to not ignore the current mctx.subset.

.. bc::

  The fileset expression may include untracked files by default. Use
  ``tracked()`` to explicitly filter out files not existing at the context
Yuya Nishihara
fileset: add "tracked()" to explicitly select files in the revision

I'm going to rewrite filesets to be match predicates, which means basic
patterns such as '*' will no longer be "closed" to the subset constructed
from the ctx.

Good thing is that 'hg status "set:not binary()"' can include unknown files
out of the box, and fileset computation will likely to be faster as we won't
have to walk dirstate twice, for example. Bad thing is that we can't select
files at a certain revision by 'set:revs(REV, **)' since '**' is "open" to
any paths. So, this patch introduces "tracked()" as a replacement for the '**'
in the example above.
Yuya Nishihara
phases: micro-optimize newheads() to not create context objects
Yuya Nishihara
phases: remove excessive optimization from newheads() (issue5939)

This function is intended to compute 'heads(::heads - roots::)', but it
failed because 'heads + parents(roots)' missed sibling branches of the roots.
That's why the public heads slipped down from D to B in the example added by
2a227782e754 "tests: add test demonstrating phase loss when cloning":

  > E    draft
  > |\Z  draft
  > | Y  draft
  > D |  public
  > | X  draft
  > C/  public
  > B    public
  > A    public
  where heads = {E, Z},
        roots = {X}
Sushil khanchi
rebase: remove unused variable "release" and an extra blank line

Differential Revision: https://phab.mercurial-scm.org/D3947
Sushil khanchi
rebase: remove unnecessary confirm block

Removed unnecessary 'if confirm:' block as that thing is now
handled at 'finally'.

Differential Revision: https://phab.mercurial-scm.org/D3945
Sushil khanchi
rebase: in --confirm option just abort if hit a conflict

Before this patch, it was prompting the user in both cases 1) when
there is no conflict 2) when there is at least one conflict. But
for simplicity we can just abort if we hit a conflict and no need to
prompt in that case.

Differential Revision: https://phab.mercurial-scm.org/D3944
Joerg Sonnenberger
pullbundle: fix handling of gzip bundlespecs

Differential Revision: https://phab.mercurial-scm.org/D3933
Gregory Szorc
scmutil: rewrite docstring for filecache

The old docstring was incorrect in that it said that subsequent
calls perform a stat() and refresh the object if things change.
This is not how things work: __get__ populates obj.__dict__[self.sname]
with the result of the decorated function and returns this value
without validation on subsequent calls, if available.

The correct usage of this type is kinda wonky. It would probably
benefit from a refactor. But I don't have time to do that right
now. But we can change the docstring so others aren't entrapped by
its lies (like I was when using repofilecache in a Mozilla extension).

Differential Revision: https://phab.mercurial-scm.org/D3943
Gregory Szorc
tests: add test demonstrating phase loss when cloning (issue5939)

The added tests demonstrate that phases exchange when using the
listkeys based phases exchange fails to preserve public phase in
a certain scenario when a merge is a phase root. Both non-bundle2
and bundle2 prior to the binary phase data part are buggy.

Differential Revision: https://phab.mercurial-scm.org/D3932
Martin von Zweigbergk
context: rename descendant() to isancestorof()

This makes the direction much clearer, IMO.

Differential Revision: https://phab.mercurial-scm.org/D3936
Martin von Zweigbergk
rebase: reduce scope of a variable

Differential Revision: https://phab.mercurial-scm.org/D3940
Sushil khanchi
rebase: make sure we don't loose the return code in --confirm option

return _dorebase() to make sure it returns 'return code'.

Differential Revision: https://phab.mercurial-scm.org/D3938