Sat, 19 Jul 2014 00:11:40 -0500 Added signature for changeset 6c36dc6cd61a stable
Matt Mackall <mpm@selenic.com> [Sat, 19 Jul 2014 00:11:40 -0500] rev 21928
Added signature for changeset 6c36dc6cd61a
Sat, 19 Jul 2014 00:11:10 -0500 Added tag 3.1-rc for changeset 6c36dc6cd61a stable
Matt Mackall <mpm@selenic.com> [Sat, 19 Jul 2014 00:11:10 -0500] rev 21927
Added tag 3.1-rc for changeset 6c36dc6cd61a
Sat, 19 Jul 2014 00:10:22 -0500 merge default into stable for 3.1 code freeze stable 3.1-rc
Matt Mackall <mpm@selenic.com> [Sat, 19 Jul 2014 00:10:22 -0500] rev 21926
merge default into stable for 3.1 code freeze
Fri, 18 Jul 2014 19:46:56 -0400 revset: avoid a ValueError when 'only()' is given an empty set
Matt Harbison <matt_harbison@yahoo.com> [Fri, 18 Jul 2014 19:46:56 -0400] rev 21925
revset: avoid a ValueError when 'only()' is given an empty set This previously died in _revdescendants() taking the min() of the first set to only(), when it was empty. An empty second set already worked. Likewise, descendants() already handled an empty set.
Tue, 15 Jul 2014 23:34:13 +0900 cmdutil: make commit message shown in text editor customizable by template
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Jul 2014 23:34:13 +0900] rev 21924
cmdutil: make commit message shown in text editor customizable by template This patch makes commit message shown in text editor customizable by template. For example, this can advertise: - sample commit messages for routine works, - points to call attention before commit, - message of the day, and so on To show commit message correctly even in problematic encoding, this patch chooses the latter below: - replace "buildcommittext" with "buildcommittemplate" completely - invoke "buildcommittemplate" only if '[committemplate] changeset' is configured explicitly For example, if multibyte character ending with backslash (0x5c) is followed by ASCII character 'n' in the customized template, sequence of backslash and 'n' is treated as line-feed unexpectedly (and multibyte character is broken, too). This corruption occurs in 'decode("string-escape")' while parsing template string.
Fri, 18 Jul 2014 23:15:28 -0500 commiteditor: refactor default extramsg
Matt Mackall <mpm@selenic.com> [Fri, 18 Jul 2014 23:15:28 -0500] rev 21923
commiteditor: refactor default extramsg
Thu, 26 Jun 2014 01:20:25 +0200 filemerge: add internal:tagmerge merge tool
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 26 Jun 2014 01:20:25 +0200] rev 21922
filemerge: add internal:tagmerge merge tool Add a new internal:tagmerge merge tool which implements an automatic merge algorithm for mercurial's tag files The tagmerge algorithm is able to resolve most merge conflicts that currently would trigger a .hgtags merge conflict. The only case that it does not (and cannot) handle is that in which two tags point to different revisions on each merge parent _and_ their corresponding tag histories have the same rank (i.e. the same length). In all other cases the merge algorithm will choose the revision belonging to the parent with the highest ranked tag history. The merged tag history is the combination of both tag histories (special care is taken to try to combine common tag histories where possible). The algorithm also handles cases in which tags have been manually removed from the .hgtags file and other similar corner cases. In addition to actually merging the tags from two parents, taking into account the base, the algorithm also tries to minimize the difference between the merged tag file and the first parent's tag file (i.e. it tries to make the merged tag order as as similar as possible to the first parent's tag file order). The algorithm works as follows: 1. read the tags from p1, p2 and the base - when reading the p1 tags, also get the line numbers associated to each tag node (these will be used to sort the merged tags in a way that minimizes the diff to p1). Ignore the file numbers when reading p2 and the base 2. recover the "lost tags" (i.e. those that are found in the base but not on p1 or p2) and add them back to p1 and/or p2 - at this point the only tags that are on p1 but not on p2 are those new tags that were introduced in p1. Same thing for the tags that are on p2 but not on p2 3. take all tags that are only on p1 or only on p2 (but not on the base) - Note that these are the tags that were introduced between base and p1 and between base and p2, possibly on separate clones 4. for each tag found both on p1 and p2 perform the following merge algorithm: - the tags conflict if their tag "histories" have the same "rank" (i.e. length) _AND_ the last (current) tag is _NOT_ the same - for non conflicting tags: - choose which are the high and the low ranking nodes - the high ranking list of nodes is the one that is longer. In case of draw favor p1 - the merged node list is made of 3 parts: - first the nodes that are common to the beginning of both the low and the high ranking nodes - second the non common low ranking nodes - finally the non common high ranking nodes (with the last one being the merged tag node) - note that this is equivalent to putting the whole low ranking node list first, followed by the non common high ranking nodes - note that during the merge we keep the "node line numbers", which will be used when writing the merged tags to the tag file 5. write the merged tags taking into account to their positions in the first parent (i.e. try to keep the relative ordering of the nodes that come from p1). This minimizes the diff between the merged and the p1 tag files This is done by using the following algorithm - group the nodes for a given tag that must be written next to each other - A: nodes that come from consecutive lines on p1 - B: nodes that come from p2 (i.e. whose associated line number is None) and are next to one of the a nodes in A - each group is associated with a line number coming from p1 - generate a "tag block" for each of the groups - a tag block is a set of consecutive "node tag" lines belonging to the same tag and which will be written next to each other on the merged tags file - sort the "tag blocks" according to their associated number line - put blocks whose nodes come all from p2 first - write the tag blocks in the sorted order Notes: - A few tests have been added to test-tag.t. These tests are very specific to the new internal:tagmerge tool, so perhaps they should be moved to their own test file. - The merge algorithm was discussed in a thread on the mercurial mailing list. In http://markmail.org/message/anqaxldup4tmgyrx a slightly different algorithm was suggested. In it the p1 and p2 tags would have been interleaved instead of put one before the other. It would be possible to implement that but my tests suggest that the merge result would be more confusing and harder to understand.
Fri, 18 Jul 2014 21:49:52 -0500 filemerge: use non-minimal conflict marker regions (BC)
Matt Mackall <mpm@selenic.com> [Fri, 18 Jul 2014 21:49:52 -0500] rev 21921
filemerge: use non-minimal conflict marker regions (BC) As extensively detailed by Pierre-Yves[1], simplemerge's minimal markers can result in hopeless confusion for many common merges. As it happens, we accidentally inherited this behavior when we borrowed simplemerge from bzr; it is not the behavior used by RCS's merge(1), Since merge(1) (and not bzr) is what we aim to emulate when emulating RCS's merge markers, we simply turn this feature off. This brings us in line with the behavior of CVS, SVN, and Git as a bonus. (NB: using conflict markers with Mercurial is discouraged.) [1] http://markmail.org/message/wj5mh3lc46czlvld convert glob tessa
Mon, 09 Jun 2014 03:49:07 -0700 test: use more elaborated content in ``test-conflict.t``
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 09 Jun 2014 03:49:07 -0700] rev 21920
test: use more elaborated content in ``test-conflict.t`` We are going to introduce a setting to control the "minimisation" feature of ``internal:merge``. So we need more interesting conflicting content. We change the content in an independent changeset to make sure the coming code change leave the output unchanged.
Fri, 18 Jul 2014 17:52:18 -0500 run-tests: make --view work again
Matt Mackall <mpm@selenic.com> [Fri, 18 Jul 2014 17:52:18 -0500] rev 21919
run-tests: make --view work again
Sun, 06 Jul 2014 02:56:41 +0900 filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21918
filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety Before this patch, 'detailed' is used as the default of '[ui] mergemarkers'. This embeds non-ASCII characters in tags, branches, bookmarks, author and/or commit descriptions into merged files in the encoding specified by '--encoding' global option, 'HGENCODING' or other locale setting environment variables. But, if files to be merged use another encoding, this behavior breaks consistency of encoding in merged files. For example, ISO-2022-JP or EUC-JP are sometimes used as the file encoding for Japanese characters, because of historical and/or environmental reasons, even though UTF-8 or Shift-JIS are ordinarily used as the terminal encoding. This can't be resolved automatically, because Mercurial doesn't aware encoding of managed files. This patch uses 'basic' as the default of '[ui] mergemarkers' to avoid embedding encoding sensitive characters for safety. This patch puts '[ui] mergemarkers = detailed' into default hgrc file for tests, to reduce changes for tests in this patch.
Thu, 17 Jul 2014 20:17:17 -0400 largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate
Matt Harbison <matt_harbison@yahoo.com> [Thu, 17 Jul 2014 20:17:17 -0400] rev 21917
largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate Previously, the directory '.hg/largefiles' would always be created if it didn't exist when the lfdirstate was opened. If there were no standin files, no dirstate file would be created in the directory. The end result was that enabling the largefiles extension globally, but not explicitly adding a largefile would result in the repository eventually sprouting this directory. Creation of this directory effectively changes readonly operations like summary and status into operations that require write access. Without write access, commands that would succeed without the extension loaded would abort with a surprising error when the extension is loaded, but not actively used: $ hg sum -R /tmp/thg --config extensions.largefiles= parent: 16541:00dc703d5aed repowidget: specify incoming bundle by plain file path to avoid url parsing branch: default abort: Permission denied: '/tmp/thg/.hg/largefiles' This change is simpler than changing the callers of openlfdirstate() to use the 'create' parameter that was introduced in ae57920ac188, and probably how that should have been implemented in the first place.
Tue, 05 Nov 2013 14:47:35 -0500 run-tests: write out scripts in binary mode
Augie Fackler <raf@durin42.com> [Tue, 05 Nov 2013 14:47:35 -0500] rev 21916
run-tests: write out scripts in binary mode Caught because Python 3 refuses to write bytes to a non-binary fd.
Tue, 15 Jul 2014 15:34:50 -0700 match: use util.re.escape instead of re.escape
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 15:34:50 -0700] rev 21915
match: use util.re.escape instead of re.escape For a pathological .hgignore with over 2500 glob lines and over 200000 calls to re.escape, and with re2 available, this speeds up parsing the .hgignore from 0.75 seconds to 0.20 seconds. This causes e.g. 'hg status' with hgwatchman enabled to go from 1.02 seconds to 0.47 seconds.
Tue, 15 Jul 2014 15:14:45 -0700 util.re: add an escape method
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 15:14:45 -0700] rev 21914
util.re: add an escape method The escape method in at least one of the modules called 're2' is in C. This means it is significantly faster than the Python code written in 're'. An upcoming patch will have benchmarks.
Tue, 15 Jul 2014 15:01:52 -0700 util.re: move check for re2 into a separate method
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 15:01:52 -0700] rev 21913
util.re: move check for re2 into a separate method We're going to use the same check for another method in an upcoming patch.
Tue, 15 Jul 2014 14:52:40 -0700 util: remove no longer used compilere
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 14:52:40 -0700] rev 21912
util: remove no longer used compilere
Tue, 15 Jul 2014 14:52:22 -0700 commands: use util.re.compile instead of util.compilere
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 14:52:22 -0700] rev 21911
commands: use util.re.compile instead of util.compilere
Tue, 15 Jul 2014 14:50:58 -0700 config: use util.re.compile instead of util.compilere
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 14:50:58 -0700] rev 21910
config: use util.re.compile instead of util.compilere
Tue, 15 Jul 2014 14:49:45 -0700 match: use util.re.compile instead of util.compilere
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 14:49:45 -0700] rev 21909
match: use util.re.compile instead of util.compilere
Tue, 15 Jul 2014 14:40:43 -0700 util: move compilere to a class
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 14:40:43 -0700] rev 21908
util: move compilere to a class We do this to allow us to use descriptors for other related methods. For now, util.compilere does the same thing. Upcoming patches will remove it.
Tue, 15 Jul 2014 14:35:19 -0700 util: rename 're' to 'remod'
Siddharth Agarwal <sid0@fb.com> [Tue, 15 Jul 2014 14:35:19 -0700] rev 21907
util: rename 're' to 'remod' Upcoming patches will introduce a binding called 're'.
Wed, 02 Jul 2014 15:47:39 +0200 bundle2-push: drop _pushbundle2extraparts
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 15:47:39 +0200] rev 21906
bundle2-push: drop _pushbundle2extraparts All core user are now using the new way. We drop the old way.
Wed, 02 Jul 2014 16:10:14 +0200 bundle2-test: use the new way to extend push content
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 16:10:14 +0200] rev 21905
bundle2-test: use the new way to extend push content The only core user of the old way were tests. We update them.
Wed, 02 Jul 2014 15:26:04 +0200 bundle2-push: introduce a list of part generating functions
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 15:26:04 +0200] rev 21904
bundle2-push: introduce a list of part generating functions Instead of explicitly calling a few function to generate part in the bundle, we now have a list of all part generators. This should make it easier for extensions to adds new part in the bundle. This new way to extend the push deprecates the old `_pushbundle2extraparts` way.
Wed, 02 Jul 2014 12:55:09 +0200 bundle2-push: move changegroup push validation inside _pushb2ctx
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 12:55:09 +0200] rev 21903
bundle2-push: move changegroup push validation inside _pushb2ctx When bundle2 push includes more than just changesets, we may have no changegroup to push yet still have other data to push. So we now try to performs a bundle2 push in all cases. The check for changegroup inclusion is moved into the ``_pushb2ctx`` function in charge of creating the changegroup part. The bundle2 part is aborted if no actual payload part have been added to the bundle2.
Mon, 07 Jul 2014 12:30:31 +0200 push: use `stepsdone` to control changegroup push through bundle10 or bundle20
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 07 Jul 2014 12:30:31 +0200] rev 21902
push: use `stepsdone` to control changegroup push through bundle10 or bundle20 We use the newly introduced `pushop.stepsdone` attribute to inform older methods than changegroup have already been pushed using a newer method.
Wed, 02 Jul 2014 12:48:54 +0200 push: add a ``pushop.stepsdone`` attribute
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 12:48:54 +0200] rev 21901
push: add a ``pushop.stepsdone`` attribute This attribute will record what steps were performed during the bundle2 push. This will control whenever the old way push must be performed or skipped. This will ultimately be used by changegroup, phases, obsmarkers, bookmarks and any other kind of data ones may want to exchange even when bundle2 support is missing.
Wed, 02 Jul 2014 16:17:54 +0200 bundle2: add a ``bundle20.nbparts`` property
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 16:17:54 +0200] rev 21900
bundle2: add a ``bundle20.nbparts`` property This property can be used to know how much parts have been added to the bundle2. This will be useful to check if any part have been generated for a push.
Wed, 02 Jul 2014 11:42:35 +0200 bundle2-push: extract changegroup logic in its own function
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 11:42:35 +0200] rev 21899
bundle2-push: extract changegroup logic in its own function We extract the creation of changegroup related parts into its own function. This precludes the inclusion of more diverse data during the bundle2 push. We use a closure to carry the logic that need to be perform when processing the server reply.
Wed, 02 Jul 2014 14:09:24 +0200 bundle2: call _pushbundle2extraparts a bit sooner
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Jul 2014 14:09:24 +0200] rev 21898
bundle2: call _pushbundle2extraparts a bit sooner This is the first step of a refactoring that will ease the inclusion of new part in the bundle2 push and includes more information (like phases) in this push We need to move the function a bit sooner to be able to group the generation of `b2x:check:heads` and `b2x:changegroup` part in an external function. We move it sooner to preserve parts creation order bundle2 tests rely on. At the ends of this refactoring the `_pushbundle2extraparts` will be replaced by another mechanism anyway.
Tue, 15 Jul 2014 23:34:13 +0900 templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Jul 2014 23:34:13 +0900] rev 21897
templatekw: add 'subrepos' keyword to show updated subrepositories 'subrepos' template keyword newly added by this patch shows updated subrepositories. For the compatibility with the list of subrepositories shown in the editor at commit: - 'subrepos' is empty, at revisions removing '.hgsub' itself - 'subrepos' is calculated between the revision and the first parent of it, at merge revisions To avoid silent regression, this patch also confirms "hg diff" of ".hgsubstate" and parents for each target revisions in the test.
Tue, 15 Jul 2014 23:34:13 +0900 templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Jul 2014 23:34:13 +0900] rev 21896
templatekw: add 'currentbookmark' keyword to show current bookmark easily Before this patch, complicated template expression below is required to show current active bookmark if it is associated with the changeset. "{bookmarks % '{ifeq(bookmark, current, \"{bookmark}\")}'}" This patch add 'currentbookmark' keyword to show current bookmark easily.
Wed, 16 Jul 2014 14:53:03 -0700 context: extend efficient manifest filtering to when all paths are files
Siddharth Agarwal <sid0@fb.com> [Wed, 16 Jul 2014 14:53:03 -0700] rev 21895
context: extend efficient manifest filtering to when all paths are files On a repository with over 250,000 files and 700,000 commits, this improves cases like hg status --rev <rev> -- <file> # rev is not . from 2.1 seconds to 1.4 seconds. There is further scope for improvement here: for a single file or a small set of files, it is probably more efficient to use filelog linkrevs when possible. However there will always be cases where that will fail (multiple commits pointing to the same file revision, removed files...), so this is independently useful.
Sat, 12 Jul 2014 00:37:08 -0700 revset: remove no longer used _missingancestors revset
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 00:37:08 -0700] rev 21894
revset: remove no longer used _missingancestors revset This was undocumented.
Sat, 12 Jul 2014 00:31:36 -0700 revset: replace _missingancestors optimization with only revset
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 00:31:36 -0700] rev 21893
revset: replace _missingancestors optimization with only revset (::a - ::b) is equivalent to only(a, b).
Sat, 28 Jun 2014 01:42:39 +0200 tags: introduce _readtaghist function
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 28 Jun 2014 01:42:39 +0200] rev 21892
tags: introduce _readtaghist function The existing _readtags function has been modified a little and renamed _readtaghist. A new _readtaghist function has been added, which is a wrappger around _readtaghist. Its output is the same as the old _readtaghist. The purpose of this change is to make it possible to automatically merge tag files. In order to do so we will need to get the line numbers for each of the tag-node pairs on the first merge parent. This is not used yet, but will be used on a follow up patch that will introduce an automatic tag merge algorithm. I performed some tests to compare the effect of this change. I used timeit to run the test-tags.t test a 9 times with and without this patch. The results were: - without this patch: 3 loops, best of 3: 8.55 sec per loop - with this patch: 3 loops, best of 3: 8.49 sec per loop The the test was on average was slightly faster with this patch (although the difference was probably not statistically significant).
Fri, 20 Jun 2014 00:42:35 +0900 subrepo: ensure "close()" execution at the end of "_initrepo()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:42:35 +0900] rev 21891
subrepo: ensure "close()" execution at the end of "_initrepo()" Before this patch, "close()" for the file object opened in "_initrepo()" may not be executed, if unexpected exception is raised, because it isn't executed in "finally" clause. This patch ensures "close()" execution at the end of "_initrepo()" by moving it into "finally" clause. This patch puts configuration lines into "lines" array and write them out at once, to narrow the scope of "try"/"finally" for review-ability. This patch doesn't use "vfs.write()", because: - current "vfs.write()" implementation doesn't take "mode" argument to open file in "text" mode - writing hgrc file out in binary mode may break backward compatibility
Fri, 20 Jun 2014 00:41:31 +0900 subrepo: add test whether "[paths]" is configured correctly at subrepo creation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:41:31 +0900] rev 21890
subrepo: add test whether "[paths]" is configured correctly at subrepo creation This test is added for changes in the subsequent patch. This test doesn't use "(glob)" for expected output, because "[paths]" is configured at subrepo creation by "_abssource()" using "posixpath.join()" to join path components.
Fri, 20 Jun 2014 00:21:19 +0900 subrepo: ensure "close()" execution at the end of "_cachestorehash()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:21:19 +0900] rev 21889
subrepo: ensure "close()" execution at the end of "_cachestorehash()" Before this patch, "close()" for the file object opened in "_cachestorehash()" may not be executed, if unexpected exception is raised, because it isn't executed in "finally" clause. This patch ensures "close()" execution at the end of "_cachestorehash()" by moving it into "finally" clause.
Fri, 20 Jun 2014 00:21:19 +0900 subrepo: ensure "close()" execution at the end of "_readstorehashcache()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:21:19 +0900] rev 21888
subrepo: ensure "close()" execution at the end of "_readstorehashcache()" Before this patch, "close()" for the file object opened in "_readstorehashcache()" may not be executed, if unexpected exception is raised, because it isn't executed in "finally" clause. This patch ensures "close()" execution at the end of "_readstorehashcache()" by moving it into "finally" clause.
Fri, 20 Jun 2014 00:21:19 +0900 subrepo: ensure "close()" execution at the end of "_calcfilehash()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:21:19 +0900] rev 21887
subrepo: ensure "close()" execution at the end of "_calcfilehash()" Before this patch, "close()" for the file object opened in "_calcfilehash()" may not be executed, if unexpected exception is raised, because it isn't executed in "finally" clause. This patch ensures "close()" execution at the end of "_calcfilehash()" by moving it into "finally" clause.
Fri, 20 Jun 2014 00:21:19 +0900 subrepo: ensure "lock.release()" execution at the end of "_cachestorehash()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:21:19 +0900] rev 21886
subrepo: ensure "lock.release()" execution at the end of "_cachestorehash()" Before this patch, "lock.release()" for "self._repo" in "_cachestorehash()" of "hgsubrepo" may not be executed, if unexpected exception is raised, because it isn't executed in "finally" clause. This patch ensures "lock.release()" execution at the end of "_cachestorehash()" by moving it into "finally" clause.
Fri, 20 Jun 2014 00:21:19 +0900 subrepo: ensure "lock.release()" execution at the end of "storeclean()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 00:21:19 +0900] rev 21885
subrepo: ensure "lock.release()" execution at the end of "storeclean()" Before this patch, "lock.release()" for "self._repo" in "storeclean()" of "hgsubrepo" may not be executed, if unexpected exception is raised, because it isn't executed in "finally" clause. This patch ensures "lock.release()" execution at the end of "storeclean()" by moving it into "finally" clause. This patch chooses moving almost all lines in "storeclean()" into "_storeclean()" instead of indenting them for "try/finally" clauses, to keep diff simple for review-ability.
Mon, 07 Jul 2014 18:45:46 +0900 largefiles: confirm existence of outgoing largefile entities in remote store
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 07 Jul 2014 18:45:46 +0900] rev 21884
largefiles: confirm existence of outgoing largefile entities in remote store Before this patch, "hg summary" and "hg outgoing" show and count up all largefiles changed/added in outgoing revisions, even though some of them are already uploaded into remote store. This patch confirms existence of outgoing largefile entities in remote store, to show and count up only really outgoing largefile entities at "hg summary" and "hg outgoing".
Mon, 07 Jul 2014 18:45:46 +0900 largefiles: show also how many data entities are outgoing at "hg outgoing"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 07 Jul 2014 18:45:46 +0900] rev 21883
largefiles: show also how many data entities are outgoing at "hg outgoing" Before this patch, "hg outgoing --large" shows which largefiles are changed or added in outgoing revisions only in the point of the view of filenames. For example, according to the list of outgoing largefiles shown in "hg outgoing" output, users should expect that the former below costs much more to upload outgoing largefiles than the latter. - outgoing revisions add a hundred largefiles, but all of them refer the same data entity in this case, only one data entity is outgoing, even though "hg summary" says that a hundred largefiles are outgoing. - a hundred outgoing revisions change only one largefile with distinct data in this case, a hundred data entities are outgoing, even though "hg summary" says that only one largefile is outgoing. But the latter costs much more than the former, in fact. This patch shows also how many data entities are outgoing at "hg outgoing" by counting number of unique hash values for outgoing largefiles. When "--debug" is specified, this patch also shows what entities (in hash) are outgoing for each largefiles listed up, for debug purpose. In "ui.debugflag" route, "addfunc()" can append given "lfhash" to the list "toupload[fn]" always without duplication check, because de-duplication is already done in "_getoutgoings()".
Mon, 07 Jul 2014 18:45:46 +0900 largefiles: show also how many data entities are outgoing at "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 07 Jul 2014 18:45:46 +0900] rev 21882
largefiles: show also how many data entities are outgoing at "hg summary" Before this patch, "hg summary --large" shows how many largefiles are changed or added in outgoing revisions only in the point of the view of filenames. For example, according to the number of outgoing largefiles shown in "hg summary" output, users should expect that the former below costs much more to upload outgoing largefiles than the latter. - outgoing revisions add a hundred largefiles, but all of them refer the same data entity in this case, only one data entity is outgoing, even though "hg summary" says that a hundred largefiles are outgoing. - a hundred outgoing revisions change only one largefile with distinct data in this case, a hundred data entities are outgoing, even though "hg summary" says that only one largefile is outgoing. But the latter costs much more than the former, in fact. This patch shows also how many data entities are outgoing at "hg summary" by counting number of unique hash values for outgoing largefiles. This patch introduces "_getoutgoings" to centralize the logic (de-duplication, too) into it for convenience of subsequent patches, even though it is not required in "hg summary" case.
Mon, 07 Jul 2014 18:45:46 +0900 largefiles: add tests for summary/outgoing improved in subsequent patches
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 07 Jul 2014 18:45:46 +0900] rev 21881
largefiles: add tests for summary/outgoing improved in subsequent patches This patch adds tests for summary/outgoing improved in subsequent patches, to reduce amount of diffs in each patches. This patch adds new revisions below: - revision #2 adds new largefiles, but they contain as same data as one already existing this causes that multiple standins refer the same data entity - revision #3, #4 and #5 change the already existing largefile this causes that multiple data entities are outgoing for the standin. #5 can be used to check de-duplication of "(hash, filename)" pair.
Sat, 12 Jul 2014 17:59:03 -0700 context: generate filtered manifest efficiently for exact matchers
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 17:59:03 -0700] rev 21880
context: generate filtered manifest efficiently for exact matchers When the matcher is exact, there's no reason to iterate over the entire manifest. It's much more efficient to iterate over the list of files instead. For a repository with approximately 300,000 files, this speeds up hg log -l10 --patch --follow for a frequently modified file from 16.5 seconds to 10.5 seconds.
Sat, 12 Jul 2014 17:57:25 -0700 manifestdict: add a new method to intersect with a set of files
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 17:57:25 -0700] rev 21879
manifestdict: add a new method to intersect with a set of files This is meant to be used when the set of files is known in advance, e.g. with a match object with no patterns.
Sat, 12 Jul 2014 18:31:18 -0700 log: use an exact matcher for --patch --follow
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 18:31:18 -0700] rev 21878
log: use an exact matcher for --patch --follow The arguments to log --patch --follow are expected to be exact paths. This will be used to make manifest filtering for these cases more efficient in upcoming patches.
Wed, 16 Jul 2014 17:35:04 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 16 Jul 2014 17:35:04 -0500] rev 21877
merge with stable
Sat, 12 Jul 2014 02:23:17 -0700 log: make --patch --follow work inside a subdirectory stable
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 02:23:17 -0700] rev 21876
log: make --patch --follow work inside a subdirectory Previously, the 'patch' code for hg log --patch --follow would try to resolve patterns relative to the repository root rather than the current working directory. Fix that by using match.files instead of pats, as done elsewhere nearby.
Sat, 12 Jul 2014 20:07:24 +0900 mergetools: add --nofork option to gvimdiff.diffargs for extdiff
Yuya Nishihara <yuya@tcha.org> [Sat, 12 Jul 2014 20:07:24 +0900] rev 21875
mergetools: add --nofork option to gvimdiff.diffargs for extdiff Without --nofork, temporary files are removed immediately before gvimdiff starts. "-d -g -O" are put just for consistency with gvimdiff.args.
Sat, 05 Jul 2014 16:32:28 +0300 contrib/vagrant: use Vagrant for running tests on virtual machine
anatoly techtonik <techtonik@gmail.com> [Sat, 05 Jul 2014 16:32:28 +0300] rev 21874
contrib/vagrant: use Vagrant for running tests on virtual machine $ cd contrib/vagrant $ vagrant up $ vagrant ssh -c ./run-tests.sh Repository is shared at /hgshared in guest machine.
Mon, 14 Jul 2014 18:53:03 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 14 Jul 2014 18:53:03 -0500] rev 21873
merge with stable
Sat, 12 Jul 2014 20:44:00 -0700 log: allow revset for --follow to be lazily evaluated
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 20:44:00 -0700] rev 21872
log: allow revset for --follow to be lazily evaluated It is unclear to me why evaluation was forced. For a repository with over 700,000 commits, 'hg log -f' drops from 1.2 seconds to 0.2 seconds.
Mon, 14 Jul 2014 15:42:31 -0700 parsers: remove unused getintat function
Siddharth Agarwal <sid0@fb.com> [Mon, 14 Jul 2014 15:42:31 -0700] rev 21871
parsers: remove unused getintat function Warning detected by clang.
Mon, 14 Jul 2014 17:55:31 -0500 revset: maintain ordering when subtracting from a baseset (issue4289)
Matt Mackall <mpm@selenic.com> [Mon, 14 Jul 2014 17:55:31 -0500] rev 21870
revset: maintain ordering when subtracting from a baseset (issue4289)
Tue, 15 Jul 2014 00:59:09 +0900 cmdutil: separate building commit text from 'commitforceeditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Jul 2014 00:59:09 +0900] rev 21869
cmdutil: separate building commit text from 'commitforceeditor' This separation makes it easier to extend/hook building commit text from the specified context. This patch uses 'committext' instead of 'edittext' for names of newly added variable and function, because the former is more purpose specific than the latter, even though 'edittext' in 'buildcommittext' is left as it is to reduce amount of diff.
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip