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

Console View

Legend:   Passed Failed Failed Again Running Exception Offline No data

a2dcf460e141...
Gregory Szorc
run-tests: don't error when glob matched line ends with backslash

As part of writing another test, I triggered an array index error in
glob match processing code by having a (glob) line end in a single
backslash (which is the escape character).

Adding a simple bounds check prevents the error in run-tests.py.
f5416657e661...
Durham Goode
histedit: change state format to allow non-hash lines

The existing state serialization format assumed the rule line consisted of an
action and a hash. In our external extension that adds 'exec' this is not the
case (there is no hash, just the shell command). So let's change the format to
be more generic with just an action and a remainder, and the various commands
can handle it as they wish.

Flagged for stable since we want to get this format tweak in before the new
format goes live in the release.
32d0d2f38910...
Matt Mackall
tests: fix portability issue with test-merge-tools

Not sure how this ever worked.
d05ede9d3ecc...
Matt Harbison
test-rename-merge2: fix test failure on Windows

Windows and OpenVMS use double quote for shell quoting, posix uses
single quote. Since the other test lines added in 5668202cfaaf don't
include the quotes, this was presumably an oversight.
  • hgsubversion: tested against default failed -  stdio
fff8b779e63a...
Matt Harbison
test-add.t: fix output difference between Windows and OS X (issue4603)
  • hgsubversion: tested against default failed -  stdio
61aea11fb83d...
Yuya Nishihara
tags: do not abort if failed to write lock file to save cache

LockHeld wasn't enough to suppress error during acquiring lock. If .hg directory
is read-only, LockUnavailable will be raised.

  $ chmod ugo-w .hg
  $ hg identify
  abort: could not lock working directory of ...: Permission denied
  • hgsubversion: tested against default failed -  stdio
82fe57213029...
Matt Mackall
Added signature for changeset e89f909edffa
2fe9fd88db0b...
Matt Mackall
Added tag 3.4-rc for changeset e89f909edffa
e89f909edffa...
Matt Mackall
merge default into stable for 3.4 freeze
2ee10789d66b...
Matt Mackall
tests: fix up whitespace complaint
f379428a0754...
Matt Mackall
tests: fix test-tags on vfat

The unix conditional section wasn't cleaning up sufficiently.
cde547252f2e...
Matt Mackall
tests: ignore sha512 flag in bundle2 for py2.4
d99d7e3f5cda...
Pierre-Yves David
bundle2-localpeer: properly propagate the server output on error (issue4594)

In case of errors, output parts salvaged from the reply bundle need to be
processed for outputting their content. This concludes our quest for fixing
issue4594.
9fbf0a2a72a1...
Pierre-Yves David
bundle2: add on more layer of exception catching in localrepo.unbundle

We are going to add output related logic in this function. We do the
indentation first to help next changeset readability. We need a new try except
because we want to handle output on any exception, including PushRaced ones.
0c4d5e01b31f...
Pierre-Yves David
bundle2-wireproto: properly propagate the server output on error (issue4594)

In case of errors, output parts salvaged from the reply bundle are re-injected
into the bundle carrying the exception.

We still need to fix the situation for non-wireprotocol push.
61ff209fc01d...
Pierre-Yves David
bundle2: refactor error bundle creation for the wireprotocol

We want to add output information to the error bundle. Before doing this, we
rework the code to have a single bundler creation and return statement. This
will make the update with the output simpler as only one place will have to be
touched.
f9aa4cb8f2dd...
Pierre-Yves David
bundle2: store the salvaged output on the exception object

The re-handling of output is happening in some 'unbundle' callers. We have to
transmit the output information to this place so we stick it on the exception.

This is the third step in our quest for preserving the server output on error
(issue4594). We want to be able to copy the output part from the aborted reply
into the exception bundle.
21f2e8f48ae1...
Pierre-Yves David
bundle2: add a 'salvageoutput' method on bundle20

This method returns a copy of all 'output' parts added to the bundler.

This is the second step in our quest for preserving the server output on error
(issue4594). We want to be able to copy the output parts from the aborted reply
into the exception bundle.

The function will be used in a later patch.
2ec894582ea2...
Pierre-Yves David
bundle2: add a 'copy' method on parts

This is the first step in our quest for preserving the server output on error
(issue4594). We want to be able to copy the output parts from the aborted reply
into the exception bundle.

The function will be used in a later patch.
7d0421de8de3...
Pierre-Yves David
hooks: add a 'txnabort' hook

This hook will be called whenever a transaction is aborted. This will make it
easy for people to clean up temporary content they may have created during a
transaction.
89c5881d692c...
Pierre-Yves David
help: document the ''HG_TXNID'' environment variable during hooks

We forgot to document the new "transaction ID" mechanism.
baa11dde8c0e...
Matt Harbison
match: add a subclass for dirstate normalizing of the matched patterns

This class is only needed on case insensitive filesystems, and only
for wdir context matches. It allows the user to not match the case of
the items in the filesystem- especially for naming directories, which
dirstate doesn't handle[1]. Making dirstate handle mismatched
directory cases is too expensive[2].

Since dirstate doesn't apply to committed csets, this is only created by
overriding basectx.match() in workingctx, and only on icasefs.  The default
arguments have been dropped, because the ctx must be passed to the matcher in
order to function.

For operations that can apply to both wdir and some other context, this ends up
normalizing the filename to the case as it exists in the filesystem, and using
that case for the lookup in the other context.  See the diff example in the
test.

Previously, given a directory with an inexact case:

  - add worked as expected

  - diff, forget and status would silently ignore the request

  - files would exit with 1

  - commit, revert and remove would fail (even when the commands leading up to
    them worked):

        $ hg ci -m "AbCDef" capsdir1/capsdir
        abort: CapsDir1/CapsDir: no match under directory!

        $ hg revert -r '.^' capsdir1/capsdir
        capsdir1\capsdir: no such file in rev 64dae27060b7

        $ hg remove capsdir1/capsdir
        not removing capsdir1\capsdir: no tracked files
        [1]

Globs are normalized, so that the -I and -X don't need to be specified with a
case match.  Without that, the second last remove (with -X) removes the files,
leaving nothing for the last remove.  However, specifying the files as
'glob:**.Txt' does not work.  Perhaps this requires 're.IGNORECASE'?

There are only a handful of places that create matchers directly, instead of
being routed through the context.match() method.  Some may benefit from changing
over to using ctx.match() as a factory function:

  revset.checkstatus()
  revset.contains()
  revset.filelog()
  revset._matchfiles()
  localrepository._loadfilter()
  ignore.ignore()
  fileset.subrepo()
  filemerge._picktool()
  overrides.addlargefiles()
  lfcommands.lfconvert()
  kwtemplate.__init__()
  eolfile.__init__()
  eolfile.checkrev()
  acl.buildmatch()

Currently, a toplevel subrepo can be named with an inexact case.  However, the
path auditor gets in the way of naming _anything_ in the subrepo if the top
level case doesn't match.  That is trickier to handle, because there's the user
provided case, the case in the filesystem, and the case stored in .hgsub.  This
can be fixed next cycle.

  --- a/tests/test-subrepo-deep-nested-change.t
  +++ b/tests/test-subrepo-deep-nested-change.t
  @@ -170,8 +170,15 @@
    R sub1/sub2/test.txt
    $ hg update -Cq
    $ touch sub1/sub2/folder/bar
  +#if icasefs
  +  $ hg addremove Sub1/sub2
  +  abort: path 'Sub1\sub2' is inside nested repo 'Sub1'
  +  [255]
  +  $ hg -q addremove sub1/sub2
  +#else
    $ hg addremove sub1/sub2
    adding sub1/sub2/folder/bar (glob)
  +#endif
    $ hg status -S
    A sub1/sub2/folder/bar
    ? foo/bar/abc

The narrowmatcher class may need to be tweaked when that is fixed.


[1] http://www.selenic.com/pipermail/mercurial-devel/2015-April/068183.html
[2] http://www.selenic.com/pipermail/mercurial-devel/2015-April/068191.html
0b1577c892f2...
Matt Harbison
match: move _normalize() into the match class

This will be overridden in an upcoming patch to also deal with dirstate
normalization on case insensitive filesystems.
b8c3a0994b37...
Mads Kiilerich
largefiles: always consider updatelfiles 'checked' parameter set

mergeupdate already set the flag to update all. This will thus only change
overriderevert and scmutilmarktouched ... where the flag effectually also were
true. The test coverage thus shows no change.

As the flag always is set, it is removed.

This is mainly a change for keeping the code simple and consistent and correct,
but it should also make it faster in many cases.
9d5c27890790...
Mads Kiilerich
largefiles: for update -C, only update largefiles when necessary

Before, a --clean update with largefiles would use the "optimization" that it
didn't read hashes from standin files before and after the update. Instead of
trusting the content of the standin files, it would rehash all the actual
largefiles that lfdirstate reported clean and update the standins that didn't
have the expected content. It could thus in some "impossible" situations
automatically recover from some "largefile got out sync with its standin"
issues (even there apparently still were weird corner cases where it could
fail). This extra checking is similar to what core --clean intentionally do
not do, and it made update --clean unbearable slow.

Usually in core Mercurial, --clean will rely on the dirstate to find the files
it should update. (It is thus intentionally possible (when trying to trick the
system or if there should be bugs) to end up in situations where --clean not
will restore the working directory content correctly.) Checking every file when
we "know" it is ok is however not an option - that would be too slow.

Instead, trust the content of the standin files. Use the same logic for --clean
as for linear updates and trust the dirstate and that our "logic" will keep
them in sync. It is much cheaper to just rehash the largefiles reported dirty
by a status walk and read all standins than to hash largefiles.

Most of the changes are just a change of indentation now when the different
kinds of updates no longer are handled that differently. Standins for added
files are however only written when doing a normal update, while deleted and
removed files only will be updated for --clean updates.