Thu, 18 Apr 2013 15:10:01 +0200 histedit: ensure rules return short hex at all time
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 15:10:01 +0200] rev 19045
histedit: ensure rules return short hex at all time Handling homogeneous data is both simpler and safer.
Thu, 18 Apr 2013 13:51:27 +0200 histedit-test: test unknown command
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:51:27 +0200] rev 19044
histedit-test: test unknown command We had no tested for this case.
Thu, 18 Apr 2013 13:50:59 +0200 histedit-test: test unknown changeset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:50:59 +0200] rev 19043
histedit-test: test unknown changeset We had no tested for this case.
Thu, 18 Apr 2013 13:49:32 +0200 histedit-test: test malformed line
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:49:32 +0200] rev 19042
histedit-test: test malformed line We had not tested for this case.
Thu, 18 Apr 2013 11:54:31 -0400 histedit-test: test that extra revisions are detected
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 11:54:31 -0400] rev 19041
histedit-test: test that extra revisions are detected We had not tested for this case.
Thu, 18 Apr 2013 11:53:58 -0400 histedit-test: test that missing revisions are detected
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 11:53:58 -0400] rev 19040
histedit-test: test that missing revisions are detected We had not tested for this case.
Thu, 18 Apr 2013 11:52:34 -0400 histedit: handle multiple spaces between action and hash (issue3893)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 11:52:34 -0400] rev 19039
histedit: handle multiple spaces between action and hash (issue3893) There is some clue that the previous code intended to handle that but it was actually not the case. As a result action could apply to the empty string '' changeset, leading to the use the current working directory parent in some operations.
Fri, 01 Feb 2013 15:00:23 -0800 http2: sane readline
Brendan Cully <brendan@kublai.com> [Fri, 01 Feb 2013 15:00:23 -0800] rev 19038
http2: sane readline It turns out that it pays off to read more than a byte at a time with a select in between :)
Fri, 01 Feb 2013 14:41:35 -0800 http2: make read use pushchunk/popchunk, eschew itertools
Brendan Cully <brendan@kublai.com> [Fri, 01 Feb 2013 14:41:35 -0800] rev 19037
http2: make read use pushchunk/popchunk, eschew itertools The itertools approach was showing up high in the profile output.
Fri, 01 Feb 2013 14:41:33 -0800 http2: track available data as it changes instead of recomputing it
Brendan Cully <brendan@kublai.com> [Fri, 01 Feb 2013 14:41:33 -0800] rev 19036
http2: track available data as it changes instead of recomputing it With a large amount of available data, this computation can become costly.
Thu, 18 Apr 2013 13:38:49 +0200 histedit-test: rename histedit-revspec into histedit-argument
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:38:49 +0200] rev 19035
histedit-test: rename histedit-revspec into histedit-argument We have no testing for argument. This small file seems perfect once but needs a rename.
Thu, 18 Apr 2013 13:35:43 +0200 histedit-test: remove unnecessary graphlog extension
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:35:43 +0200] rev 19034
histedit-test: remove unnecessary graphlog extension Graphlog is now in core.
Thu, 18 Apr 2013 13:34:43 +0200 histedit-test: drop skip logic for older mercurial version
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:34:43 +0200] rev 19033
histedit-test: drop skip logic for older mercurial version We are shipped in core now.
Mon, 15 Apr 2013 18:57:04 -0300 hgweb: refactor checks for granting and revoking user permissions
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 15 Apr 2013 18:57:04 -0300] rev 19032
hgweb: refactor checks for granting and revoking user permissions Provides an entry point for extensions implementing more complex authorization schemes. Original patch proposed by Markus Zapke-GrĂ¼ndemann.
Wed, 17 Apr 2013 14:38:02 -0500 check-code: add check for lock release order
Matt Mackall <mpm@selenic.com> [Wed, 17 Apr 2013 14:38:02 -0500] rev 19031
check-code: add check for lock release order
Wed, 17 Apr 2013 12:57:26 -0500 parsers: fix variable declaration position issue
Matt Mackall <mpm@selenic.com> [Wed, 17 Apr 2013 12:57:26 -0500] rev 19030
parsers: fix variable declaration position issue
Wed, 17 Apr 2013 21:06:48 +0400 zsh_completion: complete all files for `commit/backout --logfile`
Nikolaj Sjujskij <sterkrig@myopera.com> [Wed, 17 Apr 2013 21:06:48 +0400] rev 19029
zsh_completion: complete all files for `commit/backout --logfile` Up until now commit/backout `--logfile` option was completed only with *.txt-files. This requirement is a bit too strong (and is nowhere to be stated) so it's better to complete with all files. Stolen from zsh.git repo, c5fce37b changeset by Oliver Kiddle.
Tue, 16 Apr 2013 19:20:23 +0200 transplant: improve documentation
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 19:20:23 +0200] rev 19028
transplant: improve documentation
Tue, 16 Apr 2013 19:18:38 +0200 transplant: clarify what --branch do - it has nothing to do with branches
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 19:18:38 +0200] rev 19027
transplant: clarify what --branch do - it has nothing to do with branches --branch specifies heads and has nothing to do with named branches, and it only deals with topological branches to the same extent as all other DAG operations do.
Wed, 17 Apr 2013 10:25:14 +0200 import: inline checkexact function
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 17 Apr 2013 10:25:14 +0200] rev 19026
import: inline checkexact function We have a sngle call now, no need to make it a function.
Wed, 17 Apr 2013 10:22:28 +0200 import: factor out checkexact
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 17 Apr 2013 10:22:28 +0200] rev 19025
import: factor out checkexact The two calls are strictly identical. We can simply move it after the if/else clause.
Wed, 17 Apr 2013 03:41:08 +0200 amend: fix unlocking order - first lock then wlock
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:41:08 +0200] rev 19024
amend: fix unlocking order - first lock then wlock
Wed, 17 Apr 2013 03:40:18 +0200 codingstyle: remove trailing spaces in various text files
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:40:18 +0200] rev 19023
codingstyle: remove trailing spaces in various text files Better do it once than see random changes in diffs later.
Wed, 17 Apr 2013 03:39:36 +0200 tests: run check-code on Python files without .py extension
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:39:36 +0200] rev 19022
tests: run check-code on Python files without .py extension
Tue, 16 Apr 2013 21:14:50 +0200 histedit: move outgoing processing to its own function
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 21:14:50 +0200] rev 19021
histedit: move outgoing processing to its own function Every piece of code extracted from the main command is a win. We simplify changeset determination in the process. Parent ceases being a list before becoming a node. We how have a root variable containing a node all the time.
Tue, 16 Apr 2013 21:17:13 +0200 histedit: move all arguments checks to the beginning of the command
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 21:17:13 +0200] rev 19020
histedit: move all arguments checks to the beginning of the command This changeset move all checks and raises related to arguments validation to the top of the file. This gathers all the logic in one place and clarifies the code doing actual work. This paves the way for splitting this gigantic function in separated functions. A `goal` variable is introduced in the process. It holds the action to be done by this invocation (new, continue or abort). An invalid invocation is found in the process (the new code is a bit stricter).
Tue, 16 Apr 2013 21:57:25 -0500 histedit-test: generalise --commands "-" usage
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 21:57:25 -0500] rev 19019
histedit-test: generalise --commands "-" usage This is simpler than temporary file version. There some minor test changes since commit messages are no longer modifed. There is still some tests using --commands with a real file.
Tue, 16 Apr 2013 20:48:37 +0200 histedit: allow "-" as a command file
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 20:48:37 +0200] rev 19018
histedit: allow "-" as a command file When "-" is specified as a command file, we read rules from stdin. Alter a single test to demo the behavior, but most of them could benefit from this. There is minor change in test output resulting from the fact we no longer change log messages.
Tue, 16 Apr 2013 16:58:25 +0200 histedit: properly handle --continue on empty fold
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 16:58:25 +0200] rev 19017
histedit: properly handle --continue on empty fold When all changes from the fold have been dropped, the --continue code was confused. This changeset handles this case. The test for this case existed but was broken.
Tue, 16 Apr 2013 20:50:17 +0200 histedit-test: replace obscure python script by a plain file
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 20:50:17 +0200] rev 19016
histedit-test: replace obscure python script by a plain file One of the tests uses a python script to edit the histedit commands on the fly. It was hard to read and likely to break. This is replaced by a plain command file. Doing so made me discover that the python script is incorrect. The "+6" regexp never matched because the revision number is wrong. This error is kept in the replacement for now. Fixing the histedit command triggers a traceback in histedit. A later changeset will fix the error and restore the intended test.
Tue, 16 Apr 2013 16:22:38 +0200 test: improve documentation of some histedit tests
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 16:22:38 +0200] rev 19015
test: improve documentation of some histedit tests Each test section is clearly separated from the others and gains some helpful documentation.
Tue, 16 Apr 2013 23:24:52 +0200 test: use a lighter log style in histedit test
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 23:24:52 +0200] rev 19014
test: use a lighter log style in histedit test The default log displays a log of information that is useless for histedit tests. Having a cleaner log help readability of those tests a lot. This does not change anything to the test semantic.
Tue, 16 Apr 2013 22:00:41 -0500 subrepo: add regression test for issue3870
Kevin Bullock <kbullock@ringworld.org> [Tue, 16 Apr 2013 22:00:41 -0500] rev 19013
subrepo: add regression test for issue3870
Tue, 16 Apr 2013 22:00:05 -0500 subrepo: clone of git sub-repository creates incorrect git branch (issue3870)
pozheg <pozheg@gmail.com> [Tue, 16 Apr 2013 22:00:05 -0500] rev 19012
subrepo: clone of git sub-repository creates incorrect git branch (issue3870) Mercurial handles git subrepos by incorrect way. If the mercurial repo has a git sub-repo and somebody started a new branch in the subrepo and push it into git, the next one who will clone the whole repo will get incorrect branch name in the git subrepo.
Tue, 16 Apr 2013 14:39:37 -0700 dispatch: print 'abort:' when a pre-command hook fails (BC)
Siddharth Agarwal <sid0@fb.com> [Tue, 16 Apr 2013 14:39:37 -0700] rev 19011
dispatch: print 'abort:' when a pre-command hook fails (BC) This also changes the exit code from whatever the hook returned to 255. This brings it in line with all the other hooks that abort.
Mon, 15 Apr 2013 23:31:56 +0200 largefiles: don't hash all largefiles when initializing a lfdirstate
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:31:56 +0200] rev 19010
largefiles: don't hash all largefiles when initializing a lfdirstate The largefiles will be hashed on demand if necessary ... and sometimes it isn't necessary.
Tue, 16 Apr 2013 00:40:21 +0200 largefiles: use filechunkiter for iterating largefile when serving getlfile
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 00:40:21 +0200] rev 19009
largefiles: use filechunkiter for iterating largefile when serving getlfile The default file iterator is line based and will give odd chunk sizes - often very short and relatively expensive.
Mon, 15 Apr 2013 23:37:43 +0200 largefiles: stat all largefiles in one batch before downloading
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:37:43 +0200] rev 19008
largefiles: stat all largefiles in one batch before downloading This avoids a lot of expensive roundtrips to remote repositories ... but might be slightly slower for local operations. This will also change some aborts on missing files to warnings. That will in some situations make it possible to continue working on a repository with missing largefiles.
Mon, 15 Apr 2013 23:34:36 +0200 largefiles: 'put' should store 'source' file in under 'hash', also in localstore
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:34:36 +0200] rev 19007
largefiles: 'put' should store 'source' file in under 'hash', also in localstore
Tue, 16 Apr 2013 04:35:10 +0200 largefiles: getlfile must hit end of HTTP chunked streams to reuse connections
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 04:35:10 +0200] rev 19006
largefiles: getlfile must hit end of HTTP chunked streams to reuse connections We did read the exactly the right number of bytes from the response body. But if the response came in chunked encoding then that meant that the HTTP layer still hadn't read the last 0-sized chunk and expected the app layer to read more data from the stream. The app layer was however happy and sent another request which had to be sent on another HTTP connection while the old one was lingering until some other event closed the connection. Adding an extra read where we expect to hit the end of file makes the HTTP connection ready for reuse. This thus plugs a real socket leak. To distinguish HTTP from SSH we look at self's class, just like it is done in putlfile.
Tue, 16 Apr 2013 01:55:57 +0200 largefiles: drop limitreader, use filechunkiter limit
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 01:55:57 +0200] rev 19005
largefiles: drop limitreader, use filechunkiter limit filechunkiter.close was a noop.
Tue, 16 Apr 2013 01:46:39 +0200 largefiles: move protocol conversion into getlfile and make it an iterable
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 01:46:39 +0200] rev 19004
largefiles: move protocol conversion into getlfile and make it an iterable Avoid the intermediate limitreader and filechunkiter between getlfile and copyandhash - return the right protocol and put the complexity where it better can be managed.
Mon, 15 Apr 2013 23:47:04 +0200 largefiles: don't close the fd passed to store._getfile
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:47:04 +0200] rev 19003
largefiles: don't close the fd passed to store._getfile
Mon, 15 Apr 2013 23:43:50 +0200 largefiles: remove blecch from lfutil.copyandhash - don't close the passed fd
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:43:50 +0200] rev 19002
largefiles: remove blecch from lfutil.copyandhash - don't close the passed fd
Mon, 15 Apr 2013 23:43:44 +0200 largefiles: drop lfutil.blockstream - use filechunkiter like everybody else
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:43:44 +0200] rev 19001
largefiles: drop lfutil.blockstream - use filechunkiter like everybody else The old chunk size is kept - just to avoid changing it.
Mon, 15 Apr 2013 23:35:43 +0200 largefiles: refactoring - use findfile in localstore._getfile
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:35:43 +0200] rev 19000
largefiles: refactoring - use findfile in localstore._getfile
Mon, 15 Apr 2013 23:35:18 +0200 largefiles: refactoring - return hex from _getfile and copyandhash
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:35:18 +0200] rev 18999
largefiles: refactoring - return hex from _getfile and copyandhash
Mon, 15 Apr 2013 23:32:33 +0200 largefiles: refactoring - create destination dir in lfutil.link
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:32:33 +0200] rev 18998
largefiles: refactoring - create destination dir in lfutil.link
Tue, 09 Apr 2013 23:40:11 +0900 summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:11 +0900] rev 18997
summary: clear "commonincoming" also if branches are different Before this patch, "commonincoming" calculated by "discovery.findcommonincoming()" is cleared, only if "default" URL without branch part (tail "#branch" of URL) differs from "default-push" URL without branch part. But common revisions in "commonincoming" calculated for a branch doesn't include ones for another branch, even if URLs without branch part are same. The result of "discovery.findcommonoutgoing()" invocation with such "commonincoming" becomes incorrect in some cases. This patch clears "commonincoming", also if branch part of "default" differs from one of "default-push". To avoid redundant looking up: - "ui.expandpath('default')" and "ui.expandpath('default-push', 'default')" are not compared directly, even though they contain branch information, because they are not yet normalized by "hg.parseurl()": tail "/" of path, for example - "commonincoming" is not cleared, if branch isn't specified in "default" URL, because such "commonincoming" contains common revisions for all branches This patch also tests "different path, same branch" pattern to check careless degrading around comparison between source and destination.
Tue, 09 Apr 2013 23:40:11 +0900 summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:11 +0900] rev 18996
summary: make "incoming" information sensitive to branch in URL (issue3830) Before this patch, "incoming" information of "hg summary --remote" is not sensitive to the branch specified in the URL of the destination repository, even though "hg pull"/"hg incoming" are so. Invocation of "discovery.findcommonincoming()" without "heads" argument treats revisions on branches other than the one specified in the URL as incoming ones unexpectedly. This patch looks head revisions, which are already detected by "hg.addbranchrevs()" from URL, up against "other" repository, and invokes "discovery.findcommonincoming()" with list of them as "heads" to limit calculation of incoming revisions.
Tue, 09 Apr 2013 23:40:10 +0900 histedit: make "hg histedit" sensitive to branch in URL
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:10 +0900] rev 18995
histedit: make "hg histedit" sensitive to branch in URL Before this patch, "hg histedit" are not sensitive to the branch specified in the URL of the destination repository, even though "hg push"/"hg outgoing" are so: Invocation of "discovery.findcommonoutgoing()" without "onlyheads" argument treats revisions on branches other than the one specified in the URL as outgoing ones unexpectedly. This patch specifies list of head revisions, which are already detected by "hg.addbranchrevs()" from URL and looked up against local repository, as "onlyheads" to "discovery.findcommonoutgoing()" to limit calculation of outgoing revisions.
Tue, 09 Apr 2013 23:40:10 +0900 summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:10 +0900] rev 18994
summary: make "outgoing" information sensitive to branch in URL (issue3829) Before this patch, "outgoing" information of "hg summary --remote" is not sensitive to the branch specified in the URL of the destination repository, even though "hg push"/"hg outgoing" are so: Invocation of "discovery.findcommonoutgoing()" without "onlyheads" argument treats revisions on branches other than the one specified in the URL as outgoing ones unexpectedly. This patch looks head revisions, which are already detected by "hg.addbranchrevs()" from URL, up against local repository, and invokes "discovery.findcommonoutgoing()" with list of them as "onlyheads" to limit calculation of outgoing revisions.
Fri, 29 Mar 2013 22:57:16 +0900 annotate: increase refcount of each revisions correctly (issue3841)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 29 Mar 2013 22:57:16 +0900] rev 18993
annotate: increase refcount of each revisions correctly (issue3841) Before this patch, refcount (managed in "needed") of parents of each revisions in "visit" is increased, only when parent is not annotated yet (examined by "p not in hist"). But this causes less refcount of the revision like "A" in the tree below ("A" is assumed as the second parent of "C"): A --- B --- C \ / \-----/ Steps of annotation for "C" in this case are shown below: 1. for "C" 1.1 increase refcount of "B" 1.2 increase refcount of "A" (=> 1) 1.3 defer annotation for "C" 2. for "A" 2.1 annotate for "A" (=> put result into "hist[A]") 2.2 clear "pcache[A]" ("pcache[A] = []") 3. for "B" 3.1 not increase refcount of "A", because "A not in hist" is False 3.2 annotate for "B" 3.3 decrease refcount of "A" (=> 0) 3.4 delete "hist[A]", even though "A" is still needed by "C" 3.5 clear "pcache[B]" 4. for "C", again 4.1 not increase refcount of "B", because "B not in hist" is False 4.2 increase refcount of "A" (=> 1) 4.3 defer annotation for "C" 5. for "A", again 5.1 annotate for "A" (=> put result into "hist[A]", again) 5.2 clear "pcache[A]" 6. for "C", once again 6.1 not increase refcount of "B", because "B not in hist" is False 6.2 not increase refcount of "A", because "A not in hist" is False 6.3 annotate for "C" 6.4 decrease refcount of "A", and delete "hist[A]" 6.5 decrease refcount of "B", and delete "hist[B]" 6.6 clear "pcache[C]" At step (5.1), annotation for "A" mis-recognizes that all lines are created at "A", because "pcache[A]" already cleared at step (2.2) prevents from scanning ancestors of "A". So, annotation for "C" or its descendants loses information about "A" or its ancestors. The root cause of this problem is that refcount of "A" is decreased at step (3.3), even though it isn't increased at step (3.1). To increase refcount correctly, this patch increases refcount of each parents of each revisions: - regardless of "p not in hist" or not, and - only once for each revisions in "visit" (by "not pcached") In fact, this problem should occur only on legacy repositories in which a filelog includes the merging between the revision and its ancestor (as the second parent), because: - tree is scanned in depth-first without such merging, revisions in "visit" refer different revisions as parent each other - recent Mercurial doesn't allow such merging changelog and manifest can include such merging someway, but filelogs can't, because "localrepository._filecommit()" converts such merging request to linear history. This patch tests merging cases below: these cases are from filelog of "mercurial/commands.py" in the repository of Mercurial itself. - both parents are same 10 --- 11 --- 12 \_/ filelogrev: changesetid: 10 00ea3613f82c 11 fc4a6e5b5812 12 4f802588cdfb - the second parent is also ancestor of the first one 37 --- 38 --- 39 --- 40 \________/ filelogrev: changesetid: 37 f8d56da6ac8f 38 38919e1c254d 39 d3400605d246 40 f06a4a3b86a7
Fri, 29 Mar 2013 22:57:15 +0900 annotate: reuse already calculated annotation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 29 Mar 2013 22:57:15 +0900] rev 18992
annotate: reuse already calculated annotation Before this patch, annotation is re-calculated even if it is already calculated. This may cause unexpected annotation, because already cleared "pcache" ("pcache[f] = []") prevents from scanning ancestors. This patch reuses already calculated annotation if it is available. In fact, "reusable" situation should be seen only on legacy repositories in which a filelog include the merging between the revision and its ancestor, because: - tree is scanned in depth-first without such merging, annotation result should be released soon - recent Mercurial doesn't allow such merging changelog and manifest can include such merging someway, but filelogs can't, because "localrepository._filecommit()" converts such merging request to linear history.
Wed, 17 Apr 2013 00:29:54 +0400 log: fix behavior with empty repositories (issue3497)
Alexander Plavin <me@aplavin.ru> [Wed, 17 Apr 2013 00:29:54 +0400] rev 18991
log: fix behavior with empty repositories (issue3497) Make output in this special case consistent with general case one.
Tue, 16 Apr 2013 13:22:29 -0500 merge with crew
Matt Mackall <mpm@selenic.com> [Tue, 16 Apr 2013 13:22:29 -0500] rev 18990
merge with crew
Tue, 16 Apr 2013 10:08:20 -0700 revlog: don't cross-check ancestor result against Python version
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:20 -0700] rev 18989
revlog: don't cross-check ancestor result against Python version
Tue, 16 Apr 2013 10:08:20 -0700 parsers: a C implementation of the new ancestors algorithm
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:20 -0700] rev 18988
parsers: a C implementation of the new ancestors algorithm The performance of both the old and new Python ancestor algorithms depends on the number of revs they need to traverse. Although the new algorithm performs far better than the old when revs are numerically and topologically close, both algorithms become slow under other circumstances, taking up to 1.8 seconds to give answers in a Linux kernel repo. This C implementation of the new algorithm is a fairly straightforward transliteration. The only corner case of interest is that it raises an OverflowError if the number of GCA candidates found during the first pass is greater than 24, to avoid the dual perils of fixnum overflow and trying to allocate too much memory. (If this exception is raised, the Python implementation is used instead.) Performance numbers are good: in a Linux kernel repo, time for "hg debugancestors" on two distant revs (24bf01de7537 and c2a8808f5943) is as follows: Old Python: 0.36 sec New Python: 0.42 sec New C: 0.02 sec For a case where the new algorithm should perform well: Old Python: 1.84 sec New Python: 0.07 sec New C: measures as zero when using --time (This commit includes a paranoid cross-check to ensure that the Python and C implementations give identical answers. The above performance numbers were measured with that check disabled.)
Tue, 16 Apr 2013 10:08:19 -0700 revlog: choose a consistent ancestor when there's a tie
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:19 -0700] rev 18987
revlog: choose a consistent ancestor when there's a tie Previously, we chose a rev based on numeric ordering, which could cause "the same merge" in topologically identical but numerically different repos to choose different merge bases. We now choose the lexically least node; this is stable across different revlog orderings.
Tue, 16 Apr 2013 10:08:18 -0700 ancestor: a new algorithm that is faster for nodes near tip
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:18 -0700] rev 18986
ancestor: a new algorithm that is faster for nodes near tip Instead of walking all the way to the root of the DAG, we generate a set of candidate GCA revs, then figure out which ones will win the race to the root (usually without needing to traverse all the way to the root). In the common case of nodes that are close to each other in both revision number and topology, this is usually a big win: it makes "hg --time debugancestors" up to 9 times faster than the more general ancestor function when measured on heads of the linux-2.6 hg repo. Victory is not assured, however. The older function can still win by a large margin if one node is much closer to the root than the other, or by a much smaller amount if one is an ancestor of the other. For now, we've also got a small paranoid harness function that calls both ancestor functions on every input and ensures that they give equivalent answers. Even without the checker function, the old ancestor function needs to stay alive for the time being, as its generality is used by context.filectx.merge.
Tue, 16 Apr 2013 15:33:18 +0200 update: allow dirty update to foreground (successors)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 15:33:18 +0200] rev 18985
update: allow dirty update to foreground (successors) Update to "foreground" are no longer seen as cross branch update. "Foreground" are descendants or successors (or successors of descendants (or descendant of successors (etc))). This allows to update with uncommited changes that get automatically merged. This changeset is a small step forward. We want to allow dirty update to "background" (precursors) and takes obsolescence in account when finding the default update destination. But those requires deeper changes and will comes in later changesets.
Tue, 16 Apr 2013 15:16:33 +0200 obsolete: extract foreground computation from bookmark.validdest
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 15:16:33 +0200] rev 18984
obsolete: extract foreground computation from bookmark.validdest This foreground logic will be reused by update logic.
Mon, 15 Apr 2013 17:10:58 +0200 destroyed: invalidate phraserevs cache in all case (issue3858)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 15 Apr 2013 17:10:58 +0200] rev 18983
destroyed: invalidate phraserevs cache in all case (issue3858) When revisions are destroyed, the `phaserevs` cache becomes invalid in most case. This cache hold a `{rev => phase}` mapping and revision number most likely changed. Since 1c8e0d6ac3b0, we filter unknown phases' roots after changesets destruction. When some roots are filtered the `phaserevs` cache is invalidated. But not if none root where destroyed. We now invalidate the cache in all case filtered root or not. This bug was a bit tricky to reproduce as in most case we either: * rebase a set a draft changeset including root (phaserev invalidated) * strip tip-most changesets (no re-numbering of revision) Note that the invalidation of `phaserevs` are not strictly needed when only tip-most part of the history have been destroyed. But I do not expect the overhead to be significant.
Mon, 15 Apr 2013 01:59:11 +0200 largefiles: deprecate --all-largefiles for pull
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:11 +0200] rev 18982
largefiles: deprecate --all-largefiles for pull The same can be achieved with --lfrev pulled() and we shouldn't advertise unnecessary command line options.
Mon, 15 Apr 2013 01:59:11 +0200 largefiles: implement pull --all-largefiles as a special case of --lfrev
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:11 +0200] rev 18981
largefiles: implement pull --all-largefiles as a special case of --lfrev
Mon, 15 Apr 2013 01:59:11 +0200 largefiles: drop --cache-largefiles again
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:11 +0200] rev 18980
largefiles: drop --cache-largefiles again This goes a step further than d69585a5c5c0 and backs out the unreleased --cache-largefiles option. The same can be achieved with --lfrev heads(pulled()) and we shouldn't introduce unnecessary command line options.
Mon, 15 Apr 2013 01:59:04 +0200 largefiles: introduce pulled() revset expression for use in --lfrev
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:04 +0200] rev 18979
largefiles: introduce pulled() revset expression for use in --lfrev This provides a general way to do what already can be done with --all-largefiles and --cache-largefiles.
Mon, 15 Apr 2013 01:57:16 +0200 largefiles: introduce pull --lfrev option
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:57:16 +0200] rev 18978
largefiles: introduce pull --lfrev option The revset will be evaluated after the changesets has been pulled, and missing largefiles from matching revisions will be pulled to the local caches. This in combination with revsets will make it possible to specify different strategies for pulling largefiles. The revset expressions used for this option might be quite complex and will probably be most useful from scripts or an alias ... but less complicated than configuring hooks.
Mon, 15 Apr 2013 01:54:43 +0200 largefiles: refactor overridepull internals
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:54:43 +0200] rev 18977
largefiles: refactor overridepull internals
Mon, 15 Apr 2013 01:53:37 +0200 largefiles: introduce lfpull command for pulling missing largefiles
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:53:37 +0200] rev 18976
largefiles: introduce lfpull command for pulling missing largefiles
Mon, 15 Apr 2013 01:46:10 +0200 largefiles: update help
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:46:10 +0200] rev 18975
largefiles: update help Some clarifications, and some clean-up after --cache-largefiles was introduced.
Mon, 15 Apr 2013 01:43:31 +0200 largefiles: fix cat of non-largefiles from subdirectory
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:43:31 +0200] rev 18974
largefiles: fix cat of non-largefiles from subdirectory We were calling back to the original commands.cat from inside the walk loop that handled and filtered out largefiles. That did however happen with file paths relative to repo root and the original cat would fail when it applied its own walk and match on top of that. Instead we now duplicate and modify the code from commands.cat and patch it to handle both normal and largefiles. A change in test output shows that this also makes the exit code with largefiles consistent with the normal one in the case where one of several specified files are missing. This also fixes the combination of --output and largefiles.
Mon, 15 Apr 2013 01:41:49 +0200 largefiles: don't store whole file in memory for 'cat'
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:41:49 +0200] rev 18973
largefiles: don't store whole file in memory for 'cat'
Tue, 16 Apr 2013 13:55:38 +0200 mergetools: rename 'base' to 'merged' in meld
ronvoe12249 <ronny.voelker@elaxy.com> [Tue, 16 Apr 2013 13:55:38 +0200] rev 18972
mergetools: rename 'base' to 'merged' in meld This makes it clear which panel is the target of the merge operation.
Thu, 21 Feb 2013 14:49:25 +0100 mergetools: avoid losing the merged version with meld
ronvoe12249 <ronny.voelker@elaxy.com> [Thu, 21 Feb 2013 14:49:25 +0100] rev 18971
mergetools: avoid losing the merged version with meld Add -o $output. When using Meld as intended (merge from left and right into the center panel), the merged version is written to the wrong file without this option ($base, a temporary file, which is ignored by Mercurial). Add meld.check=changed as a secondary safety net.
Tue, 16 Apr 2013 09:44:29 -0500 templatekw: add default styles for hybrid types (issue3887)
Matt Mackall <mpm@selenic.com> [Tue, 16 Apr 2013 09:44:29 -0500] rev 18970
templatekw: add default styles for hybrid types (issue3887) This allows elements like file_copies to be printed as 'name (source)' when used with join.
Wed, 10 Apr 2013 02:27:35 +0900 largefiles: improve repo wrapping detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 10 Apr 2013 02:27:35 +0900] rev 18969
largefiles: improve repo wrapping detection Before this patch, repo wrapping detection in "reposetup()" of largefiles can detect only limited repo wrapping: replacing target functions by another one named as "wrap". So, it can't detect repo wrapping even in recommended style: replacing "__class__" of repo by derived class. This patch can detect repo wrapping in both styles below: - replacing "__class__" of repo by derived class (recommended style): class derived(repo.__class__): def push(self, *args, **kwargs): return super(derived, self).push(*args, **kwargs) repo.__class__ = derived - replacing function of repo by another one (not recommended style): orgpush = repo.push def push(*args, **kwargs): return orgpush(*args, **kwargs) repo.push = push
Thu, 21 Mar 2013 23:27:37 +0100 hgweb: respond HTTP_NOT_FOUND when an archive request does not match any files
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 21 Mar 2013 23:27:37 +0100] rev 18968
hgweb: respond HTTP_NOT_FOUND when an archive request does not match any files
Thu, 21 Mar 2013 22:09:15 +0100 archive: raise error.Abort if the file pattern matches no files
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 21 Mar 2013 22:09:15 +0100] rev 18967
archive: raise error.Abort if the file pattern matches no files Note that we could raise this exception even if no pattern were specified, but the revision contained no files. However this should not happen in practice since in that case commands.py/archive would exit earlier with an "no working directory: please specify a revision" error message instead.
Sat, 09 Feb 2013 14:22:52 -0500 ui: add 'force' parameter to traceback() to override the current print setting
Matt Harbison <matt_harbison@yahoo.com> [Sat, 09 Feb 2013 14:22:52 -0500] rev 18966
ui: add 'force' parameter to traceback() to override the current print setting This will allow a current traceback.print_exc() call in dispatch to be replaced with ui.traceback() even if --traceback was not given on the command line.
Sat, 09 Feb 2013 14:15:34 -0500 ui: add support for fully printing chained exception stacks in ui.traceback()
Matt Harbison <matt_harbison@yahoo.com> [Sat, 09 Feb 2013 14:15:34 -0500] rev 18965
ui: add support for fully printing chained exception stacks in ui.traceback() Currently, only SubrepoAbort has a cause chained to it.
Wed, 06 Feb 2013 22:54:09 -0500 subrepo: chain the original exception to SubrepoAbort
Matt Harbison <matt_harbison@yahoo.com> [Wed, 06 Feb 2013 22:54:09 -0500] rev 18964
subrepo: chain the original exception to SubrepoAbort The tracebacks in subrepos are truncated at the point where the original exception is caught and SubrepoAbort is raised in its place since 9e3910db4e78. That hides the most relevant subrepo methods when an error occurs. Python 2.x doesn't support chaining exceptions, so it is manually done here for manual printing later.
Mon, 15 Apr 2013 01:41:47 +0200 debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:41:47 +0200] rev 18963
debugrebuildstate: rename to debugrebuilddirstate There is a lot of state, but this command is for rebuilding the dirstate.
Mon, 15 Apr 2013 01:41:27 +0200 debugstate: rename to debugdirstate
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:41:27 +0200] rev 18962
debugstate: rename to debugdirstate There is a lot of state, but this command is for debugging the dirstate.
Mon, 15 Apr 2013 01:39:02 +0200 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:39:02 +0200] rev 18961
debugrebuildstate: clarify that rev can't be specified without -r -r has a default value of '' in the command line. The function default value of 'tip' is thus never used and any attempt at specifying revisions without -r will fail. It seems like then intended behavior was that 'hg debugrebuildstate' without any parameters should set the parents to tip. That would be very confusing now when the command primarily is used to recover from incorrect stat info. It is apparently undocumented that '' is the same as '.' ... unless it is passed in a place where revsets are used.
Mon, 15 Apr 2013 01:37:23 +0200 check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18960
check-code: check txt files for trailing whitespace
Mon, 15 Apr 2013 01:37:23 +0200 check-code: catch trailing space in comments
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18959
check-code: catch trailing space in comments
Mon, 15 Apr 2013 01:37:23 +0200 spelling: fix typos and spelling errors
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18958
spelling: fix typos and spelling errors
Thu, 11 Apr 2013 14:54:18 +0200 wireproto: clarify cryptic 'remote: unsynced changes' error message on push
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:54:18 +0200] rev 18957
wireproto: clarify cryptic 'remote: unsynced changes' error message on push The message was not very much to the point and did not in any way help an ordinary user. 'repository changed while preparing/uploading bundle - please try again' is more correct, gives the user some understanding of what is going on, and tells how to 'recover' from the situation. The 'bundle' aspect could be seen as an implementation detail that shouldn't be mentioned, but I think it helps giving an exact error message. The message could still leave the user wondering why Mercurial doesn't lock the repo and how unsafe it thus is. Explaining that is however too much detail.
Mon, 11 Feb 2013 00:43:12 +0100 export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Feb 2013 00:43:12 +0100] rev 18956
export: export working directory parent by default A common usecase for export is to preview the patch that will be patchbombed or to see what changed in a revision found by bisect. Showing the working directory parent is thus a useful and obvious default.
Wed, 10 Apr 2013 13:12:24 +0200 commit: allow closing "non-head" changesets
Mads Kiilerich <madski@unity3d.com> [Wed, 10 Apr 2013 13:12:24 +0200] rev 18955
commit: allow closing "non-head" changesets Backout acd61dc44a39. The changeset prevented closing non-head changesets but did not provide any rationale or test case and I don't see what value it adds. Users might have their reasons to commit something anywhere - and close it immediately. And contrary to the comment that is removed: The topo heads set is _not_ included in the branch heads set of the current branch. It do not include closed topological heads. The change thus prevented closing commits on top of closing commits. A valid usecase for that is to merge closed heads to reduce the number of topological heads. The only existing test coverage for this is the failing double close in test-revset.t. It was added in 3cc2e34d7a7d and seems to not be intentional.
Wed, 13 Jun 2012 23:06:34 +0200 record: ignore trailing content when parsing patches - introduce 'other' lines
Mads Kiilerich <mads@kiilerich.com> [Wed, 13 Jun 2012 23:06:34 +0200] rev 18954
record: ignore trailing content when parsing patches - introduce 'other' lines This makes record work more like import which ignores for instance mail footers in a patch file. This also makes it possible for TortoiseHg to preview unapplied patches containing such footers.
Thu, 11 Apr 2013 19:03:33 +0200 record: abort on malformed patches instead of crashing
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 19:03:33 +0200] rev 18953
record: abort on malformed patches instead of crashing
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use "vfs.rename()" instead of "util.rename()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18952
localrepo: use "vfs.rename()" instead of "util.rename()" This patch makes "_journalfiles()" return a list of pairs of journal file and corresponded vfs instance instead of a list of journal files in full path, to use "vfs.rename()" instead of "util.rename()" in "aftertrans()". "undofiles()" still returns a list of undo files in full path, because "repair.strip()" expects such list. It'll be also made to return a list of pairs of undo file and corresponded vfs at vfs migration for "repair.strip()" in the near future.
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use "vfs.setflags()" instead of "util.setflags()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18951
localrepo: use "vfs.setflags()" instead of "util.setflags()"
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use "vfs.readlink()" instead of "os.readlink()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18950
localrepo: use "vfs.readlink()" instead of "os.readlink()"
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use "vfs.islink()" instead of "os.path.islink()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18949
localrepo: use "vfs.islink()" instead of "os.path.islink()"
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use "vfs.rename()" instead of "util.rename()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18948
localrepo: use "vfs.rename()" instead of "util.rename()"
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use "vfs.exists()" instead of "os.path.exists()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18947
localrepo: use "vfs.exists()" instead of "os.path.exists()"
Mon, 15 Apr 2013 01:22:15 +0900 localrepo: use vfs instead of "os.path.*" in sharedpath checking
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18946
localrepo: use vfs instead of "os.path.*" in sharedpath checking In the point of view of efficiency, "vfs" instance created in this patch should be passed to and reuse in "store.store()" invocation just after patched code block, because "store" object is initialized by vfs created with "self.sharedpath". eBut to focus just on migration from direct file I/O API accessing to vfs, this patch uses created vfs as temporary one. Refactoring around "store.store()" invocation will be done in the future.
Mon, 15 Apr 2013 01:22:15 +0900 vfs: split "expand" into "realpath"/"expandpath" to apply each separately
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18945
vfs: split "expand" into "realpath"/"expandpath" to apply each separately Before this patch, vfs constructor applies both "util.expandpath()" and "os.path.realpath()" on "base" path, if "expand" is True. This patch splits it into "realpath" and "expandpath", to apply each functions separately: this splitting can allow to use vfs also where one of each is not needed.
Fri, 18 Jan 2013 15:54:09 +0100 unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Jan 2013 15:54:09 +0100] rev 18944
unionrepo: read-only operations on a union of two localrepos unionrepo is just like bundlerepo without bundles. The implementation is very similar to bundlerepo, but I don't see any obvious way to generalize it. Some most obvious use cases for this would be log and diff across local repos, as a kind of preview of pulls, for instance: $ hg -R union:repo1+repo2 heads $ hg -R union:repo1+repo2 log -r REPO1REV -r REPO2REV $ hg -R union:repo1+repo2 log -r '::REPO1REV-::REPO2REV' $ hg -R union:repo1+repo2 log -r 'ancestor(REPO1REV,REPO2REV)' $ hg -R union:repo1+repo2 diff -r REPO1REV -r REPO2REV This is going to be used in RhodeCode, and Bitbucket already uses something similar. Having a core implementation would be beneficial.
Mon, 15 Apr 2013 23:52:57 +0900 subrepo: fix exception on revert when "all" option is omitted
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Apr 2013 23:52:57 +0900] rev 18943
subrepo: fix exception on revert when "all" option is omitted Since fafdff7e9c43, backout does not set opts['all'], which causes KeyError at hgsubrepo.revert.
Sun, 14 Apr 2013 19:05:19 -0500 histedit: update tests for new intervention framework
Matt Mackall <mpm@selenic.com> [Sun, 14 Apr 2013 19:05:19 -0500] rev 18942
histedit: update tests for new intervention framework
Fri, 08 Mar 2013 21:50:27 +0100 test-subrepo: add tests for subrepo "storeclean" checks
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 08 Mar 2013 21:50:27 +0100] rev 18941
test-subrepo: add tests for subrepo "storeclean" checks These tests verify that subrepos are not pushed when their store is clean versus a given target repository.
Sat, 16 Feb 2013 01:21:40 +0100 subrepo: do not push mercurial subrepos whose store is clean
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:21:40 +0100] rev 18940
subrepo: do not push mercurial subrepos whose store is clean This patch stops mercurial from pushing unmodified subrepos. An unmodified subrepo is one whose store is "clean" versus a given target subrepo. Note that subrepos may have a clean store versus a target repo but not versus another. This patch handles this scenario by individually keeping track of the state of the store versus all push targets. Tests will be added on the following revision.
Sat, 16 Feb 2013 01:18:53 +0100 subrepo: implement "storeclean" method for mercurial subrepos
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:18:53 +0100] rev 18939
subrepo: implement "storeclean" method for mercurial subrepos The mercurial subrepo "storeclean" method works by calculating a "store hash" of the repository state and comparing it to a cached store hash. The store hash is always cached when the repository is cloned from or pushed to a remote repository, but also on pull as long as the repository already had a clean store. If the hashes match the store is "clean" versus the selected repository. Note that this method is currenty unused, but it will be used by a later patch. The store hash is calculated by hashing several key repository files, such as the bookmarks file the phaseroots file and the changelog. Note that the hash comparison is done file by file so that we can exit early if a pair of hashes do not match. Also the hashes are calculated starting with the file that is most likely to be smaller upto the file that is more likely to be larger.
Sat, 16 Feb 2013 11:44:13 +0100 util: add notindexed optional parameter to makedirs function
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 11:44:13 +0100] rev 18938
util: add notindexed optional parameter to makedirs function
Sat, 16 Feb 2013 01:11:20 +0100 subrepo: introduce storeclean method
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:11:20 +0100] rev 18937
subrepo: introduce storeclean method Currently this method is unused and it is not implemented for any specific subrepo type (it always returns False). It receives a remote repository path because a repository may have a clean store versus a given repository but not versus another.
Sat, 16 Feb 2013 00:07:00 +0100 subrepo: introduce storeclean helper functions
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 00:07:00 +0100] rev 18936
subrepo: introduce storeclean helper functions These helper functions are currently unused but will be used to implement the cleanstore method that will be introduced later.
Fri, 08 Feb 2013 16:17:46 -0600 dispatch: exit with status 1 for an InterventionRequired exception (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:17:46 -0600] rev 18935
dispatch: exit with status 1 for an InterventionRequired exception (bc)
Fri, 08 Feb 2013 16:27:49 -0600 histedit: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:27:49 -0600] rev 18934
histedit: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Fri, 08 Feb 2013 16:27:59 -0600 rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:27:59 -0600] rev 18933
rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Fri, 08 Feb 2013 16:28:24 -0600 dispatch: catch InterventionRequired and print the message with no prefix
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:28:24 -0600] rev 18932
dispatch: catch InterventionRequired and print the message with no prefix
Fri, 08 Feb 2013 14:26:03 -0600 error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 14:26:03 -0600] rev 18931
error: introduce new InterventionRequired exception Future changes will use this type instead of util.Abort for signalling the user that intervention is required, as in some rebase and histedit aborts.
Fri, 12 Apr 2013 19:48:07 -0700 util: remove unreachable code
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 19:48:07 -0700] rev 18930
util: remove unreachable code Found by Cython.
Fri, 12 Apr 2013 19:33:48 -0700 util: remove no-op assignment
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 19:33:48 -0700] rev 18929
util: remove no-op assignment Found by Cython.
Fri, 12 Apr 2013 18:49:14 -0700 merge more evolve stuff away (what?)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:49:14 -0700] rev 18928
merge more evolve stuff away (what?)
Fri, 12 Apr 2013 18:48:02 -0700 synthrepo: add missing import of sys
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:48:02 -0700] rev 18927
synthrepo: add missing import of sys Found using Cython.
Fri, 12 Apr 2013 18:44:22 -0700 transplant: pass source through to recover
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:44:22 -0700] rev 18926
transplant: pass source through to recover
Fri, 12 Apr 2013 17:25:27 -0700 repoview: remove more unreachable code
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:25:27 -0700] rev 18925
repoview: remove more unreachable code Found using Cython.
Fri, 12 Apr 2013 18:35:26 -0700 merge away some failed evolve fat-fingering
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:35:26 -0700] rev 18924
merge away some failed evolve fat-fingering
Fri, 12 Apr 2013 17:35:56 -0700 pager: add missing imports of errno and shlex
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:35:56 -0700] rev 18923
pager: add missing imports of errno and shlex Found using Cython.
Fri, 12 Apr 2013 17:33:24 -0700 largefiles: quiet (and document) undefined name errors (issue3886)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:33:24 -0700] rev 18922
largefiles: quiet (and document) undefined name errors (issue3886) These names were found using Cython; I was completely puzzled until I searched the rest of the tree. It's icky to mess with another module's namespace, but ickier yet to do so without a comment :-)
Fri, 12 Apr 2013 17:27:09 -0700 color: add missing import of error
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:27:09 -0700] rev 18921
color: add missing import of error Found using Cython.
Fri, 12 Apr 2013 17:20:09 -0700 pvec: use the correct name for an identifier
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:20:09 -0700] rev 18920
pvec: use the correct name for an identifier Found using Cython.
Fri, 12 Apr 2013 17:18:52 -0700 repoview: remove unreachable code
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:18:52 -0700] rev 18919
repoview: remove unreachable code Found using Cython.
Fri, 12 Apr 2013 17:20:09 -0700 pvec: use the correct name for an identifier
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:20:09 -0700] rev 18918
pvec: use the correct name for an identifier Found using Cython.
Fri, 12 Apr 2013 17:18:52 -0700 repoview: remove unreachable code
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:18:52 -0700] rev 18917
repoview: remove unreachable code Found using Cython.
Fri, 12 Apr 2013 17:17:35 -0700 mail: add missing import of sys
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:17:35 -0700] rev 18916
mail: add missing import of sys Found using Cython.
Fri, 12 Apr 2013 17:17:05 -0700 statichttprepo: add missing import of os
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:17:05 -0700] rev 18915
statichttprepo: add missing import of os Found using Cython.
Fri, 12 Apr 2013 17:16:37 -0700 worker: add missing import of errno
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:16:37 -0700] rev 18914
worker: add missing import of errno Found using Cython.
Fri, 12 Apr 2013 16:01:18 -0700 histedit: support editing of the first commit (issue3767)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 16:01:18 -0700] rev 18913
histedit: support editing of the first commit (issue3767)
Fri, 12 Apr 2013 17:00:42 -0400 test-commit-amend.t: fix check-code violation from 3a72c89a83ec
Augie Fackler <raf@durin42.com> [Fri, 12 Apr 2013 17:00:42 -0400] rev 18912
test-commit-amend.t: fix check-code violation from 3a72c89a83ec
Mon, 11 Feb 2013 00:43:12 +0100 util: improve doc for checkcase
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Feb 2013 00:43:12 +0100] rev 18911
util: improve doc for checkcase
Thu, 11 Apr 2013 14:41:22 +0200 scheme: don't crash on invalid URLs
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:41:22 +0200] rev 18910
scheme: don't crash on invalid URLs
Fri, 08 Feb 2013 21:08:34 +0000 amend: support amending merge changesets (issue3778)
Brodie Rao <brodie@sf.io> [Fri, 08 Feb 2013 21:08:34 +0000] rev 18909
amend: support amending merge changesets (issue3778)
Thu, 11 Apr 2013 13:30:31 -0700 worker: catch all exceptions, try to exit usefully/safely
Bryan O'Sullivan <bryano@fb.com> [Thu, 11 Apr 2013 13:30:31 -0700] rev 18908
worker: catch all exceptions, try to exit usefully/safely
Thu, 11 Apr 2013 13:30:27 -0700 lock: if we fork, ensure that only the parent releases
Bryan O'Sullivan <bryano@fb.com> [Thu, 11 Apr 2013 13:30:27 -0700] rev 18907
lock: if we fork, ensure that only the parent releases This prevents us from having a bunch of errant worker processes all try to release a lock if a problem occurs. (Releasing the lock more than once is harmless; it's invoking the associated callbacks we want to avoid.)
Thu, 11 Apr 2013 14:44:22 +0200 tag: clarify cryptic error message when tagging null revision
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:44:22 +0200] rev 18906
tag: clarify cryptic error message when tagging null revision
Fri, 12 Apr 2013 16:55:34 -0400 setup: make error message for missing Python headers more helpful
Mads Kiilerich <mads@kiilerich.com> [Fri, 12 Apr 2013 16:55:34 -0400] rev 18905
setup: make error message for missing Python headers more helpful
Mon, 11 Feb 2013 11:20:12 +0100 obsolete: ensure all markers have a date
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 11 Feb 2013 11:20:12 +0100] rev 18904
obsolete: ensure all markers have a date Obsolescence creates a sparse DAG mostly composed of a lot of small independent chain of markers. Date is the only simple and "reliable" way to sort them. The existence of a date is now enforced at creation time as I'm more and more convinced that date will have a key role in obsolescence markers exchange.
Mon, 08 Apr 2013 16:51:38 +0400 zsh_completion: make use of `debuglabelcomplete` command
Nikolaj Sjujskij <sterkrig@myopera.com> [Mon, 08 Apr 2013 16:51:38 +0400] rev 18903
zsh_completion: make use of `debuglabelcomplete` command Use `debuglabelcomplete` command when populating labels list, instead of calling `hg` three times: for branches, bookmarks and tags. Do not pass string being completed to `hg debuglabelcomplete` (as `$words[$CURRENT]`), since it breaks `_hg_revrange` completion (`--rev 2.5:2.5.<Tab>`) for no apparent benefit. Also complete `hg view` with labels, not just tags, and drop unused `_hg_tags`.
Wed, 10 Apr 2013 15:08:28 -0700 dirs: use mutable strings internally
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:28 -0700] rev 18902
dirs: use mutable strings internally perfdirs results for a working dir with 170,000 files: Python 638 msec C 244 C+int 192 C+int+str 168 In the large repo above, the nearly 0.5 second time improvement is visible in commands like "hg add" and "hg update". hg add Python 1100 msec C+int+str 600 hg update (with nothing to do) Python 2800 msec C+int+str 2240
Wed, 10 Apr 2013 15:08:27 -0700 dirs: use mutable integers internally
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:27 -0700] rev 18901
dirs: use mutable integers internally These integers are not visible to Python code, so this is safe. perfdirs results for a working dir with 170,000 files: Python 638 msec C 244 C+int 192
Wed, 10 Apr 2013 15:08:27 -0700 scmutil: rewrite dirs in C, use if available
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:27 -0700] rev 18900
scmutil: rewrite dirs in C, use if available This is over twice as fast as the Python dirs code. Upcoming changes will nearly double its speed again. perfdirs results for a working dir with 170,000 files: Python 638 msec C 244
Wed, 10 Apr 2013 15:08:26 -0700 scmutil: use new dirs class in dirstate and context
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:26 -0700] rev 18899
scmutil: use new dirs class in dirstate and context The multiset-of-directories code was open coded in each of these modules; this change gets rid of the duplication.
Wed, 10 Apr 2013 15:08:26 -0700 scmutil: add a dirs class
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:26 -0700] rev 18898
scmutil: add a dirs class This encapsulates the "multiset of directories" structures that are currently open-coded (and duplicated) in both the dirstate and context modules. This will be used, and optionally replaced by a C implementation, in upcoming changes.
Wed, 10 Apr 2013 15:08:25 -0700 scmutil: migrate finddirs from dirstate
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:25 -0700] rev 18897
scmutil: migrate finddirs from dirstate
Wed, 10 Apr 2013 15:05:06 -0700 merge
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:05:06 -0700] rev 18896
merge
Wed, 10 Apr 2013 12:34:42 -0700 manifestmerge: handle workdir removed, remote removed with flags
Siddharth Agarwal <sid0@fb.com> [Wed, 10 Apr 2013 12:34:42 -0700] rev 18895
manifestmerge: handle workdir removed, remote removed with flags This can happen when a file with flags is removed or deleted in the working directory and also not present in m2. The obvious solution is to add a __delitem__ override to manifestdict that removes the file from flags if necessary, but that has a significant performance cost in some cases, e.g. hg status --rev rev1 --rev rev2 <file>.
Wed, 10 Apr 2013 12:31:07 -0700 dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com> [Wed, 10 Apr 2013 12:31:07 -0700] rev 18894
dicthelpers.diff: compare against default for missing values This is not only a bit faster, but also aligns with callers' expectations better since we can legitimately have manifestdict's _flags set to '' instead of unset. hg perfmergecalculate -r . before: ! wall 0.139582 comb 0.140000 user 0.140000 sys 0.000000 (best of 59) after: ! wall 0.126154 comb 0.120000 user 0.120000 sys 0.000000 (best of 74) hg perfmergecalculate -r .^ before: ! wall 0.236333 comb 0.240000 user 0.240000 sys 0.000000 (best of 36) after: ! wall 0.212265 comb 0.210000 user 0.210000 sys 0.000000 (best of 45)
Tue, 09 Apr 2013 21:38:08 -0700 templater: back out 0615b22da148, it breaks schemes ({1})
Brendan Cully <brendan@kublai.com> [Tue, 09 Apr 2013 21:38:08 -0700] rev 18893
templater: back out 0615b22da148, it breaks schemes ({1})
Tue, 09 Apr 2013 09:40:40 -0700 debuglabelcomplete: compute active branch heads correctly
Bryan O'Sullivan <bryano@fb.com> [Tue, 09 Apr 2013 09:40:40 -0700] rev 18892
debuglabelcomplete: compute active branch heads correctly The previous computation was simply wrong.
Mon, 08 Apr 2013 17:57:42 -0500 merge with i18n
Matt Mackall <mpm@selenic.com> [Mon, 08 Apr 2013 17:57:42 -0500] rev 18891
merge with i18n Note: i18n work should normally be done on stable
Fri, 05 Apr 2013 17:04:37 +0200 hg-i18n-it: minor fixes
Stefano Tortarolo <stefano.tortarolo@gmail.com> [Fri, 05 Apr 2013 17:04:37 +0200] rev 18890
hg-i18n-it: minor fixes
Mon, 08 Apr 2013 15:04:17 -0700 templater: fix check-code error
Bryan O'Sullivan <bryano@fb.com> [Mon, 08 Apr 2013 15:04:17 -0700] rev 18889
templater: fix check-code error
Tue, 26 Mar 2013 02:28:10 +0900 smtp: verify the certificate of the SMTP server for STARTTLS/SMTPS
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 26 Mar 2013 02:28:10 +0900] rev 18888
smtp: verify the certificate of the SMTP server for STARTTLS/SMTPS Before this patch, the certificate of the SMTP server for STARTTLS or SMTPS isn't verified. This may cause man-in-the-middle security problem (stealing authentication information), even though SMTP channel itself is encrypted by SSL. When "[smtp] tls" is configured as "smtps" or "starttls", this patch: - uses classes introduced by preceding patches instead of "SMTP" or "SMTP_SSL" of smtplib, and - verifies the certificate of the SMTP server, if "[smtp] verifycert" is configured as other than False "[smtp] verifycert" can be configured in 3 levels: - "strict": This verifies peer certificate, and aborts if: - peer certification is not valid, or - no configuration in "[hostfingerprints]" and "[web] cacerts" This is default value of "[smtp] verifycert" for security. - "loose": This verifies peer certificate, and aborts if peer certification is not valid. This just shows warning message ("certificate not verified"), if there is no configuration in "[hostfingerprints]" and "[web] cacerts". This is as same as verification for HTTPS connection. - False(no verification): Peer certificate is not verified. This is as same as the behavior before this patch series. "hg email --insecure" uses "loose" level, and ignores "[web] cacerts" as same as push/pull/etc... with --insecure. Ignoring "[web] cacerts" configuration for "hg email --insecure" is already done in "dispatch._dispatch()" by looking "insecure" up in the table of command options.
Tue, 26 Mar 2013 02:28:10 +0900 sslutil: abort if peer certificate is not verified for secure use
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 26 Mar 2013 02:28:10 +0900] rev 18887
sslutil: abort if peer certificate is not verified for secure use Before this patch, "sslutil.validator" may returns successfully, even if peer certificate is not verified because there is no information in "[hostfingerprints]" and "[web] cacerts". To prevent from sending authentication credential to untrustable SMTP server, validation should be aborted if peer certificate is not verified. This patch introduces "strict" optional argument, and "sslutil.validator" will abort if it is True and peer certificate is not verified.
Tue, 26 Mar 2013 02:27:43 +0900 smtp: add the class to verify the certificate of the SMTP server for SMTPS
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 26 Mar 2013 02:27:43 +0900] rev 18886
smtp: add the class to verify the certificate of the SMTP server for SMTPS Original "smtplib.SMTP_SSL" has no route to pass "ca_certs" and "cert_reqs" arguments to underlying SSL socket creation. This causes that "getpeercert()" on SSL socket returns empty dict, so the peer certificate for SMTPS can't be verified. This patch introduces the "SMTPS" class derived from "smtplib.SMTP" to pass "ca_certs" and "cert_reqs" arguments to underlying SSL socket creation. "SMTPS" class is derived directly from "smtplib.SMTP", because amount of "smtplib.SMTP_SSL" definition derived from "smtplib.SMTP" is as same as one needed to override it. This patch defines "SMTPS" class, only when "smtplib.SMTP" class has "_get_socket()" method, because this makes using SSL socket instead of normal socket easy. "smtplib.SMTP" class of Python 2.5.x or earlier doesn't have this method. Omitting SMTPS support for them is reasonable, because "smtplib.SMTP_SSL" is already unavailable for them before this patch. Almost all code of "SMTPS" class is imported from "smtplib.SMTP_SSL" of Python 2.7.3, but it differs from original code in point below: - "ssl.wrap_socket()" is replaced by "sslutil.ssl_wrap_socket()" for compatibility between Python versions
Tue, 26 Mar 2013 02:27:23 +0900 smtp: add the class to verify the certificate of the SMTP server for STARTTLS
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 26 Mar 2013 02:27:23 +0900] rev 18885
smtp: add the class to verify the certificate of the SMTP server for STARTTLS Original "smtplib.SMTP" has no route to pass "ca_certs" and "cert_reqs" arguments to underlying SSL socket creation. This causes that "getpeercert()" on SSL socket returns empty dict, so the peer certificate for STARTTLS can't be verified. This patch introduces the "STARTTLS" class derived from "smtplib.SMTP" to pass "ca_certs" and "cert_reqs" arguments to underlying SSL socket creation. Almost all code of "starttls()" in this class is imported from "smtplib.SMTP" of Python 2.7.3, but it differs from original code in points below: - "self.ehlo_or_helo_if_needed()" invocation is omitted, because: - "ehlo_or_helo_if_needed()" is available with Python 2.6 or later, and - "ehlo()" is explicitly invoked in "mercurial.mail._smtp()" - "if not _have_ssl:" check is omitted, because: - "_have_ssl" is available with Python 2.6 or later, and - same checking is done in "mercurial.sslutil.ssl_wrap_socket()" - "ssl.wrap_socket()" is replaced by "sslutil.ssl_wrap_socket()" for compatibility between Python versions - use "sock.recv()" also as "sock.read()", if "sock" doesn't have "read()" method with Python 2.5.x or earlier, "sslutil.ssl_wrap_socket()" returns "httplib.FakeSocket"-ed object, and it doesn't have "read()" method, which is invoked via "smtplib.SSLFakeFile".
Sun, 07 Apr 2013 23:25:50 -0700 template: allow unquoted int function arguments
Brendan Cully <brendan@kublai.com> [Sun, 07 Apr 2013 23:25:50 -0700] rev 18884
template: allow unquoted int function arguments
Mon, 08 Apr 2013 09:44:26 -0700 Merge with main
Brendan Cully <brendan@kublai.com> [Mon, 08 Apr 2013 09:44:26 -0700] rev 18883
Merge with main
Sat, 06 Apr 2013 19:50:03 -0700 graft: use missing ancestors algorithm to find earlier grafts
Siddharth Agarwal <sid0@fb.com> [Sat, 06 Apr 2013 19:50:03 -0700] rev 18882
graft: use missing ancestors algorithm to find earlier grafts When the revisions to graft are numerically close to the destination, this avoids two walks up the DAG, which for a repository with over 470,000 changesets translates to around 2.2 seconds.
Sat, 06 Apr 2013 20:05:17 -0700 graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com> [Sat, 06 Apr 2013 20:05:17 -0700] rev 18881
graft: find ancestors of destination lazily When the revisions to graft are numerically close to the destination, this avoids one walk up the DAG, which for a repository with over 470,000 changesets translates to around 1.1 seconds.
Fri, 05 Apr 2013 12:21:38 -0500 merge with crew
Matt Mackall <mpm@selenic.com> [Fri, 05 Apr 2013 12:21:38 -0500] rev 18880
merge with crew
Fri, 05 Apr 2013 12:20:14 -0500 sslutil: try harder to avoid getpeercert problems
Matt Mackall <mpm@selenic.com> [Fri, 05 Apr 2013 12:20:14 -0500] rev 18879
sslutil: try harder to avoid getpeercert problems We wrap both calls to getpeercert in a try/except to make sure we catch its bogus AttributeError.
Thu, 04 Apr 2013 20:22:29 -0700 copies._forwardcopies: use set operations to find missing files
Siddharth Agarwal <sid0@fb.com> [Thu, 04 Apr 2013 20:22:29 -0700] rev 18878
copies._forwardcopies: use set operations to find missing files This is a performance win for a number of reasons: - We don't iterate over contexts, which avoids a completely unnecessary sorted call + the O(number of files) abstraction cost of doing that. - We don't check membership in a context, which avoids another O(number of files) abstraction cost. - We iterate over the manifests in C instead of Python. For a large repo with 170,000 files, this improves perfpathcopies from 0.34 seconds to 0.07. Anything that uses pathcopies, such as rebase or diff --git between two revisions, benefits.
Thu, 04 Apr 2013 20:36:46 -0700 perf: add a command to test copies.pathcopies perf
Siddharth Agarwal <sid0@fb.com> [Thu, 04 Apr 2013 20:36:46 -0700] rev 18877
perf: add a command to test copies.pathcopies perf An upcoming patch will improve the performance of this function, and this command will be used to demonstrate that improvement.
Thu, 04 Apr 2013 16:37:37 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 04 Apr 2013 16:37:37 -0500] rev 18876
merge with stable
Thu, 04 Apr 2013 16:28:19 -0500 Added signature for changeset 8a7bd2dccd44 stable
Matt Mackall <mpm@selenic.com> [Thu, 04 Apr 2013 16:28:19 -0500] rev 18875
Added signature for changeset 8a7bd2dccd44
Thu, 04 Apr 2013 16:28:15 -0500 Added tag 2.5.4 for changeset 8a7bd2dccd44 stable
Matt Mackall <mpm@selenic.com> [Thu, 04 Apr 2013 16:28:15 -0500] rev 18874
Added tag 2.5.4 for changeset 8a7bd2dccd44
Mon, 18 Mar 2013 16:37:20 -0500 applyupdates: assign variable before we try to use it (issue3855) stable 2.5.4
Kevin Bullock <kbullock@ringworld.org> [Mon, 18 Mar 2013 16:37:20 -0500] rev 18873
applyupdates: assign variable before we try to use it (issue3855) The variable 'fd' was getting used with a value left over from a prior iteration, causing a KeyError: '.hgsubstate'.
Wed, 03 Apr 2013 17:04:38 -0700 merge with mpm
Bryan O'Sullivan <bryano@fb.com> [Wed, 03 Apr 2013 17:04:38 -0700] rev 18872
merge with mpm
Mon, 01 Apr 2013 23:09:36 -0700 perf: add a command to test addremove performance
Siddharth Agarwal <sid0@fb.com> [Mon, 01 Apr 2013 23:09:36 -0700] rev 18871
perf: add a command to test addremove performance Upcoming patches will improve addremove performance. This command will be used to demonstrate that improvement.
Wed, 03 Apr 2013 14:14:30 -0500 merge with crew
Matt Mackall <mpm@selenic.com> [Wed, 03 Apr 2013 14:14:30 -0500] rev 18870
merge with crew
Wed, 03 Apr 2013 11:35:27 -0700 dirstate: only call lstat once per flags invocation
Bryan O'Sullivan <bryano@fb.com> [Wed, 03 Apr 2013 11:35:27 -0700] rev 18869
dirstate: only call lstat once per flags invocation This makes a big difference to performance in some cases. hg --time locate 'set:symlink()' mozilla-central (70,000 files): before: 2.92 sec after: 2.47 another repo (170,000 files): before: 7.87 sec after: 6.86
Wed, 03 Apr 2013 11:35:27 -0700 util: add functions to check symlink/exec bits
Bryan O'Sullivan <bryano@fb.com> [Wed, 03 Apr 2013 11:35:27 -0700] rev 18868
util: add functions to check symlink/exec bits These are not yet used.
Wed, 03 Apr 2013 13:03:50 -0500 Merge with stable.
Augie Fackler <raf@durin42.com> [Wed, 03 Apr 2013 13:03:50 -0500] rev 18867
Merge with stable.
Tue, 02 Apr 2013 16:03:10 +0200 setup.py: properly discard trust warning. stable
Isaac Jurado <diptongo@gmail.com> [Tue, 02 Apr 2013 16:03:10 +0200] rev 18866
setup.py: properly discard trust warning. This modification was missing from the fa91ddfc3f36 changeset.
Tue, 02 Apr 2013 14:50:50 -0700 scmutil.addremove: use iteritems on walk results
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Apr 2013 14:50:50 -0700] rev 18865
scmutil.addremove: use iteritems on walk results Now that we no longer sort all the walk results, using iteritems becomes possible. This is a relatively minor speedup: on a large repository with 170,000 files, perfaddremove goes from 2.13 seconds to 2.10.
Tue, 02 Apr 2013 14:50:31 -0700 scmutil.addremove: stop sorting all walk results
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Apr 2013 14:50:31 -0700] rev 18864
scmutil.addremove: stop sorting all walk results The only place where the order matters is in printing out added or removed files. We already sort that set. On a large repository with 170,000 files, this speeds up perfaddremove from 2.34 seconds to 2.13.
Tue, 02 Apr 2013 10:56:24 -0700 scmutil.addremove: pull ui.status printing out of the loop
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Apr 2013 10:56:24 -0700] rev 18863
scmutil.addremove: pull ui.status printing out of the loop This will let us stop sorting all the results in an upcoming patch. This also permits future refactorings where the same code consumes dirstate.walk results but doesn't print anything out. An argument could be made that printing out results as we go along is more responsive UI-wise. However, at this point iterating through walk results is actually faster than sorting them, so once we stop sorting all the results the argument ceases to be valid.
Tue, 02 Apr 2013 14:49:34 -0700 scmutil.addremove: remove redundant directory and symlink checks
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Apr 2013 14:49:34 -0700] rev 18862
scmutil.addremove: remove redundant directory and symlink checks dirstate.walk only does lstats and never returns stat objects for directories. On a large repository with 170,000 files, this speeds perfaddremove up from 2.40 seconds to 2.34.
Tue, 02 Apr 2013 14:46:55 -0700 scmutil.addremove: pull repo.dirstate fetch out of the loop
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Apr 2013 14:46:55 -0700] rev 18861
scmutil.addremove: pull repo.dirstate fetch out of the loop On a large repository with 170,000 files, this speeds up perfaddremove from 2.78 seconds to 2.40.
Mon, 01 Apr 2013 20:38:37 -0700 scmutil: remove dead updatedir code
Siddharth Agarwal <sid0@fb.com> [Mon, 01 Apr 2013 20:38:37 -0700] rev 18860
scmutil: remove dead updatedir code This code has not been used in a long while.
Tue, 02 Apr 2013 08:58:42 -0700 merge with mpm
Bryan O'Sullivan <bryano@fb.com> [Tue, 02 Apr 2013 08:58:42 -0700] rev 18859
merge with mpm
Tue, 02 Apr 2013 01:15:31 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 02 Apr 2013 01:15:31 -0500] rev 18858
merge with stable
Tue, 02 Apr 2013 01:05:31 -0500 Added signature for changeset 50c922c1b514 stable
Matt Mackall <mpm@selenic.com> [Tue, 02 Apr 2013 01:05:31 -0500] rev 18857
Added signature for changeset 50c922c1b514
Tue, 02 Apr 2013 01:05:26 -0500 Added tag 2.5.3 for changeset 50c922c1b514 stable
Matt Mackall <mpm@selenic.com> [Tue, 02 Apr 2013 01:05:26 -0500] rev 18856
Added tag 2.5.3 for changeset 50c922c1b514
Fri, 15 Feb 2013 18:07:14 +0900 hgweb: show correct error message for i18n environment stable 2.5.3
Takumi IINO <trot.thunder@gmail.com> [Fri, 15 Feb 2013 18:07:14 +0900] rev 18855
hgweb: show correct error message for i18n environment If exception is error.LookupError and running in i18n environment, below condition is always true. Because msg is translated and dosen't contain 'manifest'. if util.safehasattr(err, 'name') and 'manifest' not in msg: This patch creates a new exception class and uses it instead of string match.
Mon, 01 Apr 2013 18:48:12 -0300 commands: fix typo in debugobsolete docstring stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 01 Apr 2013 18:48:12 -0300] rev 18854
commands: fix typo in debugobsolete docstring
Thu, 28 Mar 2013 18:27:19 -0700 duplicatecopies: do not mark items not in the dirstate as copies
Siddharth Agarwal <sid0@fb.com> [Thu, 28 Mar 2013 18:27:19 -0700] rev 18853
duplicatecopies: do not mark items not in the dirstate as copies Consider the following repo: 0 -- 1 (renames a to b) \ - 2 If we're rebasing 2 onto 1, then duplicatecopies is called with arguments (2, 1). copies.pathcopies goes backwards from 1 to 0 and returns the pair dst = a, src = b. Of course, since we're working on top of 2, at this point a doesn't exist in the dirstate. Extra entries in the copymap are currently harmless because the copymap is only queried for items in the dirstate map. However, if the dirstate.copy method becomes one of the sources used to determine which files have changed, this will prove problematic. Note that we can't avoid going backwards in general -- consider this repo: 0 -- 1 (renames a to b) \ - 2 (renames a to c) Rebasing 2 onto 1 should produce a rename from b to c.
Thu, 28 Mar 2013 00:14:27 -0700 duplicatecopies: fix arg name and docstring
Siddharth Agarwal <sid0@fb.com> [Thu, 28 Mar 2013 00:14:27 -0700] rev 18852
duplicatecopies: fix arg name and docstring While most callers do indeed use duplicatecopies with a rev and its parent, rebase doesn't.
Fri, 29 Mar 2013 19:54:06 -0700 pull: list bookmarks before pulling changesets (issue3873)
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Mar 2013 19:54:06 -0700] rev 18851
pull: list bookmarks before pulling changesets (issue3873) Consider a bookmark B that exists both locally and remotely. If B is updated remotely, and then a pull is performed where the pull set contains the new location of B, the bookmark is updated locally. However, if remote B is updated in the middle of a pull to a location not in the pull set, the bookmark won't be updated locally at all. To fix this, list bookmarks before pulling in changesets, not after. This still leaves a race open if B gets moved in between listing bookmarks and pulling in changesets, but the race window is much smaller. Fixing the race properly would require a bundle format upgrade. test-hook.t's output changes because we no longer do two listkeys calls during pull, just one. test-pull-http.t's output changes because we now search for bookmarks before searching for changes.
Fri, 29 Mar 2013 19:52:02 -0700 test-hook.t: remove prelistkeys.forbid hook before moving on
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Mar 2013 19:52:02 -0700] rev 18850
test-hook.t: remove prelistkeys.forbid hook before moving on An upcoming patch will change the order of operations and perform a listkeys before a changegroup fetch. This will cause a few tests to print out the wrong error message.
Fri, 29 Mar 2013 18:28:59 -0700 bookmarks.updatefromremote: rename local rb to remotemarks
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Mar 2013 18:28:59 -0700] rev 18849
bookmarks.updatefromremote: rename local rb to remotemarks This local will become a parameter in an upcoming patch, so give it a more descriptive name. The name stays similar to the existing localmarks.
Fri, 29 Mar 2013 19:06:23 -0700 pull: rename local rb to remotebookmarks
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Mar 2013 19:06:23 -0700] rev 18848
pull: rename local rb to remotebookmarks This local will become more important in an upcoming patch, so give it a more descriptive name.
Fri, 29 Mar 2013 16:07:57 -0700 dicthelpers: inline diff and join code
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Mar 2013 16:07:57 -0700] rev 18847
dicthelpers: inline diff and join code mpm suggested this change since it improves performance slightly. Benchmarking hg perfcalculate -r . Before: ! wall 0.141173 comb 0.140000 user 0.140000 sys 0.000000 (best of 66) After: ! wall 0.138619 comb 0.140000 user 0.140000 sys 0.000000 (best of 69)
Fri, 29 Mar 2013 15:23:19 -0700 dicthelpers: add docstrings for diff and join
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Mar 2013 15:23:19 -0700] rev 18846
dicthelpers: add docstrings for diff and join
Mon, 01 Apr 2013 13:46:32 -0700 perf: add perfdirs command
Bryan O'Sullivan <bryano@fb.com> [Mon, 01 Apr 2013 13:46:32 -0700] rev 18845
perf: add perfdirs command This measures the cost of computing the dirstate's dirs structure, which becomes very expensive in a large working directory.
Mon, 01 Apr 2013 15:19:16 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 01 Apr 2013 15:19:16 -0500] rev 18844
merge with stable
Fri, 29 Mar 2013 18:45:07 -0700 zsh_completion: fix trailing carriage return spoiling tag completion stable
Nikolaj Sjujskij <sterkrig@myopera.com> [Fri, 29 Mar 2013 18:45:07 -0700] rev 18843
zsh_completion: fix trailing carriage return spoiling tag completion This was giving the following error: % hg up 2.5-r<Tab> (eval):1: bad substitution % hg up 2.5-r
Fri, 29 Mar 2013 16:48:32 -0700 filesets: add eol predicate
Matt Mackall <mpm@selenic.com> [Fri, 29 Mar 2013 16:48:32 -0700] rev 18842
filesets: add eol predicate
Fri, 29 Mar 2013 15:27:33 -0700 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 29 Mar 2013 15:27:33 -0700] rev 18841
merge with stable
Fri, 29 Mar 2013 15:27:11 -0700 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Fri, 29 Mar 2013 15:27:11 -0700] rev 18840
merge with i18n
Fri, 01 Mar 2013 11:54:36 -0300 merge with i18n stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 01 Mar 2013 11:54:36 -0300] rev 18839
merge with i18n
Fri, 01 Mar 2013 03:25:19 +0900 i18n-ja: synchronized with 61c8327ced50 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 01 Mar 2013 03:25:19 +0900] rev 18838
i18n-ja: synchronized with 61c8327ced50
Thu, 28 Mar 2013 18:21:20 -0700 perf: remove mysterious trailing newlines
Bryan O'Sullivan <bryano@fb.com> [Thu, 28 Mar 2013 18:21:20 -0700] rev 18837
perf: remove mysterious trailing newlines
Wed, 27 Mar 2013 09:00:43 -0700 blackbox: fix a few check-code portability errors
Bryan O'Sullivan <bryano@fb.com> [Wed, 27 Mar 2013 09:00:43 -0700] rev 18836
blackbox: fix a few check-code portability errors
Wed, 27 Mar 2013 08:57:45 -0700 check-code: fix a check-code failure in check-code
Bryan O'Sullivan <bryano@fb.com> [Wed, 27 Mar 2013 08:57:45 -0700] rev 18835
check-code: fix a check-code failure in check-code The irony is delicious.
Fri, 01 Mar 2013 00:59:22 +0100 check-code: re-add check for missing glob
Simon Heimberg <simohe@besonet.ch> [Fri, 01 Mar 2013 00:59:22 +0100] rev 18834
check-code: re-add check for missing glob As suggested by mpm reintroducing this test failure on windows is prevented by a code-check. One line in a unix test is ignored. This pattern matches 20 windows glob lines.
Fri, 01 Mar 2013 00:03:51 +0100 tests: append missing glob to filename output and check-code it
Simon Heimberg <simohe@besonet.ch> [Fri, 01 Mar 2013 00:03:51 +0100] rev 18833
tests: append missing glob to filename output and check-code it
Thu, 28 Feb 2013 23:45:51 +0100 check-code: extract windows glob warning message
Simon Heimberg <simohe@besonet.ch> [Thu, 28 Feb 2013 23:45:51 +0100] rev 18832
check-code: extract windows glob warning message it will be used often
Tue, 26 Mar 2013 16:27:51 -0700 blackbox: defer opening a log file until needed (issue3869)
Bryan O'Sullivan <bryano@fb.com> [Tue, 26 Mar 2013 16:27:51 -0700] rev 18831
blackbox: defer opening a log file until needed (issue3869) Previously, we opened the log file when creating a repo object. This was inefficient (not all repo creation is going to result in a need to log something), but more importantly it broke subrepo updates when used on NFS. * perform an update in the master repo that triggers a subrepo clone * empty subrepo already exists, and has an open, empty blackbox.log file due to it being opened eagerly/prematurely * hg decides to blow away the skeletal subrepo (see use of shutil.rmtree in subrepo._get) * we crash, due to NFS treating a delete of an open file as really a rename to a hidden ".nfs" file Now that we open the blackbox log file on demand, no file exists at the time the empty subrepo is deleted, so the above problem does not occur.
Fri, 22 Mar 2013 17:27:06 -0500 patch: match 'diff --git a/' instead of 'diff --git'
Sean Farley <sean.michael.farley@gmail.com> [Fri, 22 Mar 2013 17:27:06 -0500] rev 18830
patch: match 'diff --git a/' instead of 'diff --git' This reduces the likelihood of a traceback when trying to email a patch that happens to have 'diff --git' at the beginning of a line in the description, as this patch did: http://markmail.org/message/wxpgowxd7ucxygwe
Thu, 21 Mar 2013 18:16:49 +0100 color: drop unnecessary global statement
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:49 +0100] rev 18829
color: drop unnecessary global statement
Thu, 21 Mar 2013 18:16:49 +0100 serve: pass on the repo instad of recreating it in hgweb
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:49 +0100] rev 18828
serve: pass on the repo instad of recreating it in hgweb When we pass on the path to the repo, the repo is created in hgweb. But the repo is already here, so pass it on.
Thu, 21 Mar 2013 18:16:48 +0100 serve: pass the prepared baseui to hgweb
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:48 +0100] rev 18827
serve: pass the prepared baseui to hgweb The baseui was carefully prepared but not used. ui can contain repo specific settings which can have unwanted effects.
Thu, 21 Mar 2013 18:16:48 +0100 hgweb: do not pass on repo.ui when recreating a repo
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:48 +0100] rev 18826
hgweb: do not pass on repo.ui when recreating a repo Recreate the repo with the global configuration in repo.baseui. The repo configuration is reread anyway. And now deleted repo configuration is reset to the default value.
Wed, 10 Oct 2012 21:55:49 +0200 repo: repo isolation, do not pass on repo.ui for creating new repos
Simon Heimberg <simohe@besonet.ch> [Wed, 10 Oct 2012 21:55:49 +0200] rev 18825
repo: repo isolation, do not pass on repo.ui for creating new repos A repo should not get the configuration from an other repo, so create it with the global configuration in repo.baseui. This is done too when recreating a repo. The repo configuration is reread anyway. And now deleted repo configuration does not persist.
Mon, 04 Mar 2013 22:34:11 +0000 diff: fix binary file removals in git mode.
Johan Bjork <jbjoerk@gmail.com> [Mon, 04 Mar 2013 22:34:11 +0000] rev 18824
diff: fix binary file removals in git mode. With the previous version, a binary file removal diff generated with
Sun, 24 Mar 2013 16:56:25 -0700 manifestmerge: drop redundant flags calls
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 16:56:25 -0700] rev 18823
manifestmerge: drop redundant flags calls
Mon, 25 Mar 2013 17:41:06 -0700 manifestmerge: use dicthelpers.diff and join
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 17:41:06 -0700] rev 18822
manifestmerge: use dicthelpers.diff and join This patch improves manifestmerge performance significantly. In a repository with 170,000 files, the following results were observed on a clean working directory. Revision '.' adds one file. hg perfmergecalculate -r . - before: 0.41 seconds - after: 0.13 seconds hg perfmergecalculate -r .^ - before: 0.53 seconds - after: 0.24 seconds Comparing against '.' is much faster than comparing against '.^' because with '.', the wctx and p2 manifest strings have the same identity, so comparisons are simply pointer equality. With '.^', the strings have different identities so we need to perform memcmps. Any operation that uses manifestmerge benefits. - hg update . goes from 2.04 seconds to 1.75 - hg update .^ goes from 2.52 seconds to 2.25 - hg rebase -r . -d .~6 (involves 4 merges) goes from 11.8 seconds to 10.8
Sun, 24 Mar 2013 17:17:38 -0700 manifestdict: add a method to diff _flags
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 17:17:38 -0700] rev 18821
manifestdict: add a method to diff _flags This will be used in an upcoming patch.
Mon, 25 Mar 2013 17:40:39 -0700 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 17:40:39 -0700] rev 18820
mercurial: implement diff and join for dicts Given two dicts, diff returns a dict containing all the keys that are present in one dict but not the other, or whose values are different between the dicts. The values are pairs of the values from the dicts, with missing values being represented as an optional argument, defaulting to None. Given two dicts, join performs what is known as an outer join in relational database land: it returns a dict containing all the keys across both dicts. The values are pairs as above, except they aren't compared to see if they're the same.
Sun, 24 Mar 2013 00:06:52 +0700 convert: add closesort algorithm to mercurial sources
Constantine Linnick <theaspect@gmail.com> [Sun, 24 Mar 2013 00:06:52 +0700] rev 18819
convert: add closesort algorithm to mercurial sources If you actively work with branches, sometimes you need to close old branches which last commited hundreds revisions ago. After close you will see long lines in graph visually spoiling history. This sort only moves closed revisions as close as possible to parents and does not increase storage size as datesort do.
Sun, 24 Mar 2013 16:43:25 -0700 manifestmerge: rename n to n1 and n2
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 16:43:25 -0700] rev 18818
manifestmerge: rename n to n1 and n2 An upcoming patch will combine the two loops into one, so it's important to distinguish between nodes in m1 and nodes in m2.
Sun, 24 Mar 2013 17:06:10 -0700 perf: add a command to measure merge.calculateupdates perf
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 17:06:10 -0700] rev 18817
perf: add a command to measure merge.calculateupdates perf The performance of merge.manifestmerge will be improved in upcoming patches. This command will be used to demonstrate the improvement.
Mon, 25 Mar 2013 16:57:36 -0700 hgk: fix a pyflakes error
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Mar 2013 16:57:36 -0700] rev 18816
hgk: fix a pyflakes error
Fri, 22 Mar 2013 17:03:49 -0700 dirstate.walk: fast path none-seen + match-always case for step 3
Siddharth Agarwal <sid0@fb.com> [Fri, 22 Mar 2013 17:03:49 -0700] rev 18815
dirstate.walk: fast path none-seen + match-always case for step 3 This case is a common one -- e.g. `hg diff`. For a repository with 170,000 files, this speeds up perfstatus from 0.95 seconds to 0.88.
Fri, 22 Mar 2013 17:03:00 -0700 dirstate.walk: fast path match-always case during traversal
Siddharth Agarwal <sid0@fb.com> [Fri, 22 Mar 2013 17:03:00 -0700] rev 18814
dirstate.walk: fast path match-always case during traversal This case is a common one -- e.g. `hg status`. For a repository with 170,000 files, this speeds up perfstatus --unknown from 2.15 seconds to 2.09.
Mon, 25 Mar 2013 14:22:34 -0700 largefiles: fix _always for match overrides
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 14:22:34 -0700] rev 18813
largefiles: fix _always for match overrides Upcoming patches will speed dirstate.walk up by not filtering based on the match function when match.always() is True. For that to work, match.always() needs to be accurate. Previously it wasn't so for largefiles.
Mon, 25 Mar 2013 14:12:39 -0700 dirstate.walk: remove subrepo and .hg from results before step 3
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 14:12:39 -0700] rev 18812
dirstate.walk: remove subrepo and .hg from results before step 3 An upcoming patch will speed dirstate.walk up by not querying the results dict when it is empty. This ensures it is in some common cases. This should be safe because subrepos and .hg aren't part of the dirstate.
Mon, 25 Mar 2013 12:12:41 -0500 merge with stable
Kevin Bullock <kbullock@ringworld.org> [Mon, 25 Mar 2013 12:12:41 -0500] rev 18811
merge with stable
Fri, 22 Mar 2013 10:56:55 -0700 blackbox: account for another source of errors
Bryan O'Sullivan <bryano@fb.com> [Fri, 22 Mar 2013 10:56:55 -0700] rev 18810
blackbox: account for another source of errors
Tue, 16 Oct 2012 22:44:14 +0200 hgk: remove regsub, split on \r instead
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 22:44:14 +0200] rev 18809
hgk: remove regsub, split on \r instead No need to regsub all \r\n's to \n's, we can just split on \r as well; this may produce extra empty elements in the list, but they won't match anyway.
Tue, 16 Oct 2012 22:41:44 +0200 hgk: simplify tags parser
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 22:41:44 +0200] rev 18808
hgk: simplify tags parser As when hg tags is being called without -v option, it returns lines with two elements in each, we can just interate them as if it were a usual Tcl list using foreach and two variables. Line endings and whitespace don't matter when doing so, so we may keep them as is. When we're processing the lines, tag variable is assigned a tag name, and rev is a string in form of revision:hash which we can split on colon. As Tcl8.4 lacks lassign command, and using lindex makes code a bit less readable, we use foreach to iterate over two-element list.
Fri, 22 Mar 2013 09:19:41 -0700 hgk: add support for phases
Andrew Shadura <bugzilla@tut.by> [Fri, 22 Mar 2013 09:19:41 -0700] rev 18807
hgk: add support for phases Add support for phases. Update tests.
Sun, 10 Mar 2013 16:42:23 +0100 hgk: in popups, replace labels with window titles
Andrew Shadura <bugzilla@tut.by> [Sun, 10 Mar 2013 16:42:23 +0100] rev 18806
hgk: in popups, replace labels with window titles Replace labels with window titles. That also requires to change grid placement manager settings to compensate padding which used to be applied to now non-existent labels.
(0) -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 +30000 tip