Durham Goode <durham@fb.com> [Mon, 17 Jun 2013 19:44:00 -0700] rev 19326
revlog: add exception when linkrev == nullrev
When we deployed the latest crew mercurial to our users, a few of them
had issues where a filelog would have an entry with a -1 linkrev. This
caused operations like rebase and amend to create a bundle containing the
entire repository, which took a long time.
I don't know what the issue is, but adding this check should prevent repos
from getting in this state, and should help us pinpoint the issue next time
it happens.
Matt Mackall <mpm@selenic.com> [Wed, 19 Jun 2013 14:17:03 -0500] rev 19325
changegroup: fix fastpath during commit
Change
627cd7842e5d dropped the 'revset' variable which kept track of
which changesets were being bundled. Instead, it used "not in
commonset" to decide which changesets were outgoing.. which ran into
trouble when a commit was in progress.
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:41:53 +0200] rev 19324
tests: do not print hgrc in test
This lets test-rebase-cache.t pass also when --inotify or --extra-config-opt is
specified.
Simon Heimberg <simohe@besonet.ch> [Thu, 13 Jun 2013 01:37:02 +0200] rev 19323
contrib: delete setup3k in favor of setup --c2to3
setup3k was merged into setup in
7a7a1c594d. Now finally get rid of it.
Simon Heimberg <simohe@besonet.ch> [Thu, 13 Jun 2013 01:36:58 +0200] rev 19322
cleanup: remove unused imports
detected by pyflakes
simon@laptop-tosh [Thu, 13 Jun 2013 01:44:02 +0200] rev 19321
tests: check-code more python files without py extension
files found by running
$ hg manifest | grep -v "\." | xargs file | grep python
Augie Fackler <raf@durin42.com> [Fri, 14 Jun 2013 15:28:40 -0400] rev 19320
dummyssh: fix check-code nit
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Jun 2013 23:05:40 -0700] rev 19319
test-pathencode: randomize length of each path component
This makes it possible for long and short components to exist in the same path.
This also makes shorter path components more likely. For
randint(1, randint(1, n)), the likelihood that one sees a number k
(1 <= k <= n) is 1/n * (\sum_{k=i}^n 1/i). This decreases with k, much like in
the real world where shorter paths are more common than longer ones.
The previous fix and this one together cause
issue3958 to be detected by this
test with reasonable frequency. When this test was run 100 times in a loop, the
issue was detected 30 of those times.
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Jun 2013 23:01:22 -0700] rev 19318
test-pathencode: reduce makepart length requirement by 1
This allows path components of length 1 to be generated.
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Jun 2013 22:34:34 -0700] rev 19317
pathencode: fix hashmangle short dir limit (
issue3958)
The Python version of this (see mercurial/store.py:_hashencode) copies path
components up to a limit of maxshortdirslen bytes. The Python version does not
consider the initial "dh/" to be part of the this, though, while the C version
currently does. Adding len("dh/") == 3 to the limit for the C version brings it
in line with the Python version.
This was not caught by the randomized testing scheme in test-pathencode.py
because of a couple of flaws with the test. Upcoming patches will fix those
problems.
Matt Mackall <mpm@selenic.com> [Thu, 20 Jun 2013 14:06:11 -0500] rev 19316
docs: change description to synopsis in hgrc.5
Spotted by Eric S. Raymond.
simon@laptop-tosh [Tue, 11 Jun 2013 23:39:48 +0200] rev 19315
run-tests: sort missing files first instead of raising an error
sort first for early telling typos in test names
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:29:21 -0700] rev 19314
filectx: remove dependencies on filerev
Removing dependencies on filectx.filerev() makes it easier to create a filelog
implementation that doesn't have rev numbers.
simon@laptop-tosh [Sat, 08 Jun 2013 22:37:08 +0200] rev 19313
hg: move return statement after finally block
return is always run after finally block. Now we have same functionality,
but clearer readability.
simon@laptop-tosh [Sun, 09 Jun 2013 16:49:08 +0200] rev 19312
run-tests: call Threads constructor with keyword arguments
This is suggested in the python documentation
(on http://docs.python.org/2/library/threading.html#thread-objects)
simon@laptop-tosh [Sun, 09 Jun 2013 16:42:55 +0200] rev 19311
run-tests: ignoring tests works again
running with --retest did not work anymore because runone still returned None
for this case. But this is not allowed since
6a127fa5de23.
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19310
check-code: introduce function for using re2 when available
Do it similar as in mercurial.util. For simplicity only support flag
multiline which is the only one used.
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19309
check-code: compile filters when loading
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19308
check-code: compile all patterns on initialisation
They where compiled once for every checked file (when calling finditer).
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19307
check-code: only fix patterns once
The patterns were fixed once for every file. Now only do it once when loading
the file.
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 16:59:59 -0500] rev 19306
merge with stable
Iulian Stana <julian.stana@gmail.com> [Thu, 02 May 2013 19:36:47 +0300] rev 19305
commit: amending with --close-branch (
issue3445)
You can't close a branch that hasn't got a head.
newbranch + commit --close-branch must fail
newbranch + commit + commit --amend --close-branch must fail
You must not be allowed to close a branch that is not defined.
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 16:04:11 -0500] rev 19304
run-tests: simplify interrupted message
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 15:58:14 -0500] rev 19303
run-tests: remove spurious disable of --time with --debug
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 15:56:16 -0500] rev 19302
run-tests: always gather runtimes
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:05:29 +0200] rev 19301
run-tests: when interrupted report time in failure message
When --time is specified, the interruption message of an interrupted test is
extended with the time the test has run
INTERRUPTED: /path/to/tests/test-example.t (after 513 seconds)
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:05:02 +0200] rev 19300
run-tests: report interrupted tests
When the test run is aborted, a message is printed for each interrupted test.
This is helpful when a test is hanging.
example failure message:
INTERRUPTED: /path/to/tests/test-example.t
The message can appear before or after the line with the number of tests
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:42:43 +0200] rev 19299
run-tests: open hgrc file only for writing
The file is not read here. Opening with "w+" is unnecessary.
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:06:16 +0200] rev 19298
color: use pythons isinstance method instead of reprogramming it
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:06:02 +0200] rev 19297
color: only provide the required opt to _modesetup
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 06 Jun 2013 14:05:03 -0400] rev 19296
doc: make it easier to read how to enable extensions
We tell people all the time that enabling extensions is not a scary
thing to do, but we don't make it easy enough for an absolute novice
to do so. When they see a suggestion to do "hg extfoo bar", the error
message tells them "see hg help extensions", but that help page
doesn't actually tell them where configuration files are.
Furthermore, the big warning about why extensions aren't enabled by
default should be pushed down a little bit. Most of the extensions
shipped by hg are not all that scary, and some very basic and useful
cosmetic extensions like graphlog, color, pager, and progress, should
be enabled for many hg users.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 06 Jun 2013 13:37:41 -0400] rev 19295
doc: reword "config file" to "configuration file"
While we do use the abbreviation "config" elsewhere in the docs, the
phrase "configuration file" is always written out in full, except in
this location in phases.txt.
Matt Mackall <mpm@selenic.com> [Thu, 06 Jun 2013 14:40:26 -0500] rev 19294
run-tests: make --noskips work
Durham Goode <durham@fb.com> [Thu, 30 May 2013 18:47:16 -0700] rev 19293
filelog: switch 'not len(filerevlog)' to 'not filerevlog'
A few places in the code use 'if not len(revlog)' to check if the revlog
exists. Replacing this with 'not filerevlog' allows alternative revlog
implementations to override __nonzero__ to handle this case without
implementing __len__.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:29:03 -0700] rev 19292
annotate: simplify annotate parent function
The annotate algorithm used a custom parents() function to try to reuse
filectx and filelogs. I simplified it a bit to rely more heavily on the
self.parents() which makes it work well with alternative filectx
implementations. I tested performance on a file with 5000+ revisions
but no renames, and on a file with 500 revisions repeating a series of
4 edits+renames and saw zero performance hit. In fact, it was reliably a
couple milliseconds faster now.
Added the perfannotate command to contrib/perf.py for future use.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:26:56 -0700] rev 19291
changegroup: move changegroup file adding to a separate function
Moving the logic that adds files to a changegroup to a different function
allows extensions to override it and customize the way filelogs are added
to changegroups.
No logic is changed.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:25:55 -0700] rev 19290
log: move log file walk to its own function
This moves the logic that determines which changesets to process during a
'hg log foo.txt' command. Putting it in its own function allows extensions
to modify how the file log is traversed. For instance, the current
implementation uses filelog revs heavily. Other implementations may not have
filelog revs available.
The function throws an exception if the traversal is not possible via the
filelog, so the parent function can do things the slow way if necessary
(by walking the entire commit history).
Aside from the exception throwing, no logic is changed.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 17:51:13 -0700] rev 19289
bundle: refactor changegroup prune to be its own function
Moving the prune function to be a non-nested function allows extensions to
control which revisions are allowed in the changegroup. For example, in my
shallow repo extension I want to prevent filelogs from being added to the
bundle.
This also allows an extension to use a filelog implementation that doesn't
have revlog.linkrev implemented.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 17:49:37 -0700] rev 19288
filectx: refactor filectx.rev() to use filectx._changeid
The code in filectx.rev() was identical to filectx._changeid. Fixing this
allows alternative filectx implementations to only override _changeid.
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Jun 2013 17:20:45 -0700] rev 19287
util: add an optional timestamp parameter to makedate
This will be used by the upcoming shelve extension.
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Jun 2013 17:20:44 -0700] rev 19286
util: rename ct variable in makedate to timestamp
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Jun 2013 17:20:37 -0700] rev 19285
merge: add a files method to the mergestate class
This will be used in the upcoming shelve extension.
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 21:16:49 +0200] rev 19284
histedit: raise ImportError when demandloading is enabled
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 18:09:06 -0500] rev 19283
run-tests: add --loop support
This makes it easy to run tests repeatedly at high loads to look for test failures.
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:58:51 -0500] rev 19282
run-tests: --interactive and --jobs no longer conflict
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:58:49 -0500] rev 19281
run-tests: sort certain slow tests earlier by keyword
There are a few tests that evade the size heuristic
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:57:37 -0500] rev 19280
run-tests: drop unused resultslock
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:57:36 -0500] rev 19279
run-tests: drop options.child and users