Fri, 03 Apr 2015 23:12:21 -0400 test-subrepo-recursion: set progress.changedelay really high
Augie Fackler <augie@google.com> [Fri, 03 Apr 2015 23:12:21 -0400] rev 24612
test-subrepo-recursion: set progress.changedelay really high This avoids subtopics from showing up, which were introduced by my recent change that added progress bars to hardlink clones in some cases.
Fri, 03 Apr 2015 18:10:12 -0400 test-clone: fix test expectations on systems without hardlinks
Augie Fackler <augie@google.com> [Fri, 03 Apr 2015 18:10:12 -0400] rev 24611
test-clone: fix test expectations on systems without hardlinks
Wed, 01 Apr 2015 00:44:33 -0700 dirstate: use parsers.make_file_foldmap when available
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:44:33 -0700] rev 24610
dirstate: use parsers.make_file_foldmap when available This is a significant performance win on large repositories. perffilefoldmap: On Linux/gcc, on a test repo with over 500,000 files: before: wall 0.605021 comb 0.600000 user 0.560000 sys 0.040000 (best of 17) after: wall 0.280530 comb 0.280000 user 0.250000 sys 0.030000 (best of 35) On Mac OS X/clang, on a real-world repo with over 200,000 files: before: wall 0.281103 comb 0.280000 user 0.260000 sys 0.020000 (best of 34) after: wall 0.133622 comb 0.140000 user 0.120000 sys 0.020000 (best of 65) This visibly impacts status times on case-insensitive file systems. On the Mac OS X repo, status goes from 3.64 seconds to 3.50. With the third-party hgwatchman extension [1], 'hg status' on the same repo goes from 0.80 seconds to 0.65. [1] https://bitbucket.org/facebook/hgwatchman
Tue, 31 Mar 2015 23:32:27 -0700 parsers: add a C function to create a file foldmap
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 23:32:27 -0700] rev 24609
parsers: add a C function to create a file foldmap This is a hot path on case-insensitive filesystems -- it's guaranteed to be called every time 'hg status' is run. This is significantly faster than the equivalent Python code: see the following patch for numbers.
Thu, 02 Apr 2015 19:17:32 -0700 util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com> [Thu, 02 Apr 2015 19:17:32 -0700] rev 24608
util.h: define an enum for normcase specs These will be used in upcoming patches to efficiently create a dirstate foldmap.
Thu, 02 Apr 2015 19:13:50 -0700 perf: make measuring foldmap perf work again
Siddharth Agarwal <sid0@fb.com> [Thu, 02 Apr 2015 19:13:50 -0700] rev 24607
perf: make measuring foldmap perf work again Rev 25c1d3ca5ff6 split the foldmap into two, but I forgot to update perf for the changes.
Tue, 31 Mar 2015 23:22:03 -0700 parsers._asciitransform: also accept a fallback function
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 23:22:03 -0700] rev 24606
parsers._asciitransform: also accept a fallback function This function will be used in upcoming patches to provide a C implementation of the function to generate the foldmap.
Wed, 01 Apr 2015 00:38:56 -0700 util: add normcase spec and fallback
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:38:56 -0700] rev 24605
util: add normcase spec and fallback These will be used in upcoming patches to efficiently create a dirstate foldmap.
Fri, 03 Apr 2015 22:44:25 +0200 hgk: display committer name when set by hg-git
Andrew Shadura <andrew@shadura.me> [Fri, 03 Apr 2015 22:44:25 +0200] rev 24604
hgk: display committer name when set by hg-git
Sat, 14 Mar 2015 20:16:35 +0900 jsonchangeset: set manifest node to "null" for workingctx
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 20:16:35 +0900] rev 24603
jsonchangeset: set manifest node to "null" for workingctx Unlike changeset_printer, it does not hide the manifest field because JSON output will be parsed by machine where explicit "null" will be more useful than nothing.
Sat, 14 Mar 2015 20:15:40 +0900 jsonchangeset: set rev and node to "null" for workingctx
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 20:15:40 +0900] rev 24602
jsonchangeset: set rev and node to "null" for workingctx
Fri, 03 Apr 2015 21:36:39 +0900 templater: tell hggettext to collect help of template functions
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Apr 2015 21:36:39 +0900] rev 24601
templater: tell hggettext to collect help of template functions
Tue, 10 Mar 2015 09:57:42 -0700 treemanifest: disable readdelta optimization
Martin von Zweigbergk <martinvonz@google.com> [Tue, 10 Mar 2015 09:57:42 -0700] rev 24600
treemanifest: disable readdelta optimization When tree manifests are stored with one revlog per directory and loaded lazily, it's unclear how much readdelta will help. If only a few files change, then only a small part of the full manifest will be loaded, and the delta chains should also be shorter for tree manifests. Therefore, let's disable readdelta for tree manifests for now.
Mon, 30 Mar 2015 15:38:24 -0700 phases: make two functions private for phase computation
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Mar 2015 15:38:24 -0700] rev 24599
phases: make two functions private for phase computation
Wed, 01 Apr 2015 00:31:41 -0700 windows: define normcase spec and fallback
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:31:41 -0700] rev 24598
windows: define normcase spec and fallback These will be used in upcoming patches to efficiently create a dirstate foldmap.
Wed, 01 Apr 2015 00:30:41 -0700 encoding.upper: factor out fallback code
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:30:41 -0700] rev 24597
encoding.upper: factor out fallback code This will be used as the fallback function on Windows.
Wed, 01 Apr 2015 00:29:22 -0700 cygwin: define normcase spec and fallback
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:29:22 -0700] rev 24596
cygwin: define normcase spec and fallback These will be used in upcoming patches to efficiently create a dirstate foldmap. The Cygwin normcase behavior is more complicated than just a simple lowercasing or uppercasing. That's why we specify 'other'.
Tue, 31 Mar 2015 23:30:19 -0700 darwin: define normcase spec and fallback
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 23:30:19 -0700] rev 24595
darwin: define normcase spec and fallback These will be used in upcoming patches to efficiently create a dirstate foldmap.
Wed, 01 Apr 2015 00:26:07 -0700 posix: define normcase spec and fallback
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:26:07 -0700] rev 24594
posix: define normcase spec and fallback These will be used in upcoming patches to efficiently create a dirstate foldmap.
Wed, 01 Apr 2015 00:21:10 -0700 encoding: define an enum that specifies what normcase does to ASCII strings
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:21:10 -0700] rev 24593
encoding: define an enum that specifies what normcase does to ASCII strings For C code we don't want to pay the cost of calling into a Python function for the common case of ASCII filenames. However, while on most POSIX platforms we normalize filenames by lowercasing them, on Windows we uppercase them. We define an enum here indicating the direction that filenames should be normalized as. Some platforms (notably Cygwin) have more complicated normalization behavior -- we add a case for that too. In upcoming patches we'll also define a fallback function that is called if the string has non-ASCII bytes. This enum will be replicated in the C code to make foldmaps. There's unfortunately no nice way to avoid that -- we can't have encoding import parsers because of import cycles. One way might be to have parsers import encoding, but accessing Python modules from C code is just awkward. The name 'normcasespecs' was chosen to indicate that this is merely an integer that specifies a behavior, not a function. The name was pluralized since in upcoming patches we'll introduce 'normcasespec' which will be one of these values.
Thu, 02 Apr 2015 16:51:00 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 02 Apr 2015 16:51:00 -0500] rev 24592
merge with stable
Wed, 01 Apr 2015 22:24:03 -0700 json: implement {help} template
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 01 Apr 2015 22:24:03 -0700] rev 24591
json: implement {help} template We should consider add HTML rendering of the RST into the response as a follow-up. I attempted to do this, but there was an empty array returned by the rstdoc() template function. Not sure what's going on. Will deal with it later.
Wed, 01 Apr 2015 22:16:05 -0700 json: implement {helptopics} template
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 01 Apr 2015 22:16:05 -0700] rev 24590
json: implement {helptopics} template
Wed, 01 Apr 2015 22:04:03 -0700 json: implement {manifest} template
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 01 Apr 2015 22:04:03 -0700] rev 24589
json: implement {manifest} template Property naming was borrowed from `hg files -Tjson`. We omit branch because, again, representation of branches in this template is wonky.
Tue, 31 Mar 2015 22:53:48 -0700 json: implement {shortlog} and {changelog} templates
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2015 22:53:48 -0700] rev 24588
json: implement {shortlog} and {changelog} templates These are the same dispatch function under the hood. The only difference is the default number of entries to render and the template to use. So it makes sense to use a shared template. Format for {changelistentry} is similar to {changeset}. However, there are differences to argument names and their values preventing us from (easily) using the same template. (Perhaps there is room to consolidate the templates as a follow-up.) We're currently not recording some data in {changelistentry} that exists in {changeset}. This includes the branch name. This should be added in a follow-up. For now, something is better than nothing.
Wed, 01 Apr 2015 20:23:58 -0700 help: populate template functions via docstrings
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 01 Apr 2015 20:23:58 -0700] rev 24587
help: populate template functions via docstrings We do this for revsets, template keywrods, and template filters. Now we do it for template functions as well.
Wed, 01 Apr 2015 20:19:43 -0700 templater: add consistent docstrings to functions
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 01 Apr 2015 20:19:43 -0700] rev 24586
templater: add consistent docstrings to functions The content of "hg help templating" is largely derived from docstrings on functions providing functionality. Template functions are the long holdout. Prepare for generating them dynamically by defining docstrings for all template functions. There are numerous ways these docs could be improved. Right now, the help output simply shows function names and arguments. So literally any accurate data is better than what is there now.
Sat, 14 Mar 2015 17:33:22 +0900 changeset_printer: hide manifest node for workingctx
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 17:33:22 +0900] rev 24585
changeset_printer: hide manifest node for workingctx Because workingctx has no manifest, it makes sense to hide "manifest:" row completely.
Sat, 14 Mar 2015 20:01:30 +0900 changeset_printer: display p1rev:p1node with "+" suffix for workingctx
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 20:01:30 +0900] rev 24584
changeset_printer: display p1rev:p1node with "+" suffix for workingctx Still templater can't handle workingctx, which will be fixed later.
Sat, 14 Mar 2015 17:29:48 +0900 changeset_printer: handle workingctx in _meaningful_parentrevs()
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 17:29:48 +0900] rev 24583
changeset_printer: handle workingctx in _meaningful_parentrevs()
Sat, 14 Mar 2015 19:38:59 +0900 scmutil: add function to help handling workingctx in arithmetic operation
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 19:38:59 +0900] rev 24582
scmutil: add function to help handling workingctx in arithmetic operation It's unfortunate that workingctx revision is None, which doesn't work well in arithmetic operation or comparison. This function is trivial but will be used in several places.
Thu, 02 Apr 2015 08:18:33 +0200 tests: handle deleted .hg directory (git 2.2.0 and higher) (issue4585)
Mathias De Maré <mathias.demare@gmail.com> [Thu, 02 Apr 2015 08:18:33 +0200] rev 24581
tests: handle deleted .hg directory (git 2.2.0 and higher) (issue4585) In git 2.2.0 and higher, removing files and directories is changed: removing an object that does not exist returns success rather than failure. As a result, even though .hg/hgrc does not exist, success is returned and the .hg/ directory is removed. To handle this correctly, use 'rm -rf' to allow successful removing for all git versions. The exact changeset where this was introduced in git: 1054af7d04aef64378d69a0496b45cdbf6a0bef2 wrapper.c: remove/unlink_or_warn: simplify, treat ENOENT as success
Thu, 02 Apr 2015 21:29:05 +0900 hgweb: resurrect <span> tag on diffline to fix rendering in monoblue style stable
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Apr 2015 21:29:05 +0900] rev 24580
hgweb: resurrect <span> tag on diffline to fix rendering in monoblue style It was removed at 606a3bf82e30 as a useless tag, but it is necessary to apply "div.diff pre span" style. http://selenic.com/repo/hg/rev/606a3bf82e30?style=monoblue
Wed, 01 Apr 2015 20:38:36 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Apr 2015 20:38:36 -0500] rev 24579
merge with stable
Tue, 31 Mar 2015 15:22:09 -0700 encoding: use parsers.asciiupper when available
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 15:22:09 -0700] rev 24578
encoding: use parsers.asciiupper when available This is used on Windows and Cygwin, and the gains from this are expected to be similar to what was seen in 80f2b63dd83a.
Tue, 31 Mar 2015 13:46:21 -0700 parsers: introduce an asciiupper function
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 13:46:21 -0700] rev 24577
parsers: introduce an asciiupper function
Tue, 31 Mar 2015 10:28:17 -0700 parsers: make _asciilower a generic _asciitransform function
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 10:28:17 -0700] rev 24576
parsers: make _asciilower a generic _asciitransform function We can now pass in whatever table we like. For example, an upcoming patch will introduce asciiupper.
Wed, 01 Apr 2015 13:58:51 -0700 parsers._asciilower: use an explicit return object
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 13:58:51 -0700] rev 24575
parsers._asciilower: use an explicit return object No functional change, but this will make upcoming patches cleaner.
Tue, 31 Mar 2015 10:25:29 -0700 parsers: factor out most of asciilower into an internal function
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 10:25:29 -0700] rev 24574
parsers: factor out most of asciilower into an internal function We're going to reuse this in upcoming patches. The change to Py_ssize_t is necessary because parsers.c doesn't define PY_SSIZE_T_CLEAN. That macro changes the behavior of PyArg_ParseTuple but not PyBytes_GET_SIZE.
Tue, 31 Mar 2015 14:01:33 -0700 manifestv2: add support for writing new manifest format
Martin von Zweigbergk <martinvonz@google.com> [Tue, 31 Mar 2015 14:01:33 -0700] rev 24573
manifestv2: add support for writing new manifest format If .hg/requires has 'manifestv2', the manifest will be written using the new format.
Fri, 27 Mar 2015 22:26:41 -0700 manifestv2: add support for reading new manifest format
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 22:26:41 -0700] rev 24572
manifestv2: add support for reading new manifest format The new manifest format is designed to be smaller, in particular to produce smaller deltas. It stores hashes in binary and puts the hash on a new line (for smaller deltas). It also uses stem compression to save space for long paths. The format has room for metadata, but that's there only for future-proofing. The parser thus accepts any metadata and throws it away. For more information, see http://mercurial.selenic.com/wiki/ManifestV2Plan. The current manifest format doesn't allow an empty filename, so we use an empty filename on the first line to tell a manifest of the new format from the old. Since we still never write manifests in the new format, the added code is unused, but it is tested by test-manifest.py.
Tue, 31 Mar 2015 22:45:45 -0700 manifestv2: set requires at repo creation time
Martin von Zweigbergk <martinvonz@google.com> [Tue, 31 Mar 2015 22:45:45 -0700] rev 24571
manifestv2: set requires at repo creation time While it should be safe to switch to the new manifest format on an existing repo, let's keep it simple for now and make the configuration have any effect only at repo creation time. If the configuration is enabled then (at repo creation), we add an entry to requires and read that instead of the configuration from then on.
Tue, 31 Mar 2015 15:06:55 -0700 test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com> [Tue, 31 Mar 2015 15:06:55 -0700] rev 24570
test-manifest: extract constants for binary hashes The binary hashes are used quite frequently, so let's extract constants for them so we don't have to repeat binascii.unhexlify() so often.
Tue, 31 Mar 2015 14:46:05 -0700 test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com> [Tue, 31 Mar 2015 14:46:05 -0700] rev 24569
test-manifest: create constant for empty manifest For symmetry with manifest v2, once we add that, let's extract a constant for the empty v1 manifest.
Mon, 30 Mar 2015 23:25:55 +0900 patchbomb: factor out scmutil.revrange() calls
Yuya Nishihara <yuya@tcha.org> [Mon, 30 Mar 2015 23:25:55 +0900] rev 24568
patchbomb: factor out scmutil.revrange() calls This allows us to access the calculated revs in patchbomb() function.
Tue, 31 Mar 2015 00:52:17 +0900 patchbomb: return outgoing revs as a smartset
Yuya Nishihara <yuya@tcha.org> [Tue, 31 Mar 2015 00:52:17 +0900] rev 24567
patchbomb: return outgoing revs as a smartset This helps to factor out scmutil.revrange() calls from _getpatches() and _getoutgoing(). In future patches, a smartset will be passed to _getpatches().
Mon, 30 Mar 2015 23:54:29 +0900 templatefilters: add "upper" and "lower" for case conversion
Yuya Nishihara <yuya@tcha.org> [Mon, 30 Mar 2015 23:54:29 +0900] rev 24566
templatefilters: add "upper" and "lower" for case conversion Typically it will be used in patchbomb's flag template, which will be implemented by future patches.
Wed, 01 Apr 2015 12:50:10 -0700 repoview: improve compute staticblockers perf
Durham Goode <durham@fb.com> [Wed, 01 Apr 2015 12:50:10 -0700] rev 24565
repoview: improve compute staticblockers perf Previously we would compute the repoview's static blockers by finding all the children of hidden commits that were not hidden. This was O(number of commits since first hidden change) since 'children' requires walking every commit from tip until the first hidden change. The new algorithm walks all heads down until it sees a public commit. This makes the computation O(number of draft) commits, which is much faster in large repositories with a large number of commits and a low number of drafts. On a large repo with 1000+ obsolete markers and the earliest draft commit around tip~200000, this improves computehidden perf by 200x (2s to 0.01s).
Tue, 31 Mar 2015 22:29:12 -0700 hgweb: add phase to {changeset} template
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2015 22:29:12 -0700] rev 24564
hgweb: add phase to {changeset} template It's pretty surprising phase wasn't part of this template call already. We now expose {phase} to the {changeset} template and we expose this data to JSON. This brings JSON output in line with the output from `hg log -Tjson`. The lone exception is hweb doesn't print the numeric rev. As has been stated previously, I don't believe hgweb should be exposing these unstable identifiers. (We can add them later if we really want them.) There is still work to bring hgweb in parity with --verbose and --debug output from the CLI.
Tue, 31 Mar 2015 22:35:12 -0700 json: implement {changeset} template
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2015 22:35:12 -0700] rev 24563
json: implement {changeset} template Output only contains basic changeset information for the moment. The format is compatible with `hg log -Tjson`.
Tue, 31 Mar 2015 21:49:10 -0700 test-hgweb-json: fix URL for file revision tests
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2015 21:49:10 -0700] rev 24562
test-hgweb-json: fix URL for file revision tests Likely a copy and paste fail.
Tue, 31 Mar 2015 19:34:37 -0700 dirstate._normalize: don't construct dirfoldmap if not necessary
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 19:34:37 -0700] rev 24561
dirstate._normalize: don't construct dirfoldmap if not necessary Constructing the dirfoldmap is expensive, so if there's a hit in the filefoldmap, don't construct the directory foldmap. This helps with cases like 'hg add foo' where foo is already tracked: for a large repository, the operation goes from 1.5 seconds to 1.2 (which is still way too much, but that's a matter for another day.)
Tue, 31 Mar 2015 19:29:39 -0700 dirstate.walk: don't keep track of normalized files in parallel
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 19:29:39 -0700] rev 24560
dirstate.walk: don't keep track of normalized files in parallel Rev 2bb13f2b778c changed the semantics of the work list to store (normalized, non-normalized) pairs. All the tuple creation and destruction hurts perf: on a large repo on OS X, 'hg status' went from 3.62 seconds to 3.78. It also is unnecessary in most cases: - it is clearly unnecessary on case-sensitive filesystems. - it is also unnecessary when filenames have been read off of disk rather than being supplied by the user. The only case where the non-normalized case is required at all is when the file is unknown. To eliminate most of the perf cost, keep trace of whether the directory needs to be normalized at all with a boolean called 'alreadynormed'. Pay the cost of directory normalization only when necessary. For the above large repo, 'hg status' goes to 3.63 seconds.
Tue, 31 Mar 2015 19:18:27 -0700 dirstate.walk: factor out directory traversal
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 19:18:27 -0700] rev 24559
dirstate.walk: factor out directory traversal This function will be used in upcoming patches.
Wed, 01 Apr 2015 13:27:56 -0500 Added signature for changeset 2e2e9a0750f9 stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Apr 2015 13:27:56 -0500] rev 24558
Added signature for changeset 2e2e9a0750f9
Wed, 01 Apr 2015 13:27:42 -0500 Added tag 3.3.3 for changeset 2e2e9a0750f9 stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Apr 2015 13:27:42 -0500] rev 24557
Added tag 3.3.3 for changeset 2e2e9a0750f9
Tue, 31 Mar 2015 20:20:17 -0300 i18n-pt_BR: synchronized with d09262d6ec23 stable 3.3.3
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 31 Mar 2015 20:20:17 -0300] rev 24556
i18n-pt_BR: synchronized with d09262d6ec23
Tue, 31 Mar 2015 18:09:21 -0500 tests: fix py2.4 glob for devel warnings
Matt Mackall <mpm@selenic.com> [Tue, 31 Mar 2015 18:09:21 -0500] rev 24555
tests: fix py2.4 glob for devel warnings
Tue, 31 Mar 2015 17:49:46 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 31 Mar 2015 17:49:46 -0500] rev 24554
merge with stable
Tue, 31 Mar 2015 15:41:02 -0700 dirstate: fix order of initializing nf vs f
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 15:41:02 -0700] rev 24553
dirstate: fix order of initializing nf vs f Result of a bad merge.
Mon, 30 Mar 2015 18:10:59 -0700 treemanifest: make treemanifest.matches() faster
Drew Gottlieb <drgott@google.com> [Mon, 30 Mar 2015 18:10:59 -0700] rev 24552
treemanifest: make treemanifest.matches() faster By converting treemanifest.matches() into a recursively additivie operation, it becomes O(n). The old matches function made a copy of the entire manifest and deleted files that didn't match. With tree manifests, this was an O(n log n) operation because del() was O(log n). This change speeds up the command "hg status --rev .^ 'relglob:*.js' on the Mozilla repo, now taking 2.53s, down from 3.51s.
Mon, 30 Mar 2015 17:21:49 -0700 treemanifest: add treemanifest._isempty()
Drew Gottlieb <drgott@google.com> [Mon, 30 Mar 2015 17:21:49 -0700] rev 24551
treemanifest: add treemanifest._isempty() During operations that involve building up a new manifest tree, it will be useful to be able to quickly check if a submanifest is empty, and if so, to avoid including it in the final tree. Doing this check lets us avoid creating treemanifest structures that contain any empty submanifests.
Fri, 27 Mar 2015 13:16:13 -0700 treemanifest: remove treemanifest._intersectfiles()
Drew Gottlieb <drgott@google.com> [Fri, 27 Mar 2015 13:16:13 -0700] rev 24550
treemanifest: remove treemanifest._intersectfiles() In preparation for the optimization in the following commit, this commit removes treemanifest.matches()'s call to _intersectfiles(), and removes _intersectfiles() itself since it's unused at this point.
Mon, 30 Mar 2015 11:58:39 -0700 manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com> [Mon, 30 Mar 2015 11:58:39 -0700] rev 24549
manifest: add some tests for manifest.matches() There were no tests for the various code paths in manifestdict.matches(), so I added some. This also adds a more complex testing manifest so that any bugs relating to traversal of directories are more likely to be caught.
Tue, 31 Mar 2015 17:42:46 -0400 forget: cleanup the output for an inexact case match on icasefs stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 31 Mar 2015 17:42:46 -0400] rev 24548
forget: cleanup the output for an inexact case match on icasefs Previously, specifying a file name but not matching the dirstate case yielded the following, even though the file was actually removed: $ hg forget capsdir1/capsdir/abc.txt not removing capsdir\a.txt: file is already untracked removing CapsDir\A.txt [1] This change doesn't appear to cause any extra filesystem accesses, even if a nonexistant file is specified. If a directory is specified without a case match, it is (and was previously) still silently ignored.
Mon, 30 Mar 2015 21:37:24 -0700 json: implement {branches} template
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Mar 2015 21:37:24 -0700] rev 24547
json: implement {branches} template
Tue, 31 Mar 2015 14:54:56 -0700 json: implement {bookmarks} template
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2015 14:54:56 -0700] rev 24546
json: implement {bookmarks} template
Tue, 31 Mar 2015 14:52:21 -0700 json: implement {tags} template
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 31 Mar 2015 14:52:21 -0700] rev 24545
json: implement {tags} template Tags is pretty easy to implement. Let's start there. The output is slightly different from `hg tags -Tjson`. For reference, the CLI has the following output: [ { "node": "e2049974f9a23176c2addb61d8f5b86e0d620490", "rev": 29880, "tag": "tip", "type": "" }, ... ] Our output has the format: { "node": "0aeb19ea57a6d223bacddda3871cb78f24b06510", "tags": [ { "node": "e2049974f9a23176c2addb61d8f5b86e0d620490", "tag": "tag1", "date": [1427775457.0, 25200] }, ... ] } "rev" is omitted because it isn't a reliable identifier. We shouldn't be exposing them in web APIs and giving the impression it remotely resembles a stable identifier. Perhaps we could one day hide this behind a config option (it might be useful to expose when running servers locally). The "type" of the tag isn't defined because this information isn't yet exposed to the hgweb templater (it could be in a follow-up) and because it is questionable whether different types should be exposed at all. (Should the web interface really be exposing "local" tags?) We use an object for the outer type instead of Array for a few reasons. First, it is extensible. If we ever need to throw more global properties into the output, we can do that without breaking backwards compatibility (property additions should be backwards compatible). Second, uniformity in web APIs is nice. Having everything return objects seems much saner than a mix of array and object. Third, there are security issues with arrays in older browsers. The JSON web services world almost never uses arrays as the main type for this reason. Another possibly controversial part about this patch is how dates are defined. While JSON has a Date type, it is based on the JavaScript Date type, which is widely considered a pile of garbage. It is a non-starter for this reason. Many of Mercurial's built-in date filters drop seconds resolution. So that's a non-starter as well, since we want the API to be lossless where possible. rfc3339date, rfc822date, isodatesec, and date are all lossless. However, they each require the client to perform string parsing on top of JSON decoding. While date parsing libraries are pretty ubiquitous, some languages don't have them out of the box. However, pretty much every programming language can deal with UNIX timestamps (which are just integers or floats). So, we choose to use Mercurial's internal date representation, which in JSON is modeled as float seconds since UNIX epoch and an integer timezone offset from UTC (keep in mind JavaScript/JSON models all "Numbers" as double prevision floating point numbers, so there isn't a difference between ints and floats in JSON).
Mon, 30 Mar 2015 20:15:03 -0700 templates: add a stub template for json
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Mar 2015 20:15:03 -0700] rev 24544
templates: add a stub template for json Many have long wanted hgweb to emit a common machine readable output. We start the process by defining a stub json template. Right now, each endpoint returns a stub "not yet implemented" string. Individual templates will be implemented in subsequent patches. Basic tests for templates have been included. Coverage isn't perfect, but it is better than nothing.
Mon, 30 Mar 2015 20:56:54 -0700 get-with-headers: support parsing and pretty printing JSON
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Mar 2015 20:56:54 -0700] rev 24543
get-with-headers: support parsing and pretty printing JSON Upcoming patches will add support for JSON output from hgweb. Because JSON output from the templater is hard to read and because it is easy to introduce malformed JSON, we introduce a JSON processing mode to get-with-headers.py that will parse and pretty print JSON from HTTP responses. This will make tests easier to read and write and it will ensure hgweb is emitting well-formed JSON.
Tue, 31 Mar 2015 16:14:14 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 31 Mar 2015 16:14:14 -0500] rev 24542
merge with stable
Sun, 29 Mar 2015 19:47:16 -0700 dirstate.walk: use the file foldmap to normalize
Siddharth Agarwal <sid0@fb.com> [Sun, 29 Mar 2015 19:47:16 -0700] rev 24541
dirstate.walk: use the file foldmap to normalize Computing the set of directories in the dirstate is expensive. It turns out that it isn't necessary for operations like 'hg status' at all. Why? Consider the file 'foo/bar' on disk, which is represented in the dirstate as 'FOO/BAR'. On 'hg status', we'd walk down the directory tree, coming across 'foo' first. Before: we'd normalize 'foo' to 'FOO', then add 'FOO' to our visited stack. We'd then visit 'FOO', finding the file 'bar'. We'd normalize 'FOO/bar' to 'FOO/BAR', then add it to the results dict. After: we wouldn't normalize 'foo' at all. We'd add it to our visited stack, then visit 'foo', finding the file 'bar'. We'd normalize 'foo/bar' to 'FOO/BAR', then add it to the results dict. So whether we normalize intermediate directories or not actually makes no difference in most cases. The only case where normalization matters at all is if a file is replaced with a directory with the same case-folded name. In that case we can do a relatively cheap file normalization instead and still get away with not computing the set of directories. This is a nice boost in status performance. On OS X with case-insensitive HFS+, for a large repo with over 200,000 files, this brings down 'hg status' from 4.00 seconds to 3.62.
Sun, 29 Mar 2015 19:42:49 -0700 dirstate: split the foldmap into separate ones for files and directories
Siddharth Agarwal <sid0@fb.com> [Sun, 29 Mar 2015 19:42:49 -0700] rev 24540
dirstate: split the foldmap into separate ones for files and directories Computing the set of directories in the dirstate can be pretty expensive. For 'hg status' without arguments, it turns out we actually never need to figure out the right case for directories in the foldmap. (An upcoming patch explains why.) This patch splits up the directory and file maps into separate ones, allowing for the subsequent optimization in status.
Sat, 28 Mar 2015 18:53:54 -0700 dirstate: introduce function to normalize just filenames
Siddharth Agarwal <sid0@fb.com> [Sat, 28 Mar 2015 18:53:54 -0700] rev 24539
dirstate: introduce function to normalize just filenames This will be used in upcoming patches to stop generating the set of directories in many common cases.
Sun, 29 Mar 2015 19:23:05 -0700 dirstate: factor out code to discover normalized path
Siddharth Agarwal <sid0@fb.com> [Sun, 29 Mar 2015 19:23:05 -0700] rev 24538
dirstate: factor out code to discover normalized path In upcoming patches we're going to reuse this code. The storemap is currently always the foldmap, but will vary in future patches.
Tue, 31 Mar 2015 11:11:39 -0400 dirstate: don't require exact case when adding dirs on icasefs (issue4578) stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 31 Mar 2015 11:11:39 -0400] rev 24537
dirstate: don't require exact case when adding dirs on icasefs (issue4578) We don't require it when adding files on a case insensitive filesystem, so don't require it to add directories for consistency. The problem with the previous code was that _walkexplicit() was only returning the normalized directory. The file(s) in the directory are then appended, and passed to the matcher. But if the user asks for 'capsdir1/capsdir', the matcher will not accept 'CapsDir1/CapsDir/AbC.txt', and the name is dropped. Matching based on the non-normalized name is required. If not normalizing, skip the extra string building for efficiency. '.' is replaced with '' so that the path being tested when no file is specified, isn't prefixed with './' (and therefore fail the match).
Tue, 31 Mar 2015 11:58:14 -0700 filemerge: clean up language in mergemarkertemplate help stable
Nathan Goldbaum <ngoldbau@ucsc.edu> [Tue, 31 Mar 2015 11:58:14 -0700] rev 24536
filemerge: clean up language in mergemarkertemplate help
Tue, 31 Mar 2015 14:27:45 -0400 color: fix crash in cmd.exe
Matt Harbison <matt_harbison@yahoo.com> [Tue, 31 Mar 2015 14:27:45 -0400] rev 24535
color: fix crash in cmd.exe When 'term' is None because it isn't in the environment, don't iterate over it. Unfortunately, unsetting $TERM or exporting it as '' doesn't work in the tests, so there's no way to simulate cmd.exe in the test suite.
Wed, 18 Mar 2015 21:44:25 -0700 log: prefer 'wctx' over 'pctx' for working context
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Mar 2015 21:44:25 -0700] rev 24534
log: prefer 'wctx' over 'pctx' for working context
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%.
Sat, 28 Mar 2015 00:47:58 -0700 run-tests: collect aggregate code coverage
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 00:47:58 -0700] rev 24505
run-tests: collect aggregate code coverage Before this patch, every Python process during a code coverage run was writing coverage data to the same file. I'm not sure if the coverage package even tries to obtain a lock on the file. But what I do know is there was some last write wins leading to loss of code coverage data, at least with -j > 1. This patch changes the code coverage mechanism to be multiple process safe. The mechanism for initializing code coverage via sitecustomize.py has been tweaked so each Python process will produce a separate coverage data file on disk. Unless two processes generate the same random value, there are no race conditions writing to the same file. At the end of the test run, we combine all written files into an aggregate report. On my machine, running the full test suite produces a little over 20,000 coverage files consuming ~350 MB. As you can imagine, it takes several seconds to load and merge these coverage files. But when it is done, you have an accurate picture of the aggregate code coverage for the entire test suite, which is ~60% line coverage.
Fri, 27 Mar 2015 23:17:19 -0700 run-tests: obtain code coverage via Python API
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 27 Mar 2015 23:17:19 -0700] rev 24504
run-tests: obtain code coverage via Python API Before, we were invoking the "coverage" program provided by the "coverage" module. This patch changes the code to go through the Python API. This makes the next patch a little bit easier to reason about. A side effect of this patch is that writing code coverage reports will be slightly faster, as we won't have to redundantly load coverage data.
Sat, 28 Mar 2015 12:58:44 -0700 commands.debugrevlog: report max chain length
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 28 Mar 2015 12:58:44 -0700] rev 24503
commands.debugrevlog: report max chain length This is sometimes useful to know. Report it.
Fri, 27 Mar 2015 20:55:54 -0700 _lazymanifest: drop unnecessary call to sorted()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Mar 2015 20:55:54 -0700] rev 24502
_lazymanifest: drop unnecessary call to sorted() The entries returned from _lazymanifest.iterentries() are already sorted.
Sun, 29 Mar 2015 00:00:14 -0400 test-git-export: add globs the test runner wants on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 29 Mar 2015 00:00:14 -0400] rev 24501
test-git-export: add globs the test runner wants on Windows The only difference for the first two was to add the globs, but the third line of output on Windows was '..\dir2\copy'. I'm not sure why 'copy' is output on Windows instead of '*'.
Sun, 29 Mar 2015 10:41:23 -0700 run-tests: explicitly handle unicode when writing xunit file
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 29 Mar 2015 10:41:23 -0700] rev 24500
run-tests: explicitly handle unicode when writing xunit file The xunit writer was passing a str to a minidom API. An implicit .decode('ascii') was performed somewhere, causing UnicodeDecodeError if test output contained non-ascii sequences. This patch converts test output to utf-8 before passing it to minidom. We use the "replace" strategy to ensure invalid utf-8 sequences get munged into �.
Sun, 29 Mar 2015 19:06:23 +0200 parsers.c: avoid implicit conversion loses integer warnings
André Sintzoff <andre.sintzoff@gmail.com> [Sun, 29 Mar 2015 19:06:23 +0200] rev 24499
parsers.c: avoid implicit conversion loses integer warnings These warnings are raised by Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) and were introduced in 539b3c7eea44
Sun, 29 Mar 2015 00:20:56 -0400 test-annotate: conditionalize error output for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 29 Mar 2015 00:20:56 -0400] rev 24498
test-annotate: conditionalize error output for Windows It seems better to leave the actual output in place instead of globbing everything but 'abort:', in case it starts aborting for other reasons. It isn't clear the purpose for reversing the file name position, but that originates in windows.posixfile.
Sat, 28 Mar 2015 23:57:16 -0400 test-diffstat: add a glob the test runner wants on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 28 Mar 2015 23:57:16 -0400] rev 24497
test-diffstat: add a glob the test runner wants on Windows The test gets a '~' status without it.
Tue, 24 Mar 2015 21:36:38 +0100 tests: add testing for diff.showfunc
Mathias De Maré <mathias.demare@gmail.com> [Tue, 24 Mar 2015 21:36:38 +0100] rev 24496
tests: add testing for diff.showfunc The diff.showfunc config knob did not have coverage before.
Mon, 30 Mar 2015 10:43:52 -0700 manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com> [Mon, 30 Mar 2015 10:43:52 -0700] rev 24495
manifest: make manifest.intersectfiles() internal manifest.intersectfiles() is just a utility used by manifest.matches(), and a future commit removes intersectfiles for treemanifest for optimization purposes. This commit makes the intersectfiles methods on manifestdict and treemanifest internal, and converts its test to a more generic testMatches(), which has the exact same coverage.
Sat, 28 Mar 2015 11:19:34 +0100 win32: add comment about WinError
Adrian Buehlmann <adrian@cadifra.com> [Sat, 28 Mar 2015 11:19:34 +0100] rev 24494
win32: add comment about WinError Prevent reintroducing the bug that was added in e34106fa0dc3 (and fixed with a2285e2fc949).
Sat, 28 Mar 2015 20:22:03 +0900 templates: fix "log -q" output of phases style stable
Yuya Nishihara <yuya@tcha.org> [Sat, 28 Mar 2015 20:22:03 +0900] rev 24493
templates: fix "log -q" output of phases style It had the same problem as 6136704b975d, name conflicts of {node} keyword.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip