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

Augie Fackler
merge with stable
Alex Gaynor
statprof: remove a line of deadcode

Differential Revision: https://phab.mercurial-scm.org/D1689
Yuya Nishihara
extdata: abort if external command exits with non-zero status (BC)

Per the last discussion, this is more reliable and consistent way than
suppressing an error. For grep, erroring out might be inconvenient, but
for curl, non-zero exit status should be detected. The latter wouldn't be
possible if non-zero status is ignored.

https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-October/105727.html
Anton Shestakov
hgweb: update graph function docstring
Anton Shestakov
hgweb: split graphdata() into jsdata() and nodes()

nodes keyword passed to the template can be any iterator, but jsdata needs to
be a list because it gets JSONified.
Phil Cohen
rebase: fix for hgsubversion

5c25fe7fb1e broke something in the hgsubversion test path, causing it raise an
abort (Abort: nothing to merge) during a perfectly good rebase. I tracked it
down to this change. It's probably not hgsubversion related.

I suspect that using the same `wctx` from before the initial update causes
problems with the wctx's cached manifest property. I noticed we also sometimes
stick random gunk on the wctx object in other places (like in `copies.py`) so
it's probably best to reset it for now.

The line I added before was actually useless since we don't pass wctx to the
initial `merge.update`, so it defaults to `repo[None]`. So I just removed it.

Differential Revision: https://phab.mercurial-scm.org/D1679
Anton Shestakov
hgweb: filter graphmod.colored() output before iterating over it

Consumers in this function use output of graphmod.colored(), but only want
items with type == CHANGESET, so let's filter it early.

This is primarily just a refactoring, but it also fixes a potential small bug
with `rows = len(tree)` (this variable is used for "Rows shown" line in
raw-graph) if there are items of other types.
Anton Shestakov
hgweb: calculate <canvas> width and height client-side

hgweb determines and passes to templates some variables related to graph
appearance, like bg_height, canvaswidth and canvasheight. bg_height was and
still is used for graph.scale() call in graph.tmpl, and the two latter
variables were used in <canvas> element as width and height properties, and
they were set before JS code got to run. Setting these properties server-side
doesn't make a lot of sense, because a graph that has been scaled should
calculate things like width and height on its own when being rendered.

Let's move (re)sizing <canvas> to JavaScript (to Graph.render function) and
stop parsing HTML with regular expressions just to know new width and height.
That extra loop that only counts cols is required because <canvas> can't
be resized after or in the process of rendering (or it gets cleared).
Incidentally, SVG doesn't have this problem and I'm hoping to switch graph to
using it in future.

There also was truecanvasheight, but according to hg grep --all it was never
used, see d490edc71146.
Anton Shestakov
hgweb: render next pages on /graph incrementally

Previously, when user scrolled down to see the next page on /graph, all hgweb
did was re-render everything that would be visible (by simply incrementing
revcount). It was not efficient at all, and this patch makes /graph page behave
similarly to the regular /log: every new page only consists of new changesets,
no duplication, and only jsdata is based on the full set of changesets required
to build accurate graph.

This is achieved by adding "?graphtop=<node>" to the next page URL template,
effectively remembering where the graph started, and using that value to create
the new `tree` that covers the whole visible graph. That variable is then used
to produce jsdata for redrawing graph client-side.

nextentry is used for the same purpose as on /log page (to format the next page
URL), but it's not a part of the graph.
Pulkit Goyal
py3: handle keyword arguments correctly in debugcommands.py

Differential Revision: https://phab.mercurial-scm.org/D1671
Pulkit Goyal
py3: handle keyword arguments correctly in bundlerepo.py

Differential Revision: https://phab.mercurial-scm.org/D1672
Pulkit Goyal
py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t

This makes the test pass on Python 3.

Differential Revision: https://phab.mercurial-scm.org/D1674
Matt Harbison
run-tests: stop automatically adding a (glob) for bundle backup lines

This is the first step to dropping the existing globs for '\' matches, now that
it is handled automatically.  Instead of just dropping it, this pattern is now
used to convert to '/' paths, to reduce the amount of manual cleanup required
when creating tests on Windows.
Pulkit Goyal
py3: handle keyword arguments correctly in hgext/record.py

Differential Revision: https://phab.mercurial-scm.org/D1673
Matt Harbison
lfs: use 'ui' provided to `upgrade` for output, instead of stealing srcrepo's

Also spotted by Yuya.
Pulkit Goyal
py3: introduce pycompat.ziplist as zip is a generator on Python 3

Similar to map, the return value of zip was also turned into a generator on
Python 3. We have multiple occurences in our codebase where we retrieve the
values of zip multiple times, so let's introduce pycompat.ziplist similar to
pycompat.maplist.

Differential Revision: https://phab.mercurial-scm.org/D1675
Paul Morelle
debuglocks: add tests (and fix typo in early return)
Matt Harbison
lfs: correct the directory list value returned by lfsvfs.walk()

Spotted by Yuya.
Matt Harbison
check-code: drop the rules for adding (glob) for Windows paths

I'll probably resurrect at least some of these as replacement patterns to switch
'\' to '/' when creating tests at some point.  But since this subset of globs
isn't needed anymore after dfae14354660, and the rules are blocking the glob
removal, just drop them for now.  It probably isn't worth turning them into
checks for unnecessary globs being present.
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches

# skip-blame because this was mechanically rewritten the following script.  I
ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
ones appear to be, and they run without addition failures on both Windows and
Linux.

  import argparse
  import os
  import re

  ap = argparse.ArgumentParser()
  ap.add_argument('path', nargs='+')
  opts = ap.parse_args()

  globre = re.compile(r'^(.*) \(glob\)(.*)$')

  for p in opts.path:
      tmp = p + '.tmp'
      with open(p, 'rb') as src, open(tmp, 'wb') as dst:
          for line in src:
              m = globre.match(line)
              if not m or '$LOCALIP' in line or '*' in line:
                  dst.write(line)
                  continue
              if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                  dst.write(line)
                  continue
              dst.write(m.group(1) + m.group(2) + '\n')
      os.unlink(p)
      os.rename(tmp, p)
Martin von Zweigbergk
memfilectx: make changectx argument mandatory in constructor (API)

committablefilectx has three subclasses: workingfilectx, memfilectx,
and overlayfilectx. committablefilectx takes an optional (change) ctx
instance to its constructor. If it's provided, it's set on the
instance as self._changectx. If not, that property is supposed to be
defined by the class. However, only workingfilectx does that. The
other two will have the property undefined if it's not passed in the
constructor. That seems bad to me. This patch makes the changectx
argument to the memfilectx constructor mandatory because that fixes
the failure I ran into. It seems like we should also fix the
overlayfilectx case.

Differential Revision: https://phab.mercurial-scm.org/D1658
Martin von Zweigbergk
debugbuilddag: create filectx instance in 'filectxfn' callback

Same motivation is previous patch.

Differential Revision: https://phab.mercurial-scm.org/D1670
Martin von Zweigbergk
synthrepo: create filectx instance in 'filectxfn' callback

I would like to pass the memctx to the memfilectx constructor, but
it's not available where we currently create the memfilectx. It is
available in the 'filectxfn' callback, so let's create the memfilectx
there instead. A later patch will start actually passing the memctx.

Differential Revision: https://phab.mercurial-scm.org/D1669
Paul Morelle
debuglocks: allow setting a lock
Pulkit Goyal
py3: handle keyword arguments correctly in hgext/record.py

Differential Revision: https://phab.mercurial-scm.org/D1673
Martin von Zweigbergk
memfilectx: make changectx argument mandatory in constructor (API)

