Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 10:04:15 -0700] rev 21373
run-tests: move test discovery into TestRunner.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 10:03:08 -0700] rev 21372
run-tests: move test shuffling and sorting into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 10:00:59 -0700] rev 21371
run-tests: assign testdir in TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:59:01 -0700] rev 21370
run-tests: move hash seed logic to TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:58:26 -0700] rev 21369
run-tests: move tmpdir calculations into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:57:02 -0700] rev 21368
run-tests: move more path calculations into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:54:28 -0700] rev 21367
run-tests: move pypath manipulation into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:49:33 -0700] rev 21366
run-tests: establish TestRunner.run()
(amended by mpm to remove environ cleanup - unrelated change that
breaks on Solaris)
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:44:39 -0700] rev 21365
run-tests: move program searching into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 09:40:27 -0700] rev 21364
run-tests: allow TestRunner to be passed into main()
This allows 3rd parties to specify a custom TestRunner. This is useful
for providing your own test discovery mechanism, for example.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 00:23:06 -0700] rev 21363
run-tests: move test discovery logic into a function
The new function is easily monkeypatchable. This facilitates more
advanced test discovery by 3rd parties such as extensions.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 00:12:26 -0700] rev 21362
run-tests: move scheduletests() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 00:10:06 -0700] rev 21361
run-tests: move abort global to TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 00:06:30 -0700] rev 21360
run-tests: move runtests() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Apr 2014 00:03:32 -0700] rev 21359
run-tests: move results global into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:59:06 -0700] rev 21358
run-tests: move times global into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:53:23 -0700] rev 21357
run-tests: move gettest() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:49:23 -0700] rev 21356
run-tests: move outputcoverage() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:47:59 -0700] rev 21355
run-tests: move outputtimes() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:44:56 -0700] rev 21354
run-tests: move checkhglib into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:43:00 -0700] rev 21353
run-tests: move installhg() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:39:38 -0700] rev 21352
run-tests: move createdfiles out of a global and into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:38:10 -0700] rev 21351
run-tests: move usecorrectpython() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:35:27 -0700] rev 21350
run-tests: move cleanup() into TestRunner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:33:44 -0700] rev 21349
run-tests: add options to runner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:28:59 -0700] rev 21348
run-tests: add options to runner
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:27:11 -0700] rev 21347
run-tests: move COVERAGE_FILE out of a global
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:26:15 -0700] rev 21346
run-tests: move PYTHONDIR out of a global
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:24:39 -0700] rev 21345
run-tests: move TMPBINDIR out of a global
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:22:47 -0700] rev 21344
run-tests: move BINDIR out of a global
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:20:42 -0700] rev 21343
run-tests: move INST out of a global
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:19:23 -0700] rev 21342
run-tests: move HGTMP out of a global
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:15:24 -0700] rev 21341
run-tests: move TESTDIR out of a global
This patch starts the process of removing global variables from
run-tests.py. The goal of this is to make it easier to run tests
differently without having to concern yourself with global state.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 23:07:17 -0700] rev 21340
run-tests: establish a class to hold testing state
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 22:02:55 -0700] rev 21339
run-tests: refactor runone() into gettest() and scheduletests()
runone() has been removed. Replacing it are gettest() (which returns a
Test instance) and a small amount of boilerplate in scheduletests().
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:53:15 -0700] rev 21338
run-tests: move computation of test paths into Test.__init__
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:50:23 -0700] rev 21337
run-tests: move logging of test start into Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:21:57 -0700] rev 21336
run-tests: remove remaining uses of TestResult
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:17:39 -0700] rev 21335
run-tests: move output writing to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:14:31 -0700] rev 21334
run-tests: move err file saving to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:10:22 -0700] rev 21333
run-tests: emit exception failure result from Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:08:03 -0700] rev 21332
run-tests: move test name filter to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:05:50 -0700] rev 21331
run-tests: move keyword processing into Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:04:08 -0700] rev 21330
run-tests: move retesting result to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:02:51 -0700] rev 21329
run-tests: move blacklist skipping to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 21:00:24 -0700] rev 21328
run-tests: check for test file existence in Test.run()
We delay this a little bit. But it shouldn't really matter when the
check is performed.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:53:45 -0700] rev 21327
run-tests: move remaining result processing to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:52:58 -0700] rev 21326
run-tests: move output difference processing to Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:48:16 -0700] rev 21325
run-tests: generate timeout result in Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:47:14 -0700] rev 21324
run-tests: add skip processing to Test
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:41:08 -0700] rev 21323
run-tests: move fail() into Test
The code was changed slightly as part of the migration to make use of
appropriate variables and modern Python conventions.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:35:54 -0700] rev 21322
run-tests: move success() into Test
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:32:38 -0700] rev 21321
run-tests: move err path handling to Test
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:27:18 -0700] rev 21320
run-tests: handle interrupted in Test.run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 20:22:32 -0700] rev 21319
run-tests: kill daemons during Test.cleanup()
As a safety precaution, we kill daemons in Test.cleanup(). This is
necessary for a subsequent patch that will reraise KeyboardInterrupt
before killdaemons() runs as part of run().
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 18:50:40 -0700] rev 21318
run-tests: capture reference output in Test.__init__
Reference output should be constant and doesn't need to be computed at
test execution time. We calculate it earlier.
This patch is the first in a mini series that will change how the
TestResult object works.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 16:14:30 -0700] rev 21317
run-tests: make globmatch a static method of TTest
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 16:13:02 -0700] rev 21316
run-tests: make rematch a static method of TTest
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 16:11:49 -0700] rev 21315
run-tests: make linematch a static method of TTest
linematch only applies to t tests. It makes sense to move everything t
test related to the TTest class.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 15:37:50 -0700] rev 21314
run-tests: finish moving tsttest() into TTest
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 15:28:31 -0700] rev 21313
run-tests: move t test execution from tsttest() to TTest.run()
After this patch, tsttest() only contains output/result processing.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 15:19:28 -0700] rev 21312
run-tests: move t test parsing into its own function
Test parsing is somewhat complicated. This patch extracts it into its
own function.
The impetus of this patch is folding tsttest() into the TTest class.
Subsequent patches will continue this work until tsttest() no longer
exists.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 14:54:04 -0700] rev 21311
run-tests: roll pytest() into PythonTest._run()
Python was the old runner function. It no longer needs to exist since
the PythonTest class took its job.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 14:51:43 -0700] rev 21310
run-tests: remove threadtmp in Test.cleanup()
threadtmp is an implementation detail. We move the cleanup of this
directory to Test.cleanup() and make the variable internal. The
cleanup function will eventually disappear into unittest machinery.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 14:47:34 -0700] rev 21309
run-tests: allow Test.run() to run multiple times
Test.run() can now be executed multiple times on the same Test instance.
This feature is currently unused and there are no plans to implement it.
The main reason for this work was to refactor testtmp, replacements, and
env to be run-time specific as opposed to Test instance specific.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 14:09:46 -0700] rev 21308
run-tests: capture reference output in TestResult class
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 14:01:18 -0700] rev 21307
run-tests: give TestResult a skipped attribute
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 18:31:22 -0700] rev 21306
run-tests: pass TestResult into run()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:50:25 -0700] rev 21305
run-tests: capture execution results in a TestResult class
Some implementation details of test execution still live outside of
Test. These include determining what a result means and cleaning up
after the test.
To move to the world where more of this logic can live inside Test or a
derived object, the logic for test execution needs to be refactored.
Specifically, exception trapping and opportunities for result processing
need to be moved into Test.
This patch starts the process by establishing a TestResult class for
holding the results of a test execution. In order to actually use this
class, exception trapping and execution time recording needed to be
moved into Test.run().
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:29:26 -0700] rev 21304
run-tests: clean up temp directory variables
testtmp is an implementation detail. It didn't need to be exposed to the
world.
threadtmp is derived from count. It is now created as part of the
constructor and mostly hidden from the outside world.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:26:12 -0700] rev 21303
run-tests: move env into Test
Environment variables are an implementation detail of how tests are
executed. This patch moves environment variable logic into Test and
completely hides it from the outside.
With this patch, a Test can be executed with two lines: init + run().
Tests are still single-use and take a more arguments to the constructor
than likely necessary. These will get addressed in subsequent patches.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:22:52 -0700] rev 21302
run-tests: move killdaemons into Test.run()
killdaemons() was the only part of runone() looking at env variables. We
move killdaemons() into Test.run() to enable us to fully move env into
Test.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:18:55 -0700] rev 21301
run-tests: move replacements and port management into Test
replacements and ports are really implementation details of a Test. They
have been moved to instance variables.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:11:49 -0700] rev 21300
run-tests: move createhgrc() call into Test.run()
createhgrc() is an implementation detail of how tests are run. It makes
sense to move it into Test.run().
Note that this will cause the test execution time to include the
creation of hgrc. The author does not believe this is a significant
change worth worrying about.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:07:05 -0700] rev 21299
run-tests: move createenv() into Test
createenv() is consulting lots of test-specific variables. It makes
sense to attach it to the Test class.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 13:03:24 -0700] rev 21298
run-tests: move replacements generation into Test
The API is a bit funky. Things will look better once all state is
captured in Test.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 12:54:09 -0700] rev 21297
run-tests: move testtmp into Test class
This patch starts the process of moving test-specific variables into the
Test class. The ultimate goal is to be able to instantiate a Test with
minimal arguments and to call run() on it without too much thinking.
This will make it much easier to run tests from other contexts. It will
also enable things like running a test multiple times.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Apr 2014 12:26:34 -0700] rev 21296
run-tests: create classes for representing tests
Currently, the state for an individual test is scattered across a number
of functions and variables. This patch begins a process of isolating a
single test's state into instances of a class. It does this by
establishing a new Test base class and child classes for Python tests
and T tests. The class currently has a run() API that proxies into the
existing "runner" functions. Upcoming patches will move the logic for
each test type into the class.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 30 Apr 2014 18:40:20 -0700] rev 21295
revsetbenchmark: add `author(mpm) or author(lmoscovicz)` to the canonical list
This matters as `author(mpm)` have a lot of matches evenly split in the repo,
while `author(lmoscoviz)` have less match (and later). This changes the execution
path of the "or" operator a lot.
Matt Mackall <mpm@selenic.com> [Tue, 13 May 2014 19:29:45 -0500] rev 21294
filterpyflakes: filter WindowsError unconditionally
Matt Mackall <mpm@selenic.com> [Tue, 13 May 2014 19:22:40 -0500] rev 21293
filterpyflakes: make memoryview filtering unconditional
Matt Mackall <mpm@selenic.com> [Tue, 13 May 2014 15:22:36 -0500] rev 21292
py3kcompat: drop unused export
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 10 May 2014 15:22:04 -0700] rev 21291
py3kcompat: don't convert os.environ to bytes
os.environ accepts str not bytes. Assigning bytes will result in a
run-time error.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 10 May 2014 14:57:25 -0700] rev 21290
demandimport: pass proper level to __import__ in Python 3
demandimport was failing in Python 3 with a ValueError because
__import__'s level=-1 has gone away (-1 means to try both relative
and absolute imports and relative imports don't exist in Python 3).
With this patch, demandimport still doesn't work in Python 3 (it
fails when importing a non-package module).
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 19:55:40 -0400] rev 21289
help: suggest keyword search when no topic is found
When `hg help foobar` fails, it now suggests using `hg help --keyword foobar`
instead of printing a full page of basic commands.
This should greatly increases discoverability of the `hg help --keyword`
argument.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 20:01:03 -0400] rev 21288
help: provide a more helpful message when no keyword are matched
Before this changeset, when no topic were matching the provided keyword ( in
command such as `hg help --keyword babar`) the output was empty. This is
confusing and unhelpful for new users seeking assistance in the help.
We now display:
$ hg help --keyword babar
abort: no matches
(try "hg help" for a list of topics)
This send users in a new direction where they may find what they are looking for.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 29 Apr 2014 11:40:42 -0700] rev 21287
revsetbenchmark: use optparse to retrieve argument
We need more flexibility. For example we'll want to run the benchmark on other
repository.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 25 Apr 2014 13:35:31 -0700] rev 21286
revsetbenchmark: add a usage message when no arguments are passed
This increase the odd someone who didn't wrote will it find out how to use this
script.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 29 Apr 2014 19:15:36 -0700] rev 21285
revsetbenchmark: add `::tip and draft()` to the canonical list
The want to test element on different side of the iterators.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 28 Apr 2014 15:14:11 -0700] rev 21284
revset: cosmetic changes in spanset range comparison
We use the python syntax for range comparison: `a < x < c`. This is shorter,
more readable and less error prone. This comparison escaped the cleanup make in
e2031c8ca4f8
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 25 Apr 2014 23:38:24 -0700] rev 21283
revset: drop spanset._contained
All its users inlined it for performance reasons.
(See 1d7a2771aa36 and e2031c8ca4f8)
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 05 May 2014 22:47:14 -0700] rev 21282
patchbomb: includes series information in the header
We includes information about the series being patch bombed in all email. Two
new headers are added:
* X-Mercurial-Series-Index: index of the patches in the series (starts at 1)
* X-Mercurial-Series-Total: The total number of patches in the series
This information is available in the email subject line, but having them
formalized in the header will helps automated tools to process patches send with
modern mercurial.
Matt Mackall <mpm@selenic.com> [Fri, 09 May 2014 13:32:56 -0500] rev 21281
pager: add attend-<command> option
This lets users override attend settings locally on a command
granularity.
Matt Mackall <mpm@selenic.com> [Fri, 09 May 2014 13:10:23 -0500] rev 21280
pager: variable reorder
Matt Mackall <mpm@selenic.com> [Fri, 09 May 2014 13:07:50 -0500] rev 21279
pager: break auto out of command check loop
Matt Mackall <mpm@selenic.com> [Fri, 09 May 2014 13:05:52 -0500] rev 21278
pager: break always out of command check loop
Matt Mackall <mpm@selenic.com> [Fri, 09 May 2014 12:58:53 -0500] rev 21277
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com> [Thu, 08 May 2014 11:11:27 -0500] rev 21276
tests: fix test failure on vfat
It can't handle filenames with spaces. We don't have a good hghave
test for this, so we wrap it with unix-permissions.
Mads Kiilerich <madski@unity3d.com> [Thu, 08 May 2014 19:45:22 +0200] rev 21275
largefiles: include largefiles when doing log on a directory (issue4241)
The matchers _files had to include both the real root and the standin version
of the root.
Johan Bjork <jbjoerk@gmail.com> [Thu, 08 May 2014 14:58:25 +0000] rev 21274
journal: set Abort hint when failing due to an abandoned transaction
Durham Goode <durham@fb.com> [Thu, 08 May 2014 16:37:33 -0700] rev 21273
merge: define conflict marker labels in filemerge()
Moves the conflict marker definition up to filemerge, so it gets applied to all
merge strategies, and so in a future patch we can manipulate the markers.
Durham Goode <durham@fb.com> [Thu, 08 May 2014 16:33:06 -0700] rev 21272
merge: prevent simplemerge from mutating label list
simplemerge was using list.pop() to remove items from the labels list. This
mutated the list and made it unusable by other calls (for instance, it might be
used in both the premerge and actual merge stages).
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 May 2014 08:44:53 +0900] rev 21271
tests: ignore "undefined name 'memoryview'" pyflakes error on earlier Python
Before this patch, "test-check-pyflakes.t" shows unexpected "undefined
name 'memoryview'" error for "mercurial/util.py" on Python 2.6.x or
earlier, because they don't define symbol 'memoryview'.
This patch introduces excluding patterns into "filterpyflakes.py" to
ignore "undefined name 'memoryview'" pyflakes error on Python 2.6.x or
earlier
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 May 2014 08:44:53 +0900] rev 21270
mq: eliminate unused variable for test-check-pyflakes.t
"user" in "fold()" has become useless since 49148d7868df.
Mads Kiilerich <madski@unity3d.com> [Tue, 22 Apr 2014 02:09:24 +0200] rev 21269
merge: make debug output slightly more helpful by including message for action
Make recently introduced messages more useful. Instead of:
f1: g
f2: m
say:
f1: remote is newer -> g
f2: versions differ -> m
Mads Kiilerich <mads@kiilerich.com> [Sun, 13 May 2012 17:45:08 +0200] rev 21268
merge: simplify mergestate iter
Matt Mackall <mpm@selenic.com> [Fri, 09 May 2014 14:46:50 -0500] rev 21267
resolve: simplify "finished" message
The recently introduced message was:
no unresolved files; you may continue your unfinished operation
This had three problems:
- looks a bit like an error message because it's not saying "we've
just resolved the last file"
- refers to "unfinished operation", which won't be the case with
"update" or "merge"
- introduces semicolons to error messages, which is stylistically
questionable
I've simplified this to:
no more unresolved files
In the future, if we want to prompt someone to continue a particular operation, we should use
a hint style:
no more unresolved files
(use 'hg graft --continue' to finish grafting)
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 18 Apr 2014 22:19:25 -0700] rev 21266
resolve: print message when no unresolved files remain (issue4214)
When using resolve, users often have to consult with the output of |hg
resolve -l| to see if any unresolved files remain. This step is tedious
and adds overhead to resolving.
This patch will notify a user if there are no unresolved files remaining
after executing |hg resolve|::
no unresolved files; you may continue your unfinished operation
The patch stops short of telling the user exactly what command should be
executed to continue the unfinished operation. That is because this
information is not currently captured anywhere. This would make a
compelling follow-up feature.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 18 Apr 2014 18:56:26 -0700] rev 21265
resolve: print warning when no work performed (issue4208)
Previously, if the paths specified as arguments to |hg resolve| were
invalid, they were silently ignored and a no-op would ensue.
This patch fixes that in some scenarios.
If none of the paths specified to |hg resolve| match a path that is in
mergestate, a warning will be emitted.
Ideally, a warning would be emitted for every path/pattern specified
that doesn't match anything. To achieve this would require significant
refactoring of the matching subsystem. That work is beyond the scope of
this patch series. Something is better than nothing and this patch
gets us something.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 18 Apr 2014 19:08:32 -0700] rev 21264
resolve: abort when not applicable (BC)
The resolve command is only relevant when mergestate is present.
This patch will make resolve abort when no mergestate is present.
This change will let people know when they are using resolve when they
shouldn't be. This change will let people know when their use of resolve
doesn't do anything.
Previously, |hg resolve -m| would allow mergestate to be created. This
patch now forbids that. Strictly speaking, this is backwards
incompatible. The author of this patch believes creating mergestate via
resolve doesn't make much sense and this side-effect was unintended.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 18 Apr 2014 18:26:42 -0700] rev 21263
resolve: split test
Part of test-resolve.t is split into multiple tests to create an
injection point for new tests that will be added in subsequent patches.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 18 Apr 2014 18:19:46 -0700] rev 21262
resolve: use early continue and deindent
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 May 2014 16:48:28 -0700] rev 21261
mergestate: consistently set variables to None
Some code branches and exceptional circumstances such as empty
mergestate files could result in mergestate._local and
mergestate._other not being defined or reset to None. These variables
are now correctly set to None when they should be.
Durham Goode <durham@fb.com> [Wed, 07 May 2014 17:22:34 -0700] rev 21260
changegroup: refactor outgoing logic into a function
Extensions that add to bundle2 will want to know which commits are outgoing so
they can bundle data that is appropriate to those commits. This moves the logic
for figuring that out to a separate function so extensions can do the same
computation.
Durham Goode <durham@fb.com> [Wed, 07 May 2014 17:24:19 -0700] rev 21259
bundle2: fix bundle2 pulling all revs on empty pulls
When bundle2 was enabled, if hg pull had no commits to pull, it would print
'no changes found' and then download the entire repository from the server. This
was caused by heads and common being set to None, which gets treated as
heads=cl.heads() and common=[nullid], which means download the entire repo.
Pulling bundles without a changegroup is a valid use case (like if we're just
updating bookmarks), so this modifes the bundle code to allow not adding
changegroups.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 May 2014 19:26:15 -0700] rev 21258
exchange: fix bad indentation
Those two lines where double indented for no good reasons.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 May 2014 19:28:17 -0700] rev 21257
exchange: propagate arguments to the _getbundleextrapart function
The arguments was wrongly propagated (again).
Durham Goode <durham@fb.com> [Wed, 07 May 2014 17:20:38 -0700] rev 21256
bundle2: fix configuration name mismatch
During pulls bundle2 was checking server.bundle2, but during pushes it was
checking experimental.bundle2. This makes them both experimental.bundle2.
Matt Mackall <mpm@selenic.com> [Wed, 07 May 2014 17:58:13 -0500] rev 21255
build: initial support for in-tree autobuilding recipes
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:48:07 -0700] rev 21254
tests: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:33:14 -0700] rev 21253
share: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:52:25 -0700] rev 21252
relink: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:35:37 -0700] rev 21251
record: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:31:51 -0700] rev 21250
hgk: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:48:10 -0700] rev 21249
color: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:46:49 -0700] rev 21248
children: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:48:41 -0700] rev 21247
fetch: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:54:01 -0700] rev 21246
extdiff: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:46:24 -0700] rev 21245
churn: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:17:04 -0700] rev 21244
convert: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:19:31 -0700] rev 21243
debugshell: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:09:06 -0700] rev 21242
largefiles: declare commands using decorator
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21241
cmdutil: omit redundant "savecommitmessage()" in "tryimportone()"
The preceding patch causes that "makememctx()" with "editor" argument
saves (manually edited) commit message into ".hg/last-message.txt":
saving itself is executed indirectly in "memctx.__init__()".
This makes it redundant to invoke "savecommitmessage()" on caller side
of "makememctx()".
This patch omits such redundant "savecommitmessage()" invocation in
"tryimportone()".
"tryimportone()" uses one of "commiteditor" or "commitforceeditor" as
"editor" argument, and this causes saving commit message always.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21240
amend: use "editor" argument for "memctx.__init__" to save commit message
This patch uses "editor" argument of "memctx.__init__" to save commit
message, instead of explicit editor invocation and saving commit
message by "localrepository.savecommitmessage()".
By passing one of "commiteditor" or "commitforceeditor" as "editor",
"memctx.__init__" saves commit message, even when editor invocation is
not needed.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21239
histedit: pass "editor" argument to "memctx.__init__()" for "collapse" command
The preceding patch causes that "memctx.__init__()" with "editor"
argument invokes editor and saves edited commit message into
".hg/last-message.txt".
This patch passes "editor" argument to "memctx.__init__()" instead of
explicit invocations of "commitforceeditor()" and
"savecommitmessage()" for "collapse" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21238
context: move editor invocation from "makememctx()" to "memctx.__init__()"
This patch introduces "editor" argument to "memctx.__init__()", and
moves editor invocation from "makememctx()" to "memctx.__init__()", to
centralize editor invocation into "memctx" object creation.
This relocation is needed, because "makememctx()" requires the "store"
object providing "getfile()" to create "memfilectx" object, and this
prevents some code paths from using "makememctx()" instead of
"memctx.__init__()".
This patch also invokes "localrepository.savecommitmessage()", when
"editor" is specified explicitly, to centralize saving commit message
into "memctx" object creation: passing "cmdutil.commiteditor" as
"editor" can achieve both suppressing editor invocation and saving
into ".hg/last-message.txt" for non empty commit messages.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21237
localrepo: add "editor" argument to "tag()"
Before this patch, "localrepository.tag()" doesn't take "editor"
argument, and this prevents callers from passing "editor" argument to
"localrepository.commit()" invoked internally.
This patch adds "editor" argument to "localrepository.tag()" (and
"_tag()", too), and makes "commands.tag()" invoke it with "editor"
argument.
This patch also omits explicit "localrepository.savecommitmesssage()"
invocation, because "localrepository.commit()" will invoke specified
"editor" and save edited commit message into ".hg/last-message.txt"
automatically.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21236
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
Before this patch, "hg qrefresh" and "hg qfold" invoke "ui.edit()"
explicitly to get commit message edited manually.
This requires explicit "localrepository.savecommitmessage()"
invocation to save edited commit message into ".hg/last-message.txt",
because unexpected exception raising may abort command execution
before saving it in "localrepository.commit()".
This patch uses "editor" argument of "localrepository.commit()"
instead of explicit "ui.edit()" invocation for "hg qnew" and "hg qfold"
"localrepository.commit()" will invoke "desceditor()" function newly
added by this patch, and save edited commit message into
".hg/last-message.txt" automatically.
This patch passes not "editor" but "desceditor" to "commit()", because
"hg qnew" and "hg qfold" require editor function to return edited
message (and invoke "patchheader.setmessage()" with it) if not empty,
or default message otherwise.
This patch also avoids "not q.applied" check at "hg qrefresh --edit",
because it is also checked in "queue.refresh()", and it is not needed
to get commit message from patch header before "queue.refresh()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21235
qrefresh: relocate message/patch-header handling to delay message determination
Before this patch, commit message for refreshed MQ changeset is
determined, and written into refreshed patch file before
"localrepository.commit()" invocation.
This makes refactoring to use "editor" argument of "commit()" instead
of explicit "ui.edit()" invocation in succeeding patch difficult.
This patch relocates message/patch-header handling to delay message
determination.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21234
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
Before this patch, "hg qnew" invokes "ui.edit()" explicitly to get
commit message edited manually.
This requires explicit "localrepository.savecommitmessage()"
invocation to save edited commit message into ".hg/last-message.txt",
because unexpected exception raising may abort command execution
before saving it in "localrepository.commit()".
This patch uses "editor" argument of "localrepository.commit()"
instead of explicit "ui.edit()" invocation for "hg qnew".
"localrepository.commit()" will invoke "desceditor()" function newly
added by this patch, and save edited commit message into
".hg/last-message.txt" automatically.
This patch passes not "editor" but "desceditor" to "commit()", because
"hg qnew" requires editor function to return edited message if not
empty, or default message otherwise.
This patch applies "rstrip()" on "defaultmsg" at comparison between
"nctx.description()" and "defaultmsg", because the former should be
stripped by "changelog.stripdesc()" and the latter may have tail white
spaces inherited from "patchfn".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 05 May 2014 21:26:40 +0900] rev 21233
histedit: use "editor" argument of "commit()" instead of explicit "ui.edit()"
Before this patch, "message" action of "hg histedit" uses "ui.edit()"
explicitly to get commit message edited manually.
This requires explicit "localrepository.savecommitmessage()"
invocation to save edited commit message into ".hg/last-message.txt",
because unexpected exception raising may abort command execution
before saving it in "localrepository.commit()".
This patch uses "editor" argument of "localrepository.commit()"
instead of explicit "ui.edit()" invocation for "message" action of "hg
histedit"
"localrepository.commit()" will invoke "editor()" function newly added
in this patch, and save edited commit message into ".hg/last-message.txt"
automatically.
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Apr 2014 12:54:01 +0900] rev 21232
test-pyflakes: detect undefined name error
It should be able to catch the following mistakes at 2606e7f227f6:
mercurial/exchange.py:590: undefined name 'UnknownPartError'
mercurial/match.py:346: undefined name 'pat'
mercurial/win32.py:365: undefined name '_ERROR_NO_MORE_FILES'
tests/killdaemons.py:46: undefined name 'check'
Yuya Nishihara <yuya@tcha.org> [Fri, 02 May 2014 18:25:23 +0900] rev 21231
run-tests: initialize global variables to suppress pyflakes warning
Matt Mackall <mpm@selenic.com> [Tue, 06 May 2014 12:47:59 -0500] rev 21230
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Mon, 05 May 2014 16:54:15 +0200] rev 21229
setup.py, make: avoid problems with outdated, existing hgext/__index__.py*
"make clean" already removed __index__.py[cdo], but not the __index__.py
(automatically generated by "python setup.py build_hgextindex").
"setup.py build_hgextindex" did not generate a new index if file
__index__.py[cdo] already existed, because if __index__.py was removed,
the compiled file containing the old information was imported and used.
Generate an empty file (with a new timestamp to generate a new .py[cdo])
instead and make mercurial.extensions ignore the unset docs attribute.
One of the problems was a failed test-help.t, to reproduce:
$ rm hgext/__index__.py*
$ echo 'docs = {"mq": "dummy"}' > hgext/__index__.py
$ make test-help.t
With this a "make clean" or "python setup.py build_hgextindex" helps.
Yuya Nishihara <yuya@tcha.org> [Fri, 02 May 2014 18:24:10 +0900] rev 21228
factotum: initialize global variables to suppress pyflakes warning
Mads Kiilerich <madski@unity3d.com> [Sat, 03 May 2014 03:29:30 +0200] rev 21227
color: don't fail on error messages when no curses (issue4237)
The error only occured when Python didn't have curses - such as on Windows and
when Python was built without curses support.
No curses can also be emulated by (re)moving .../lib/python2.7/curses/ from the
Python installation.
It is left as an exercise to figure out exactly what changed in Mercurial that
triggered this error.
Steve Borho <steve@borho.org> [Sat, 03 May 2014 10:33:54 +0200] rev 21226
win32: backout 1a9ebc83a74c
This change conflicted with TortoiseHg's use of QFileSystemWatcher. Files which
were being monitored (for file-system events) were unable to be reliably updated
using util.atomictempfile. Often the update would error out in the middle of
the process leaving neither the old or the new file in place.
My guess is that _kernel32.CreateFileA() is triggering an exception that is
not handled correctly within unlink()
Matt Mackall <mpm@selenic.com> [Mon, 05 May 2014 13:42:08 -0500] rev 21225
test-check-code-hg: use locate instead of manifest
Matt Mackall <mpm@selenic.com> [Mon, 05 May 2014 13:41:29 -0500] rev 21224
test-check-code-hg: drop manual check of non-.py scripts
Matt Mackall <mpm@selenic.com> [Mon, 05 May 2014 13:42:58 -0500] rev 21223
test-check-code-hg: use test-repo check
Matt Mackall <mpm@selenic.com> [Mon, 05 May 2014 13:37:59 -0500] rev 21222
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com> [Fri, 02 May 2014 00:23:58 -0500] rev 21221
tests: use locate to find files for pyflakes check
Based on a suggestion by Yuya Nishihara
Matt Mackall <mpm@selenic.com> [Thu, 01 May 2014 19:24:03 -0500] rev 21220
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 01 May 2014 17:48:02 -0500] rev 21219
Added signature for changeset 2195ac506c6a
Matt Mackall <mpm@selenic.com> [Thu, 01 May 2014 17:47:24 -0500] rev 21218
Added tag 3.0 for changeset 2195ac506c6a
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 01 May 2014 14:07:04 -0700] rev 21217
revset: directly use __contains__ instead of a lambda
We get rid of lambda in a bunch of other place. This is equivalent and much
faster. (no new timing as this is the same change as three other changesets)
Matt Mackall <mpm@selenic.com> [Thu, 01 May 2014 14:33:06 -0500] rev 21216
tests: suppress spurious lchmod error from unzip (issue4088)
Because lchmod doesn't exist on Linux, unzip should be built without lchmod
support. A few distros get this wrong.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 01 May 2014 12:15:28 -0700] rev 21215
orderedlazyset: directly use __contains__ instead of a lambda
We apply the same speedup as in spanset, getting rid of the useless lambda.
(No new timing, as this is the very same change)
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 01 May 2014 12:15:00 -0700] rev 21214
lazyset: directly use __contains__ instead of a lambda
We apply the same speedup as in spanset, getting rid of the useless lambda.
(No new timing, as this is the very same change)
Matt Mackall <mpm@selenic.com> [Thu, 01 May 2014 13:42:12 -0500] rev 21213
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 30 Apr 2014 23:20:46 +0900] rev 21212
i18n-ja: synchronized with e9c2f76be74b
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 30 Apr 2014 11:01:50 -0300] rev 21211
i18n-pt_BR: synchronized with e9c2f76be74b
Mads Kiilerich <madski@unity3d.com> [Thu, 01 May 2014 16:47:50 +0200] rev 21210
rebase: empty revset should be a gentle no-op with exit code 1, not an error
Mads Kiilerich <madski@unity3d.com> [Thu, 01 May 2014 15:12:49 +0200] rev 21209
largefiles: better handling of log from other working directory (issue4236)
When invoked from another directory, the matchers m._cwd will be the absolute
path. The code for calculating relative path to .hglf did not consider that and
log would fail with weird errors and paths.
For now, just don't do any largefile magic when invoked from other directories.
Matt Mackall <mpm@selenic.com> [Thu, 01 May 2014 09:42:23 -0500] rev 21208
tests: add repository check for pyflakes test
If this test was run from a tarball with no Mercurial repository, it
would fail because 'hg manifest' didn't work.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 26 Apr 2014 00:38:02 -0700] rev 21207
spanset: directly use __contains__ instead of a lambda
Spanset are massively used in revset. First because the initial subset itself is
a repo wide spanset. We speed up the __and__ operation by getting rid of a
gratuitous lambda call. A more long terms solution would be to:
1. speed up operation between spansets,
2. have a special smartset for `all` revisions.
In the mean time, this is a very simple fix that buyback some of the performance
regression.
Below is performance benchmark for trival `and` operation between two spansets.
(Run on an unspecified fairly large repository.)
revset tip:0
2.9.2) wall 0.282543 comb 0.280000 user 0.260000 sys 0.020000 (best of 35)
before) wall 0.819181 comb 0.820000 user 0.820000 sys 0.000000 (best of 12)
after) wall 0.645358 comb 0.650000 user 0.650000 sys 0.000000 (best of 16)
Proof of concept implementation of an `all` smartset brings this to 0.10 but it's
too invasive for stable.
Durham Goode <durham@fb.com> [Wed, 30 Apr 2014 15:36:38 -0700] rev 21206
transaction: fix file descriptor leak for journal.backupfiles
The journal.backupfiles descriptor wasn't being closed. This resulted in
hgsubversion test runs having a bagillion descriptors open, which crashed on
platforms with low open file limits (like OSX).
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 25 Apr 2014 18:00:07 -0700] rev 21205
revset: also inline spanset._contained in __len__
For consistency with what happen in `__contains__`, we inline the range test
into `__len__` too.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 28 Apr 2014 15:15:36 -0700] rev 21204
revset: inline spanset containment check (fix perf regression)
Calling a function is super expensive in python. We inline the trivial range
comparison to get back to more sensible performance on common revset operation.
Benchmark result below:
Revision mapping:
0) 3f83fc5cfe71 2.9.2 release
1) bcfd44abad93 current @
2) This revision
revset #0: public()
0) wall 0.010890 comb 0.010000 user 0.010000 sys 0.000000 (best of 201)
1) wall 0.012109 comb 0.010000 user 0.010000 sys 0.000000 (best of 199)
2) wall 0.012211 comb 0.020000 user 0.020000 sys 0.000000 (best of 197)
revset #1: :10000 and public()
0) wall 0.007141 comb 0.010000 user 0.010000 sys 0.000000 (best of 361)
1) wall 0.014139 comb 0.010000 user 0.010000 sys 0.000000 (best of 186)
2) wall 0.008334 comb 0.010000 user 0.010000 sys 0.000000 (best of 308)
revset #2: draft()
0) wall 0.009610 comb 0.010000 user 0.010000 sys 0.000000 (best of 279)
1) wall 0.010942 comb 0.010000 user 0.010000 sys 0.000000 (best of 243)
2) wall 0.011036 comb 0.010000 user 0.010000 sys 0.000000 (best of 239)
revset #3: :10000 and draft()
0) wall 0.006852 comb 0.010000 user 0.010000 sys 0.000000 (best of 383)
1) wall 0.014641 comb 0.010000 user 0.010000 sys 0.000000 (best of 183)
2) wall 0.008314 comb 0.010000 user 0.010000 sys 0.000000 (best of 299)
We can see this changeset gains back the regression for `and` operation on
spanset. We are still a bit slowerfor the `public()` and `draft()`. Predicates
not touched by this changeset.
Matt Mackall <mpm@selenic.com> [Wed, 30 Apr 2014 14:19:01 -0500] rev 21203
ancestor: silence multiple ancestor warning outside of merge (issue4234)
The current situation is a bit of a layering violation as
merge-specific knowledge is pushed down to lower layers and leaks
merge assumptions into other code paths.
Here, we simply silence the warning with a hack. Both the warning and
the hack will probably go away in the near future when bid merge is
made the default.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 25 Apr 2014 13:44:51 -0700] rev 21202
revsetbenchmark: fix error raising
We want to display the commands, not all arguments of the function. (The old
code actually crash, failing to joining a list of lists.)
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 28 Apr 2014 16:28:52 -0700] rev 21201
revset: fix revision filtering in spanset.contains (regression)
The argument is `x` but the variable tested for filtering is `rev`. `rev`
happens to be a revset methods, ... never part of the filtered revs. This
method is now using `rev` for everything.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 28 Apr 2014 17:25:36 -0700] rev 21200
graft: do not use `.remove` on a smart set (regression)
Revset calls use to return a list. Graft use to mutate that list. We cannot do
this anymore leading to a crash when grafting multiple changeset with a revset.
File ".../mercurial/commands.py", line 3117, in graft
revs.remove(rev)
AttributeError: '_addset' object has no attribute 'remove'
We are late in code-freeze so we make the shortest possible fix by turning it
back to a list.
Greg Hurrell <glh@fb.com> [Mon, 28 Apr 2014 15:09:23 -0700] rev 21199
help: clarify distinction among `contains`/`file`/`filelog`
For a Mercurial new-comer, the distinction between `contains(x)`,
`file(x)`, and `filelog(x)` in the "revsets" help page may not be
obvious. This commit tries to make things more obvious (text based on
an explanation from Matt in an FB group thread).
Mads Kiilerich <madski@unity3d.com> [Thu, 24 Apr 2014 16:47:22 +0200] rev 21198
discovery: don't report all "unsynced" remote heads (issue4230)
8a9e0b523d2d made discovery more helpful - too helpful for some extreme use
cases.
Instead, we arbitrarily limit the list it at 4 and add 'or more'.
Julien Cristau <julien.cristau@logilab.fr> [Wed, 23 Apr 2014 13:51:35 +0200] rev 21197
rebase: don't abort if we're asked to rebase an empty revset
The documentation says we exit 1 if we have nothing to do, so avoid
breaking that contract when we're passed an empty revset.
This was changed in http://www.selenic.com/hg/rev/a259f7b488ab to
improve the error message; keep the improved message, just not the
abort.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 25 Apr 2014 22:34:09 -0400] rev 21196
largefiles: remove directories emptied after their files are moved (issue3515)
Yuya Nishihara <yuya@tcha.org> [Sat, 26 Apr 2014 18:13:06 +0900] rev 21195
cmdserver: forcibly use L channel to read password input (issue3161)
Command server is designed to use the channel protocol even if the server
process is accessible to tty, whereas vanilla hg should be able to read
password from tty in that case. So it isn't enough to swap sys.stdin:
# works only if the server process is detached from the console
sys.stdin = self.fin
getpass.getpass('')
sys.stdin = oldin
or test isatty:
# vanilla hg can't talk to tty if stdin is redirected
if self._isatty(self.fin):
return getpass.getpass('')
else:
...
Since ui.nontty flag is undocumented and command-server channels don't provide
isatty(), this change won't affect the other uses of ui._isatty().
issue3161 also suggests to provide some context of messages. I think it can
be implemented by using the generic templating function.
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Apr 2014 12:37:36 +0900] rev 21194
killdaemons: correct typo of _check() function caught by pyflakes
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Apr 2014 12:35:50 +0900] rev 21193
win32: add missing definition of _ERROR_NO_MORE_FILES caught by pyflakes
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Apr 2014 12:35:02 +0900] rev 21192
exchange: fix invalid reference to bundle2.UnknownPartError caught by pyflakes
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Apr 2014 11:02:40 +0900] rev 21191
match: fix NameError 'pat' on overflow of regex pattern length
'pat' was renamed to 'regex' in 9d28fd795215.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Apr 2014 15:09:48 +0900] rev 21190
color: add missing handling of stderr capture introduced by 350dc24a553d
It wouldn't raise exception without this change, but _bufferstates was wrong
because of missing _bufferstates.pop() in colorui.popbuffer().
Javi Merino <cibervicho@gmail.com> [Wed, 23 Apr 2014 20:23:30 +0100] rev 21189
hgweb: replace excanvas.js with a newer version
The current version of excanvas is unknown. Substitute it with the
latest version from the excanvas website:
http://code.google.com/p/explorercanvas/
Instead of using the "compiled" version, just use the readable one.
Mads Kiilerich <madski@unity3d.com> [Wed, 23 Apr 2014 23:29:55 +0200] rev 21188
httppeer: reintroduce _abort that accidentally was removed in 167047ba3cfa
Including the missing test coverage that would have caught it.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 16:13:15 -0700] rev 21187
bundle2: gracefully handle hook abort
We make sure any exceptions raised during the whole span of handling bundle2
processing are decorated. This let us catch exceptions raised by hooks prior to
transaction commit.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 17:51:58 -0700] rev 21186
bundle2: gracefully handle PushRaced error during unbundle
Same drill again. We catch the PushRaced error, check if it cames from
a bundle2 processing, if so we turn it into a bundle2 with a part
transporting error information to be reraised client side.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 20:04:54 -0700] rev 21185
bundle2: add an error message to push race error
Errors with no explanations makes my uncle Bob sad.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 18:59:09 -0700] rev 21184
bundle2: fix raising errors during heads checking
If the heads on the server differ from the ones reported seen by the client at
bundle time, we raise a PushRaced exception. However, the part raising the
exception was broken.
To fix it, we move the PushRaced class in the error module so it can be
accessible everywhere without an import cycle.
A test is also added to prevent regression.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 16:02:03 -0700] rev 21183
bundle2: gracefully handle UnknownPartError during unbundle
Same as for Abort error, we catch the error, encode it into a bundle2 reply
(expected by the client) and stream this reply. The client processing of the
error will raise the exception again.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 22 Apr 2014 11:41:34 -0700] rev 21182
bundle2: catch UnknownPartError during local push
When doing local push, UnknownPartError from the server will be raised directly
to the client. We need to catch them too.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 19:43:01 -0700] rev 21181
bundle2: catch UnknownPartError during pull
We narrow the exception catching while pulling.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 19:42:51 -0700] rev 21180
bundle2: catch UnknownPartError during push
We narrow the exception catching while unbundling the push reply.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 19:42:40 -0700] rev 21179
bundle2: use a more specific UnknownPartError when no handler is found
KeyError is very generic, we need something more specific for proper error
handling.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 15:59:55 -0700] rev 21178
bundle2: make error testing more modular
We have more than Abort to test.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 21 Apr 2014 15:48:52 -0700] rev 21177
bundle2: gracefully handle abort during unbundle
Clients expect a bundle2 reply to their bundle2 submission. So we
catch the Abort error and turn it into a bundle2 containing a part
transporting the exception data. The unbundling of this reply will
raise the error again.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 22 Apr 2014 11:22:41 -0700] rev 21176
bundle2: decorate exception raised during bundle processing
This is a small hack to help us do some graceful error handling in bundle2
without major refactoring. See embedded comment for details.
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 22 Apr 2014 10:14:16 -0300] rev 21175
histedit, i18n: replace '+' with concatenation to make hggettext happy
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 22 Apr 2014 10:12:21 -0300] rev 21174
commands: fix typo in --graph description
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 22 Apr 2014 10:12:13 -0300] rev 21173
revset, i18n: add translator comment to "only"
Mads Kiilerich <madski@unity3d.com> [Mon, 21 Apr 2014 20:24:54 +0200] rev 21172
merge: improve notes for listing the bids for ambiguous merges
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Apr 2014 13:33:20 +0200] rev 21171
merge: tell the user when we are using bid merge
Bid merge is a new rarely used feature that the user explicitly enabled - we
should tell/warn when the user actually is using it, just like we tell when we
not are using it.
Give a message like
note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
Mads Kiilerich <madski@unity3d.com> [Mon, 21 Apr 2014 20:22:14 +0200] rev 21170
merge: fix stray character in bid merge message
Mads Kiilerich <madski@unity3d.com> [Mon, 21 Apr 2014 20:18:42 +0200] rev 21169
tests: better test coverage for bid merge
Martin Geisler's test case revealed the previous message argument error.
Mads Kiilerich <madski@unity3d.com> [Mon, 21 Apr 2014 19:53:19 +0200] rev 21168
merge: fix wrong number of arguments for bid merge message
Matt Mackall <mpm@selenic.com> [Mon, 21 Apr 2014 15:08:39 -0500] rev 21167
merge: fix test failures with new merge code on OS X
The case collision checker was missing a op entry for 'k'eep.
Martin Geisler <martin@geisler.net> [Sat, 19 Apr 2014 20:12:53 +0200] rev 21166
obsolete: fix one-element tuple in module docstring
Martin Geisler <martin@geisler.net> [Sat, 19 Apr 2014 19:53:46 +0200] rev 21165
obsolete: let N denote number of obsoleted changestes in a marker
The number of obsoleted changesets is referred to as N later in the
docstring.
Martin Geisler <martin@geisler.net> [Sat, 19 Apr 2014 19:52:09 +0200] rev 21164
obsolete: fix language and grammar in module docstring
Isaac Jurado <diptongo@gmail.com> [Sat, 19 Apr 2014 15:11:25 +0200] rev 21163
churn: compute padding with unicode strings
Most UTF-8 aware terminals convert multibyte sequences into a single displayed
characters. Because the first column is padded by counting bytes, the second
column is not perfectly aligned in the presence of non ASCII characters.
Matt Mackall <mpm@selenic.com> [Thu, 17 Apr 2014 19:39:04 -0400] rev 21162
Added signature for changeset 564f55b25122
Matt Mackall <mpm@selenic.com> [Thu, 17 Apr 2014 19:39:00 -0400] rev 21161
Added tag 3.0-rc for changeset 564f55b25122
Matt Mackall <mpm@selenic.com> [Thu, 17 Apr 2014 19:36:17 -0400] rev 21160
merge default into stable for 3.0 code freeze
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 16:56:15 -0400] rev 21159
bundle2: allow extensions to extend the getbundle request
We want extensions to be able to request extra parts.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:32:34 -0400] rev 21158
bundle2: add a way to add parts during a `getbundle` request
We add a hook function to let extensions add parts to the bundle.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:25:50 -0400] rev 21157
getbundle: pass arbitrary arguments all along the call chain
The wireprotocol command accepts arbitrary arguments, we are now passing such
arguments down the call chain.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:59:28 -0400] rev 21156
bundle2: call a hook after the transaction is closed
We call a dedicated hook right after closing the transaction. This will let
people react to the transaction with all the information in hand. This hook is
experimental and will not survive in future versions.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:21:39 -0400] rev 21155
bundle2: call a hook prior to closing the transaction
We call a dedicated hook right before closing the transaction. This will let
people abort unbundling with all the information in hand. This hook is
experimental and will not survive in future versions.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:16:21 -0400] rev 21154
bundle2: inform transaction that we are in a bundle2 unbundle
That way, hooks called during the unbundle process are aware that a bigger picture
is going on.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:46:26 -0400] rev 21153
changegroup: use tr.hookargs when calling changegroup hooks
So that other parties using the transaction can put information in our hook
calls.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:15:02 -0400] rev 21152
changegroup: use tr.hookargs when calling pretxnchangegroup hooks
So that other parties using the transaction can put information in our hook
calls.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:09:20 -0400] rev 21151
addchangegroup: register data in tr.hookargs
We are registering data related to the process into the transaction hook data.
This lets other parties using the same transaction get informed of the
addchangegroup result.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 17:04:59 -0400] rev 21150
transaction: add a notion of hook arguments
It is now possible to register parameters to be used when invoking hooks in this
transaction. This will cope with the fact that bundle2 adds multiple data types
in a single transaction.
Do not expect any wide and consistent usages of this in the next release. This
will be used by bundle2 experiments first. It will be made better for the release
after.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 16:54:15 -0400] rev 21149
bundle2: allow extensions to plug into the push process
Extensions are offered functions to add parts and process their results.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 16:04:58 -0400] rev 21148
bundle2: require both client and server to opt in
Even if the server is bundle2-enabled, the client now has to opt-in in the
config too.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 16:01:58 -0400] rev 21147
bundle2: move bundle2 config option to section "experimental"
We highlight the fact that this is experimental by moving it to an "experimental"
section, and we match the config name with the server capability name
`bundle2-exp`.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 15:45:12 -0400] rev 21146
bundle2: move all parts into a `bx2` namespace
All currently core parts are moved to a `bx2` namespace (for "bundle 2
experimental"). This should avoid conflicts between the final stable
format and the one about to be released.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 15:33:17 -0400] rev 21145
bundle2: rename server capability to bundle2-exp
For the same reason, we advertise this bundle2 implementation and format as
experimental. This will leave room for field testing in 3.0 but won't conflict
with a stable implementation in 3.1.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 15:27:54 -0400] rev 21144
bundle2: use HG2X in the header
The current implementation of bundle2 is still very experimental and the 3.0
freeze is yesterday. The current bundle2 format has never been field-tested, so
we rename the header to HG2X. This leaves the HG20 header available for real
usage as a stable format in Mercurial 3.1.
We won't guarantee that future mercurial versions will keep supporting this
`HG2X` format.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 02:01:38 -0400] rev 21143
bundle2: transmit capabilities to getbundle during pull
Bundle2 capabilities of the client are sent to the server in the bundlecaps
argument of `getbundle`.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 14:37:24 -0400] rev 21142
bundle2: include client capabilities in the pushed bundle
The necessary data is now included in the `replycaps` part.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 01:49:20 -0400] rev 21141
bundle2: advertise bundle2 caps in server capabilities
We can now retrieve them from the server during push. The capabilities are
encoded the same way as in `replycaps` part (with an extra layer of urlquoting
to escape separators).
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 01:50:28 -0400] rev 21140
bundle2: add bundle2caps dict on localrepo object
This dictionary will hold bundle2-related capabilities.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 01:44:53 -0400] rev 21139
bundle2: capabilities encoding
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 01:09:05 -0400] rev 21138
bundle2: extract capabilities decoding
We'll need to reuse this in more places (at least pull and push).
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 01:03:33 -0400] rev 21137
bundle2: protect capabilities name and values with url quoting
This lift limitations of the text based encoding.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 11:44:49 -0400] rev 21136
bundle2: support for capabilities with values
The capabilities attributes of `bundle20` is now a dictionary and the reply caps
can encode capabilities with values.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Apr 2014 11:32:30 -0400] rev 21135
bundle2: add capabilities support in `replycaps` part
This part now contains a list of supported capabilities.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 23:55:59 -0400] rev 21134
bundle2: adds a capabilities attribute on bundler20
This attribute conveys the capabilities supported by the destination of the
bundle. It is used to decide which parts to include in the bundle.
This is currently a set but will probably be turned into a dictionary to allow
capabilities with values.