Mon, 12 Dec 2016 13:32:45 +0100 registrar: raise a programming error on duplicated registering
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 12 Dec 2016 13:32:45 +0100] rev 30613
registrar: raise a programming error on duplicated registering Previous, registering different object with the same name would silently overwrite the first value with the second one. We now detect the situation and raise an error. No extension in test or core had the issues.
Sun, 16 Oct 2016 17:01:41 +0900 py3kcompat: drop unused module
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Oct 2016 17:01:41 +0900] rev 30612
py3kcompat: drop unused module Perhaps this was a predated attempt of Python 3 porting. Python 3.5 supports %-formatting of bytes.
Sun, 16 Oct 2016 16:59:50 +0900 strutil: drop module which no longer be used
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Oct 2016 16:59:50 +0900] rev 30611
strutil: drop module which no longer be used
Sun, 16 Oct 2016 16:58:43 +0900 convert: inline strutil.rfindall()
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Oct 2016 16:58:43 +0900] rev 30610
convert: inline strutil.rfindall() This is the only place where strutil is used. I don't think it's worth to keep the strutil module, so inline it. Also, strutil.rfindall() appears to have off-by-one error. 'end = c - 1' is wrong because 'end' is exclusive.
Wed, 14 Dec 2016 12:07:23 -0800 convert: return commit objects for revisions in the revmap
David Soria Parra <davidsp@fb.com> [Wed, 14 Dec 2016 12:07:23 -0800] rev 30609
convert: return commit objects for revisions in the revmap Source revision data that exists in the revmap are ignored when pulling data from Perforce as we consider them already imported. In case where the `convertcmd.convert` algorithm requests a commit object for such a revision we are creating it. This is usually the case for parent of the first imported revision.
Tue, 13 Dec 2016 21:49:58 -0800 convert: encapsulate commit data fetching and commit object creation
David Soria Parra <davidsp@fb.com> [Tue, 13 Dec 2016 21:49:58 -0800] rev 30608
convert: encapsulate commit data fetching and commit object creation Split fetching the `describe` form from Perforce and the commit object creation into two functions. This allows us to reuse the commit construction for revisions passed from a revmap.
Tue, 13 Dec 2016 21:49:58 -0800 convert: do not provide head revisions if we have no changests to import
David Soria Parra <davidsp@fb.com> [Tue, 13 Dec 2016 21:49:58 -0800] rev 30607
convert: do not provide head revisions if we have no changests to import Don't set a head revision in cases where we have a revmap but no changesets to import, as convertcmd.convert() treats them as heads of to-imported revisions.
Wed, 14 Dec 2016 01:45:57 -0800 convert: allow passing in a revmap
David Soria Parra <davidsp@fb.com> [Wed, 14 Dec 2016 01:45:57 -0800] rev 30606
convert: allow passing in a revmap Implement `common.setrevmap` which is used to pass in a file with existing revision mappings. This functionality is used by `convertcmd.convert` if it exists and allows implementors such as the p4 converter to make use of an existing mapping. We are using the revmap to abort scanning and the repository for more information if we already have the revision. This means we are allowing incremental imports in cases where a revmap is provided.
Tue, 13 Dec 2016 21:49:58 -0800 convert: use convert_revision for P4 imports
David Soria Parra <davidsp@fb.com> [Tue, 13 Dec 2016 21:49:58 -0800] rev 30605
convert: use convert_revision for P4 imports We are using convert_revisions in other importers. In order to unify this we are also using convert_revision for Perforce in addition to the original 'p4'.
Wed, 14 Dec 2016 01:45:17 -0800 convert: remove unused dictionaries
David Soria Parra <davidsp@fb.com> [Wed, 14 Dec 2016 01:45:17 -0800] rev 30604
convert: remove unused dictionaries self.parent, self.lastbranch and self.tags have never been used.
Wed, 14 Dec 2016 01:43:47 -0800 convert: self.heads is a list
David Soria Parra <davidsp@fb.com> [Wed, 14 Dec 2016 01:43:47 -0800] rev 30603
convert: self.heads is a list self.heads is used as a list throughout convert and never a dictionary. Initialize it correctly to a list.
Tue, 13 Dec 2016 21:49:58 -0800 convert: don't use long list comprehensions
David Soria Parra <davidsp@fb.com> [Tue, 13 Dec 2016 21:49:58 -0800] rev 30602
convert: don't use long list comprehensions We are iterating over p4changes. Make the continue condition more clear and easier to add new conditions in future patches, by removing the list comprehension and move the condition into the existing for-loop.
Thu, 15 Dec 2016 11:00:18 -0800 changelog: keep track of file end in appender (issue5444)
Durham Goode <durham@fb.com> [Thu, 15 Dec 2016 11:00:18 -0800] rev 30601
changelog: keep track of file end in appender (issue5444) Previously, changelog.appender.end() would compute the end of the file by joining all the current appended data and checking the length. This is an O(n) operation. e240e914d226 introduced a seek call before every revlog write, which means we are hitting this O(n) behavior n times, which causes changelog writes during a pull to be n^2. In our large repo, this caused pulling 100k commits to go from 17s to 130s. With this fix, it's back to 17s.
Thu, 15 Dec 2016 11:14:00 -0500 tests: fix test-bdiff to handle variance between pure and c bdiff code
Augie Fackler <augie@google.com> [Thu, 15 Dec 2016 11:14:00 -0500] rev 30600
tests: fix test-bdiff to handle variance between pure and c bdiff code Obviously we'd rather patch pure to have the same algorithmic win as the C code, but this is a quick fix for the pure build since pure isn't wrong, just not as fast as it could be.
Thu, 15 Dec 2016 11:04:09 -0500 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com> [Thu, 15 Dec 2016 11:04:09 -0500] rev 30599
tests: finish updating test-bdiff to unittest (part 4 of 4)
Thu, 15 Dec 2016 10:56:26 -0500 tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com> [Thu, 15 Dec 2016 10:56:26 -0500] rev 30598
tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Thu, 15 Dec 2016 10:50:06 -0500 tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com> [Thu, 15 Dec 2016 10:50:06 -0500] rev 30597
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Thu, 15 Dec 2016 10:10:15 -0500 tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com> [Thu, 15 Dec 2016 10:10:15 -0500] rev 30596
tests: migrate test-bdiff.py to use unittest (part 1 of 4) This moves all the test() calls, which were easy and mechanical.
Thu, 15 Dec 2016 19:56:48 +0100 import-checker: do not enforce lexical sort accross stdlib/local boundary
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 15 Dec 2016 19:56:48 +0100] rev 30595
import-checker: do not enforce lexical sort accross stdlib/local boundary Before this change, you could get in a start where the checker would either complain about importing local module before stdlib one or complain about the local one being wrongly lexically sorted with the stdlib one. We detect the boundary and avoid complaining about lexical sort across it.
Wed, 14 Dec 2016 09:53:56 -0800 cg1packer: fix `compressed` method
Stanislau Hlebik <stash@fb.com> [Wed, 14 Dec 2016 09:53:56 -0800] rev 30594
cg1packer: fix `compressed` method `cg1packer.compressed()` returns True even if `self._type` is 'UN'. This patch fixes it.
Thu, 15 Dec 2016 12:17:08 +0100 perf: add historical support of ui.load()
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 15 Dec 2016 12:17:08 +0100] rev 30593
perf: add historical support of ui.load() ui.load() has been available since d83ca854 and at the time of writing isn't available on stable branch breaking benchmarking newer stable revisions. Add historical portability policy note on contrib/benchmarks
Wed, 14 Dec 2016 02:17:59 +0000 chg: ignore HG_* in confighash
Jun Wu <quark@fb.com> [Wed, 14 Dec 2016 02:17:59 +0000] rev 30592
chg: ignore HG_* in confighash The environment variables `HG_*` are usually used by hooks. Unlike `HGPLAIN` etc, they do not actually affect hg's behavior. So do not include them in confighash. This would avoid spawning an unbound number of chg server processes if commit hook calls hg frequently.
Tue, 13 Dec 2016 20:53:40 +0530 py3: make keys of keyword arguments strings
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 13 Dec 2016 20:53:40 +0530] rev 30591
py3: make keys of keyword arguments strings keys of keyword arguments on Python 3 has to be string. We are dealing with bytes in our codebase so the keys are also bytes. Done that using pycompat.strkwargs(). Also after this patch, `hg version` now runs on Python 3.5. Hurray!
Mon, 12 Dec 2016 08:01:52 +0000 error: make it clear that ProgrammingError is for mercurial developers
Jun Wu <quark@fb.com> [Mon, 12 Dec 2016 08:01:52 +0000] rev 30590
error: make it clear that ProgrammingError is for mercurial developers The word "developer" could refer to users - people using hg are likely to be developers. Add adjectives to make it refer to mercurial developers only.
Tue, 13 Dec 2016 14:21:36 +0000 revlog: merge hash checking subfunctions
Remi Chaintron <remi@fb.com> [Tue, 13 Dec 2016 14:21:36 +0000] rev 30589
revlog: merge hash checking subfunctions This patch factors the behavior of both methods into 'checkhash'.
Fri, 09 Dec 2016 03:22:26 -0800 bookmarks: make bookmarks.comparebookmarks accept binary nodes (API)
Stanislau Hlebik <stash@fb.com> [Fri, 09 Dec 2016 03:22:26 -0800] rev 30588
bookmarks: make bookmarks.comparebookmarks accept binary nodes (API) Binary bookmark format should be used internally. It doesn't make sense to have optional parameters `srchex` and `dsthex`. This patch removes them. It will also be useful for `bookmarks` bundle2 part because unnecessary conversions between hex and bin nodes will be avoided.
Tue, 22 Nov 2016 01:33:31 -0800 bookmarks: rename `compare()` to `comparebookmarks()` (API)
Stanislau Hlebik <stash@fb.com> [Tue, 22 Nov 2016 01:33:31 -0800] rev 30587
bookmarks: rename `compare()` to `comparebookmarks()` (API) Next commit will remove optional parameters from `compare()` function. Let's rename `compare()` to `comparebookmarks()` to avoid ambiguity from callers from external extensions.
Mon, 05 Dec 2016 17:40:01 +0100 graft: support grafting changes to new file in renamed directory (issue5436)
Gábor Stefanik <gabor.stefanik@nng.com> [Mon, 05 Dec 2016 17:40:01 +0100] rev 30586
graft: support grafting changes to new file in renamed directory (issue5436)
Mon, 28 Nov 2016 05:45:22 +0000 rebase: calculate ancestors for --base separately (issue5420)
Jun Wu <quark@fb.com> [Mon, 28 Nov 2016 05:45:22 +0000] rev 30585
rebase: calculate ancestors for --base separately (issue5420) Previously, the --base option only works with a single "branch" - if there is one changeset in the "--base" revset whose branching point(s) is/are different from another changeset in the "--base" revset, "rebase" will error out with: abort: source is ancestor of destination This happens if the user has multiple draft branches, and uses "hg rebase -b 'draft()' -d master", for example. The error message looks cryptic to users who don't know the implementation detail. This patch changes the logic to calculate the common ancestor for every "base" changeset separately so we won't (incorrectly) select "source" which is an ancestor of the destination. This patch should not change the behavior where all changesets specified by "--base" have the same branching point(s). A new situation is: some of the specified changesets could be rebased, while some couldn't (because they are descendants of the destination, or they do not share a common ancestor with the destination). The current behavior is to show "nothing to rebase" and exits with 1. This patch maintains the current behavior (show "nothing to rebase") even if part of the "--base" revset could be rebased. A clearer error message may be "cannot find branching point for X", or "X is a descendant of destination". The error message issue is tracked by issue5422 separately. A test is added with all kinds of tricky cases I could think of for now.
Wed, 07 Dec 2016 21:53:03 +0530 py3: utility functions to convert keys of kwargs to bytes/unicodes
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 07 Dec 2016 21:53:03 +0530] rev 30584
py3: utility functions to convert keys of kwargs to bytes/unicodes Keys of keyword arguments need to be str(unicodes) on Python 3. We have a lot of function where we pass keyword arguments. Having utility functions to help converting keys to unicodes before passing and convert back them to bytes once passed into the function will be helpful. We now have functions named pycompat.strkwargs(dic) and pycompat.byteskwargs(dic) to help us.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip