Tue, 31 Mar 2015 08:31:42 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 31 Mar 2015 08:31:42 -0500] rev 24533
merge with stable
Tue, 31 Mar 2015 08:04:42 -0500 tags: remove scary message about corrupt tags cache
Matt Mackall <mpm@selenic.com> [Tue, 31 Mar 2015 08:04:42 -0500] rev 24532
tags: remove scary message about corrupt tags cache Caches should be transparent. If a cache is damaged, it should silently be rebuilt, much like if it were invalid. No one seems to have ever hit this in the wild.
Sun, 29 Mar 2015 19:15:04 +0200 hgk: use switch instead of a less efficient if/elseif/if
Andrew Shadura <andrew@shadura.me> [Sun, 29 Mar 2015 19:15:04 +0200] rev 24531
hgk: use switch instead of a less efficient if/elseif/if
Sun, 29 Mar 2015 19:12:08 +0200 hgk: set distinct fill and outline colour for non-public and obsolete changesets
Andrew Shadura <andrew@shadura.me> [Sun, 29 Mar 2015 19:12:08 +0200] rev 24530
hgk: set distinct fill and outline colour for non-public and obsolete changesets
Sun, 29 Mar 2015 18:44:53 +0200 hgk: show secret changesets differently (shape and label)
Andrew Shadura <andrew@shadura.me> [Sun, 29 Mar 2015 18:44:53 +0200] rev 24529
hgk: show secret changesets differently (shape and label)
Fri, 27 Mar 2015 20:41:30 -0700 manifestv2: implement slow readdelta() without revdiff
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 20:41:30 -0700] rev 24528
manifestv2: implement slow readdelta() without revdiff For manifest v2, revlog.revdiff() usually does not provide enough information to produce a manifest. As a simple workaround, implement readdelta() by reading both the old and the new manifest and use manifest.diff() to find the difference. This is several times slower than the current readdelta() for v1 manifests, but there seems to be no other simple option, and this is still much faster than returning the full manifest (at least for verify).
Fri, 27 Mar 2015 17:07:24 -0700 manifestv2: disable fastdelta optimization
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 17:07:24 -0700] rev 24527
manifestv2: disable fastdelta optimization We may add support for the fastdelta optimization for manifest v2 at a later point, but let's disable it for now, so we don't have to implement it right away.
Fri, 27 Mar 2015 16:19:44 -0700 manifestv2: add (unused) config option
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 16:19:44 -0700] rev 24526
manifestv2: add (unused) config option With tree manifests, hashes will change anyway, so now is a good time to also take up the old plans of a new manifest format. While there should be little or no reason to use tree manifests with the current manifest format (v1) once the new format (v2) is supported, we'll try to keep the two dimensions (flat/tree and v1/v2) separate. In preparation for adding a the new format, let's add configuration for it and propagate that configuration to the manifest revlog subclass. The new configuration ("experimental.manifestv2") says in what format to write the manifest data. We may later add other configuration to choose how to hash it, either keeping the v1 hash for BC or hashing the v2 content. See http://mercurial.selenic.com/wiki/ManifestV2Plan for more details.
Fri, 27 Mar 2015 15:37:46 -0700 manifest: extract method for creating manifest text
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 15:37:46 -0700] rev 24525
manifest: extract method for creating manifest text Similar to the previous change, this one extracts a method for producing a manifest text from an iterator over (path, node, flags) tuples.
Fri, 27 Mar 2015 15:02:43 -0700 manifest: extract method for parsing manifest
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 15:02:43 -0700] rev 24524
manifest: extract method for parsing manifest By extracting a method that generates (path, node, flags) tuples, we can reuse the code for parsing a manifest without doing it via a _lazymanifest like treemanifest currently does. It also prepares for parsing the new manifest format. Note that this makes parsing into treemanifest slower, since the parsing is now always done in pure Python. Since treemanifests will be expected (or even forced) to be used only with the new manifest format, parsing via _lazymanifest was not an option anyway.
Sun, 29 Mar 2015 18:28:48 -0700 dirstate._walkexplicit: don't bother normalizing '.'
Siddharth Agarwal <sid0@fb.com> [Sun, 29 Mar 2015 18:28:48 -0700] rev 24523
dirstate._walkexplicit: don't bother normalizing '.' The overwhelmingly common case is running commands like 'hg diff' with no arguments. Therefore the only file that'll be listed is the root directory. Normalizing that's just a waste of time. This means that for a plain 'hg diff' we'll never need to construct the foldmap, saving us a significant chunk of time. On case-insensitive HFS+ on OS X, for a large repository with over 200,000 files, this brings down 'hg diff' from 2.97 seconds to 2.36.
Sun, 29 Mar 2015 23:28:30 -0700 dirstate._walkexplicit: drop normpath calls
Siddharth Agarwal <sid0@fb.com> [Sun, 29 Mar 2015 23:28:30 -0700] rev 24522
dirstate._walkexplicit: drop normpath calls The paths the matcher returns are normalized already.
Sun, 29 Mar 2015 23:27:25 -0700 dirstate._walkexplicit: indicate root as '.', not ''
Siddharth Agarwal <sid0@fb.com> [Sun, 29 Mar 2015 23:27:25 -0700] rev 24521
dirstate._walkexplicit: indicate root as '.', not '' '.' is the canonical way to represent the root, and it's apparently the only transformation that normpath makes.
Mon, 30 Mar 2015 12:57:55 -0700 phases: add killswitch for native implementation
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Mar 2015 12:57:55 -0700] rev 24520
phases: add killswitch for native implementation
Mon, 30 Mar 2015 12:48:15 -0700 phases: move pure phase computation in a function
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Mar 2015 12:48:15 -0700] rev 24519
phases: move pure phase computation in a function
Tue, 24 Mar 2015 14:24:55 -0700 revset: add hook after tree parsing
Laurent Charignon <lcharignon@fb.com> [Tue, 24 Mar 2015 14:24:55 -0700] rev 24518
revset: add hook after tree parsing This will be useful to execute actions after the tree is parsed and before the revset returns a match. Finding symbols in the parse tree will later allow hashes of hidden revisions to work on the command line without the --hidden flag.
Mon, 30 Mar 2015 14:58:42 -0400 hgk: remove unused revlog import
Augie Fackler <augie@google.com> [Mon, 30 Mar 2015 14:58:42 -0400] rev 24517
hgk: remove unused revlog import
Sat, 28 Mar 2015 14:55:28 -0700 run-tests: obtain replacements inside Test._runcommand
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 14:55:28 -0700] rev 24516
run-tests: obtain replacements inside Test._runcommand Now that command running is part of Test, we no longer need to pass a list of replacements down through various call layers. The impetus for this change is to fetch replacements after command execution, not before. This will allow replacements to be defined as part of test execution.
Sat, 28 Mar 2015 21:33:47 +0100 hgk: remove no longer needed debug-rev-parse command
Andrew Shadura <andrew@shadura.me> [Sat, 28 Mar 2015 21:33:47 +0100] rev 24515
hgk: remove no longer needed debug-rev-parse command
Sat, 28 Mar 2015 21:24:57 +0100 hgk: remove no longer needed debug-config command
Andrew Shadura <andrew@shadura.me> [Sat, 28 Mar 2015 21:24:57 +0100] rev 24514
hgk: remove no longer needed debug-config command
Sat, 28 Mar 2015 20:05:01 +0100 hgk: display obsolete changesets in darkgrey
Andrew Shadura <andrew@shadura.me> [Sat, 28 Mar 2015 20:05:01 +0100] rev 24513
hgk: display obsolete changesets in darkgrey
Sat, 28 Mar 2015 19:36:21 +0100 hgk: pass --hidden switch to hg subprocesses when needed
Andrew Shadura <andrew@shadura.me> [Sat, 28 Mar 2015 19:36:21 +0100] rev 24512
hgk: pass --hidden switch to hg subprocesses when needed
Sat, 28 Mar 2015 19:34:03 +0100 hgk: remove repetitious (and wrong) command syntax descriptions
Andrew Shadura <andrew@shadura.me> [Sat, 28 Mar 2015 19:34:03 +0100] rev 24511
hgk: remove repetitious (and wrong) command syntax descriptions
Sat, 28 Mar 2015 14:28:22 -0700 run-tests: separate newline normalization from replacements
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 14:28:22 -0700] rev 24510
run-tests: separate newline normalization from replacements Upcoming patches will change how the replacements system works to make it more flexible. To prepare for this, eliminate the one-off use of replacements to perform newline normalization on Windows.
Sat, 28 Mar 2015 14:12:57 -0700 run-tests: remove arguments from Test._runcommand
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 14:12:57 -0700] rev 24509
run-tests: remove arguments from Test._runcommand Now that runcommand is part of the Test class, arguments that were previously coming from Test attributes can now be switched to lookups inline.
Sat, 28 Mar 2015 14:08:25 -0700 run-tests: move run into Test class
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 14:08:25 -0700] rev 24508
run-tests: move run into Test class Future patches will change how replacements work. Since the logic in run() is strongly tied to the operation of individual tests and since there is potential to make the implementation simpler by giving the function access to Test attributes, move it into Test.
Sat, 28 Mar 2015 19:39:03 -0700 run-tests: wait for test threads after first error
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 19:39:03 -0700] rev 24507
run-tests: wait for test threads after first error The test runner has the ability to stop on first error. Tests are executed in new Python threads. The test runner starts new threads when it has capacity to do so. Before this patch, the "stop on first error" logic would return immediately from the "run tests" function, without waiting on test threads to complete. There was thus a race between the test runner thread doing cleanup work and the test thread performing activity. For example, the test thread could be in the middle of executing a test shell script and the test runner could remove the test's temporary directory. Depending on timing, this could result in any number of output from the test runner. This patch eliminates the race condition by having the test runner explicitly wait for test threads to complete before continuing. I discovered this issue as I modified the test harness in a subsequent patch and was reliably able to tickle the race condition.
Sat, 28 Mar 2015 00:21:30 -0700 run-tests: report code coverage from source directory
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 00:21:30 -0700] rev 24506
run-tests: report code coverage from source directory As part of testing code coverage output, I noticed some files were being reported twice: there was an entry for the file in the install location and for the file in the source tree. I'm not sure why this is. But it resulted in under-reporting of coverage data since some lines weren't getting covered in both locations. I also noticed that files in the source directory and outside the "mercurial" and "hgext" packages were getting included in the coverage report. Cosmetically, this seemed odd to me. It's not difficult to filter paths from the report. But I figure this data can be useful (we could start reporting run-tests.py coverage, for example). This patch switches the coverage API to report code coverage from the source directory. It registers a path alias so that data from the install location is merged into data from the source directory. We now get merged results for files that were being reported in multiple locations. Since code coverage reporting now relies on the profiled install now being in sync with the source tree, an additional check to disallow code coverage when --with-hg is specified has been added. This should have been present before, as --local was previously disallowed for the same reasons. Merging the paths raises our aggregate line coverage from ~60 to 81%.
(0) -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 +3000 +10000 tip