committablefilectx has three subclasses: workingfilectx, memfilectx,
and overlayfilectx. committablefilectx takes an optional (change) ctx
instance to its constructor. If it's provided, it's set on the
instance as self._changectx. If not, that property is supposed to be
defined by the class. However, only workingfilectx does that. The
other two will have the property undefined if it's not passed in the
constructor. That seems bad to me. This patch makes the changectx
argument to the memfilectx constructor mandatory because that fixes
the failure I ran into. It seems like we should also fix the
overlayfilectx case.

Differential Revision: https://phab.mercurial-scm.org/D1658
Pulkit Goyal
py3: handle keyword arguments correctly in debugcommands.py

Differential Revision: https://phab.mercurial-scm.org/D1671
Pulkit Goyal
py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t

This makes the test pass on Python 3.

Differential Revision: https://phab.mercurial-scm.org/D1674
Paul Morelle
debuglocks: allow setting a lock
Pulkit Goyal
py3: handle keyword arguments correctly in bundlerepo.py

Differential Revision: https://phab.mercurial-scm.org/D1672
Pulkit Goyal
py3: introduce pycompat.ziplist as zip is a generator on Python 3

Similar to map, the return value of zip was also turned into a generator on
Python 3. We have multiple occurences in our codebase where we retrieve the
values of zip multiple times, so let's introduce pycompat.ziplist similar to
pycompat.maplist.

Differential Revision: https://phab.mercurial-scm.org/D1675
Martin von Zweigbergk
synthrepo: create filectx instance in 'filectxfn' callback

I would like to pass the memctx to the memfilectx constructor, but
it's not available where we currently create the memfilectx. It is
available in the 'filectxfn' callback, so let's create the memfilectx
there instead. A later patch will start actually passing the memctx.

Differential Revision: https://phab.mercurial-scm.org/D1669
Matt Harbison
lfs: use 'ui' provided to `upgrade` for output, instead of stealing srcrepo's

Also spotted by Yuya.
Matt Harbison
lfs: correct the directory list value returned by lfsvfs.walk()

Spotted by Yuya.
Martin von Zweigbergk
debugbuilddag: create filectx instance in 'filectxfn' callback

Same motivation is previous patch.

Differential Revision: https://phab.mercurial-scm.org/D1670
Paul Morelle
debuglocks: add tests (and fix typo in early return)
Boris Feld
histedit: preserve active branch while histediting

The branch information was properly preserved in the changeset, but the
"active" branch of the working copy could be lost (the branch of the base
being used).

Histedit used to behave properly in this regard but the case was not tested
and regressed 4 years ago in ab2362e1672e.
Matt Harbison
check-code: drop the rules for adding (glob) for Windows paths

I'll probably resurrect at least some of these as replacement patterns to switch
'\' to '/' when creating tests at some point.  But since this subset of globs
isn't needed anymore after dfae14354660, and the rules are blocking the glob
removal, just drop them for now.  It probably isn't worth turning them into
checks for unnecessary globs being present.
Matt Harbison
run-tests: stop automatically adding a (glob) for bundle backup lines

This is the first step to dropping the existing globs for '\' matches, now that
it is handled automatically.  Instead of just dropping it, this pattern is now
used to convert to '/' paths, to reduce the amount of manual cleanup required
when creating tests on Windows.
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches

# skip-blame because this was mechanically rewritten the following script.  I
ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
ones appear to be, and they run without addition failures on both Windows and
Linux.

  import argparse
  import os
  import re

  ap = argparse.ArgumentParser()
  ap.add_argument('path', nargs='+')
  opts = ap.parse_args()

  globre = re.compile(r'^(.*) \(glob\)(.*)$')

  for p in opts.path:
      tmp = p + '.tmp'
      with open(p, 'rb') as src, open(tmp, 'wb') as dst:
          for line in src:
              m = globre.match(line)
              if not m or '$LOCALIP' in line or '*' in line:
                  dst.write(line)
                  continue
              if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                  dst.write(line)
                  continue
              dst.write(m.group(1) + m.group(2) + '\n')
      os.unlink(p)
      os.rename(tmp, p)