Thu, 30 Jan 2014 13:56:56 -0600 rebase: abort cleanly when we encounter a damaged rebasestate (issue4155) stable
Matt Mackall <mpm@selenic.com> [Thu, 30 Jan 2014 13:56:56 -0600] rev 20327
rebase: abort cleanly when we encounter a damaged rebasestate (issue4155)
Thu, 30 Jan 2014 17:09:13 +0900 i18n-ja: change phrasing for "or" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 30 Jan 2014 17:09:13 +0900] rev 20326
i18n-ja: change phrasing for "or"
Wed, 29 Jan 2014 22:14:41 +0900 i18n-ja: fix some quoting problems for space character usage stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 29 Jan 2014 22:14:41 +0900] rev 20325
i18n-ja: fix some quoting problems for space character usage
Wed, 29 Jan 2014 21:38:10 +0900 i18n-ja: synchronized with f493c2f67430 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 29 Jan 2014 21:38:10 +0900] rev 20324
i18n-ja: synchronized with f493c2f67430
Wed, 22 Jan 2014 16:47:05 +0100 i18n: fix non-matching 1st line indentations stable
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:47:05 +0100] rev 20323
i18n: fix non-matching 1st line indentations When generating documentation, indentation must match for getting the same view for translated messages. Often an output is generated anyway, but it can look different. When a syntactically wrong indentation change is done, runrst will fail (this is detected by test-gendoc.t). Fix the simple places. When translation knowledge is necessary, the entry is marked as fuzzy (and therefore skipped when generating translations). A translator can fix it later.
Wed, 22 Jan 2014 16:35:10 +0100 i18n: fix some non matching quotation marks in translations stable
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:35:10 +0100] rev 20322
i18n: fix some non matching quotation marks in translations A test for this is in preparation.
Wed, 22 Jan 2014 16:34:36 +0100 i18n: do not translate rst syntax .. note:: stable
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:34:36 +0100] rev 20321
i18n: do not translate rst syntax .. note:: .. note:: is rst syntax which must not be translated. Fix this in the translations. This is not the first time this happens, so there should be a note for the translator. A later patch will change the generation of the po files to write this automatically. A test in i18n/check-translation.py could help as well.
Mon, 27 Jan 2014 16:34:00 -0200 i18n-pt_BR: synchronized with 268a5ab5c27b stable
Leonardo Bueno Postacchini <notivago@gmail.com> [Mon, 27 Jan 2014 16:34:00 -0200] rev 20320
i18n-pt_BR: synchronized with 268a5ab5c27b
Sun, 24 Nov 2013 02:17:17 +0100 subrepo: make it possible to update to hidden subrepo revisions stable
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 24 Nov 2013 02:17:17 +0100] rev 20319
subrepo: make it possible to update to hidden subrepo revisions When a subrepo revision was hidden it was considered missing and mercurial was unable to update to the corresponding parent revision. Instead warn the user of the problem and let it choose what to do (the default is to udpate anyway).
Sun, 24 Nov 2013 02:13:00 +0100 subrepo: remove unnecessary else clause in hgsubrepo._get stable
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 24 Nov 2013 02:13:00 +0100] rev 20318
subrepo: remove unnecessary else clause in hgsubrepo._get This revision has no behaviour change. It simply removes an unnecessary else that follows an if / return block. The change looks big because a big chunk of code has been unindented one level.
Sun, 24 Nov 2013 02:10:14 +0100 subrepo: do not try to get hidden revisions stable
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 24 Nov 2013 02:10:14 +0100] rev 20317
subrepo: do not try to get hidden revisions If a subrepo revision is hidden (because it was amended, for example) it does not make sense to try to "get" it from the remote subrepository. Note that in order to avoid making the change look bigger than it is, this adds an unnecessary else clause. This will be removed on a follow up patch.
Thu, 23 Jan 2014 19:08:26 +0100 parsers: fix 'unsigned expression is always true' warning (issue4142) stable
David Soria Parra <davidsp@fb.com> [Thu, 23 Jan 2014 19:08:26 +0100] rev 20316
parsers: fix 'unsigned expression is always true' warning (issue4142) On Mac OS gcc-llvm throws an -Wtautological-compare warning because flen is defined as an unsigned integer, therefore flen < 0 is always true.
Thu, 23 Jan 2014 14:06:15 -0600 wix: pull in new templates stable
Steve Borho <steve@borho.org> [Thu, 23 Jan 2014 14:06:15 -0600] rev 20315
wix: pull in new templates
Mon, 28 Jan 2013 15:16:49 +0100 phase: properly compute ancestors of --rev on push (issue3786) stable
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 28 Jan 2013 15:16:49 +0100] rev 20314
phase: properly compute ancestors of --rev on push (issue3786) Now that discovery is working on unfiltered changeset, I had a good occasion to look at that bug again. This let me realise that a trivial node vs rev comparision was the cause of this two years old bugsā€¦ Happy second birthday phases!
Thu, 23 Jan 2014 01:21:08 +0100 hgext: fix one typo in rebase stable
Simon Heimberg <simohe@besonet.ch> [Thu, 23 Jan 2014 01:21:08 +0100] rev 20313
hgext: fix one typo in rebase
Thu, 23 Jan 2014 01:29:50 +0100 templater: selecting a style with no templates does not crash (issue4140) stable
Simon Heimberg <simohe@besonet.ch> [Thu, 23 Jan 2014 01:29:50 +0100] rev 20312
templater: selecting a style with no templates does not crash (issue4140) Running `hg log --style compact` (or any other style) raised a traceback when no template directory was there. Now there is a message: Abort: style 'compact' not found (available styles: no templates found, try `hg debuginstall` for more info) There is no test because this would require to rename the template directory. But this would influence other tests running in parallel. And when the test would be aborted the wrong named directory would remain, especially a problem when running with -l.
Thu, 23 Jan 2014 14:31:05 -0600 makefile: add $ to environment variables in help message stable
Matt Mackall <mpm@selenic.com> [Thu, 23 Jan 2014 14:31:05 -0600] rev 20311
makefile: add $ to environment variables in help message
Tue, 21 Jan 2014 14:44:40 -0600 Added signature for changeset 8862469e16f9 stable
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:44:40 -0600] rev 20310
Added signature for changeset 8862469e16f9
Tue, 21 Jan 2014 14:44:29 -0600 Added tag 2.9-rc for changeset 8862469e16f9 stable
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:44:29 -0600] rev 20309
Added tag 2.9-rc for changeset 8862469e16f9
Tue, 21 Jan 2014 14:44:01 -0600 merge with i18n stable 2.9-rc
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:44:01 -0600] rev 20308
merge with i18n
Mon, 20 Jan 2014 11:16:26 -0200 i18n: fix trailing '::' on translated messages stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 20 Jan 2014 11:16:26 -0200] rev 20307
i18n: fix trailing '::' on translated messages Reported by FUJIWARA Katsunori <foozy@lares.dti.ne.jp>.
Tue, 21 Jan 2014 14:30:06 -0600 merge default into stable for 2.9 code freeze stable
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:30:06 -0600] rev 20306
merge default into stable for 2.9 code freeze
Mon, 20 Jan 2014 01:29:54 +0100 tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com> [Mon, 20 Jan 2014 01:29:54 +0100] rev 20305
tests: stop tracking tests/gpg/random_seed test-gpg.t left the random_seed file as modified. That was slightly confusing ... and it was accidentally changed in ea4996754d91. The seed is created on demand and there is no reason to track it. There is also no reason to leak state between test runs so we let the test clean up after running.
Mon, 20 Jan 2014 01:29:54 +0100 tests: 'hghave tic' also requires curses support in Python
Mads Kiilerich <madski@unity3d.com> [Mon, 20 Jan 2014 01:29:54 +0100] rev 20304
tests: 'hghave tic' also requires curses support in Python test-status-color.t would fail when using a Python without curses.
Mon, 20 Jan 2014 17:09:20 -0600 test-import-merge: mangle file in binary mode
Matt Mackall <mpm@selenic.com> [Mon, 20 Jan 2014 17:09:20 -0600] rev 20303
test-import-merge: mangle file in binary mode This should fix a test breakage on Windows.
Sun, 19 Jan 2014 22:58:33 -0600 localrepo: drop dead comment
Matt Mackall <mpm@selenic.com> [Sun, 19 Jan 2014 22:58:33 -0600] rev 20302
localrepo: drop dead comment
Thu, 16 Jan 2014 15:05:03 -0500 record: re-enable whitespace-ignoring options
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 16 Jan 2014 15:05:03 -0500] rev 20301
record: re-enable whitespace-ignoring options It looks like somewhere down the line, patch.diffopts changed the names of the options that it recognises, but record.recordfunc wasn't updated to the new names. Instead of trying to write down names at all, we now use whatever names are provided in commands.diffwsopts and pass that along to patch.diffopts, along with a couple of custom options
Thu, 16 Jan 2014 14:57:52 -0500 record: use commands.diffwsopts instead of ad-hoc diffopts
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 16 Jan 2014 14:57:52 -0500] rev 20300
record: use commands.diffwsopts instead of ad-hoc diffopts The record extension is writing its own version of commands.diffwsopts which is identical to commands.diffwsopts. Based on the principle that code duplication increases maintenance burden, this patch removes record's ad-hoc diffopts in favour of commands.diffwsopts
Sun, 17 Nov 2013 11:30:17 -0500 phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 17 Nov 2013 11:30:17 -0500] rev 20299
phases: add a formal note that hash of secret changeset may leak out For technical reason (discovery, obsolescence marker) the hash of secret changeset are communicated outside of your repo. We clarifie that in the help so that people does not used hash of secret changeset as nuclear launch code.
Sat, 16 Nov 2013 15:54:41 -0500 largefiles: stylistic cleanup of filemerge
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:54:41 -0500] rev 20298
largefiles: stylistic cleanup of filemerge
Sat, 16 Nov 2013 15:46:29 -0500 largefiles: show hashes before prompting for conflict resolution
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20297
largefiles: show hashes before prompting for conflict resolution The largefile hashes are mostly an implementation detail, but they are "leaked" in several places anyway, and showing the hashes is better than not giving the user any information about the options in the prompt. The hashes are long, but it is largefile hashes and it would thus be confusing to shorten them.
Sat, 16 Nov 2013 15:46:29 -0500 largefiles: don't try to explain rename history before prompt for conflicts
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20296
largefiles: don't try to explain rename history before prompt for conflicts Before it tried to explain the exact situation when merging moved largefiles. That do not happen for normal merges and is not more relevant for largefiles than for normal files. It is unneeded complexity - remove it.
Sat, 16 Nov 2013 15:46:29 -0500 largefiles: drop redundant special handling of merges of renames
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20295
largefiles: drop redundant special handling of merges of renames It is unclear what cases this was supposed to cover but it do no longer seem relevant.
Sat, 16 Nov 2013 15:46:29 -0500 diff: search beyond ancestor when detecting renames
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20294
diff: search beyond ancestor when detecting renames This removes an optimization that was introduced in 91eb4512edd0 but was too aggressive - as indicated by how it changed test-mq-merge.t . We are walking filelogs to find copy sources and we can thus not be sure to hit the base revision and find the renamed file there - it could also be in the first ancestor of the base ... in the filelog. We are walking the filelog and can thus not easily know when we hit the first ancestor of the base revision and which filename to look for there. Instead, we use _findlimit like mergecopies do: The lower bound for how far we have to go is found from the lowest changelog revision that is an ancestor of only one of the compared revisions. Any filelog ancestor with a revision number lower than that revision will be the ancestor of both compared revisions, and there is thus no reason to go further back than that.
Tue, 14 Jan 2014 13:38:16 -0800 cat: increase perf when catting single files
Durham Goode <durham@fb.com> [Tue, 14 Jan 2014 13:38:16 -0800] rev 20293
cat: increase perf when catting single files Special case the single file case in hg cat. This allows us to avoid parsing the manifest, which shaves 15% off hg cat perf. This is worth it, since automation often uses hg cat for retrieving single files.
Tue, 14 Jan 2014 13:49:19 -0800 changectx: increase perf of walk function
Durham Goode <durham@fb.com> [Tue, 14 Jan 2014 13:49:19 -0800] rev 20292
changectx: increase perf of walk function When running 'hg cat -r . <file>' it was doing an expensive ctx.walk(m) which applied the regex to every file in the manifest. This changes changectx.walk to iterate over just the files in the regex, if no other patterns are specified. This cuts hg cat time by 50% in our repo and probably benefits a few other commands as well.
Wed, 15 Jan 2014 16:46:20 -0800 url: added authuri when login information is requested (issue3209)
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 15 Jan 2014 16:46:20 -0800] rev 20291
url: added authuri when login information is requested (issue3209) When users are using a revset they can get multiple password prompts. This prompts have no extra information about which password is being requested so I added the authuri to the prompt to make it recognizable. As in: $ hg log -r "outgoing('https://bitbucket.org/mg/test') - outgoing('https://bitbucket.org/nesneros/test')" http authorization required realm: Bitbucket.org HTTP user: interrupted! I changed it to describe the url when prompting for password. As in: $ hg log -r "outgoing('https://bitbucket.org/mg/test') - outgoing('https://bitbucket.org/nesneros/test')" http authorization required for https://bitbucket.org/mg/test realm: Bitbucket.org HTTP user: interrupted!
Fri, 17 Jan 2014 23:55:11 +0900 doc: add description about pattern matching against directories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:55:11 +0900] rev 20290
doc: add description about pattern matching against directories Before this patch, there is no explicit description about pattern matching against directories, even though users may understand it from "plain examples" in "hg help patterns". This patch adds description about pattern matching against directories.
Fri, 17 Jan 2014 23:55:11 +0900 revset: add explanation about the pattern without explicit kind
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:55:11 +0900] rev 20289
revset: add explanation about the pattern without explicit kind Before this patch, online help of "adds()", "contains()", "filelog()", "file()", "modifies()" and "removes()" predicates doesn't explain about how the pattern without explicit kind like "glob:" is treated, even though each predicates treat it differently: - as "relpath:" by "adds()", "modifies()" and "removes()" - as "glob:" by "file()" - as special by "contains()" and "filelog()" - be relative to cwd, and - match against a file exactly ("relpath:" matches also against a directory) This may confuse users. This patch adds explanation about the pattern without explicit kind to these predicates.
Fri, 17 Jan 2014 23:55:03 +0900 revset: use "canonpath()" for "filelog()" pattern without explicit kind
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:55:03 +0900] rev 20288
revset: use "canonpath()" for "filelog()" pattern without explicit kind Before this patch, revset predicate "filelog()" uses "match.files()" to get filename also for the pattern without explicit kind. But in such case, only canonicalization of relative path is required, and other initializations of "match" object including regexp compilation are meaningless. This patch uses "pathutil.canonpath()" directly for "filelog()" pattern without explicit kind like "glob:", for efficiency. This patch also does below as a part of introducing "canonpath()": - move location of "matchmod.match()" invocation, because "m" is no more used in "if not matchmod.patkind(pat)" code path - omit passing "default" argument to "matchmod.match()", because "pat" should have explicit kind of pattern in this code path
Fri, 17 Jan 2014 23:42:12 +0900 revset: avoid loop for "match.files()" having always one element for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:42:12 +0900] rev 20287
revset: avoid loop for "match.files()" having always one element for efficiency This patch avoids the loop for "match.files()" having always one element in revset predicate "filelog()" for efficiency: "match" object "m" is constructed with "[pat]" as "patterns" argument.
Fri, 17 Jan 2014 23:42:12 +0900 revset: make default kind of pattern for "contains()" rooted at cwd
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:42:12 +0900] rev 20286
revset: make default kind of pattern for "contains()" rooted at cwd Before this patch, default kind of pattern for revset predicate "contains()" is treated as the exact file path rooted at the root of the repository. This decreases usability, because: - all other predicates taking pattern argument (also "filelog()") treat such pattern as the path rooted at the current working directory - "contains()" doesn't describe this difference in its help - this difference may confuse users for example, this prevents revset aliases from sharing same argument between "contains()" and other predicates This patch makes default kind of pattern for revset predicate "contains()" be rooted at the current working directory. This patch uses "pathutil.canonpath()" instead of creating "match" object for efficiency.
Fri, 17 Jan 2014 23:42:12 +0900 revset: narrow scope of the variable referred only in specific code path
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:42:12 +0900] rev 20285
revset: narrow scope of the variable referred only in specific code path This patch narrows scope of the variable "m" in the function for revset predicate "contains()", because it is referred only in "else" code path of "if not matchmod.patkind(pat)" examination.
Fri, 17 Jan 2014 12:46:29 +0100 tests: fix test-run-tests.py on OS X
Simon Heimberg <simohe@besonet.ch> [Fri, 17 Jan 2014 12:46:29 +0100] rev 20284
tests: fix test-run-tests.py on OS X Do the same hack as in test-doctests.py to let the test pass on OS X.
Fri, 17 Jan 2014 19:46:23 +0100 tests: test-debugcommands.t also matches stack trace on python 2.4
Simon Heimberg <simohe@besonet.ch> [Fri, 17 Jan 2014 19:46:23 +0100] rev 20283
tests: test-debugcommands.t also matches stack trace on python 2.4 Some versions of python 2.4 write ? instead of <module>. Ignore this detail by a glob. This fixes a failure spotted on buildbot, existing since this test lines were introduced 47d0843647d1.
Wed, 15 Jan 2014 17:55:13 -0600 commands: use bookmarks.validdest instead of duplicating logic
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 17:55:13 -0600] rev 20282
commands: use bookmarks.validdest instead of duplicating logic Now that bookmarks.py has grown a validdest method that even handles successor changesets, we use that instead of duplicating the logic in commands.py
Wed, 15 Jan 2014 17:48:48 -0600 update: consider successor changesets when moving active bookmark
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 17:48:48 -0600] rev 20281
update: consider successor changesets when moving active bookmark Previously, when an obsolete changeset was bookmarked, successor changesets were not considered when moving the bookmark forward. Now that a bare update will move to the tip most of the successor changesets, we also update the bookmark logic to allow the bookmark to move with this update. Tests have been updated and keep issue4015 covered as well.
Wed, 15 Jan 2014 16:41:18 -0600 merge: consider successor changesets for a bare update
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 16:41:18 -0600] rev 20280
merge: consider successor changesets for a bare update Previously, a bare update would ignore any successor changesets thus potentially leaving you on an obsolete head. This happens commonly when there is an old bookmark that hasn't been moved forward which is the motivating reason for this patch series. Now, we will check for successor changesets if two conditions hold: 1) we are doing a bare update 2) *and* we are currently on an obsolete head. If we are in this situation, then we calculate the branchtip of the successor set and update to that changeset. Tests coverage has been added.
Wed, 06 Nov 2013 17:02:07 -0600 merge: refactor initialization of variables in update
Sean Farley <sean.michael.farley@gmail.com> [Wed, 06 Nov 2013 17:02:07 -0600] rev 20279
merge: refactor initialization of variables in update There is no code change here but this helps prepare for future commits that will fix a bare update with obsolete markers.
Wed, 06 Nov 2013 10:26:25 -0600 merge: update comment for future devs
Sean Farley <sean.michael.farley@gmail.com> [Wed, 06 Nov 2013 10:26:25 -0600] rev 20278
merge: update comment for future devs
Wed, 15 Jan 2014 18:14:12 -0600 obsolete: clarify documentation for succcessorssets
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 18:14:12 -0600] rev 20277
obsolete: clarify documentation for succcessorssets
Wed, 08 Jan 2014 17:23:26 -0800 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 08 Jan 2014 17:23:26 -0800] rev 20276
backout: add a message after backout that need manual commit In some case Backout silently succeeded to back out but left all the change uncommitted. This may be confusing for user so this changeset add a note reminding to commit. Other backout case already actively informs the user about created commit.
Wed, 08 Jan 2014 14:53:46 -0800 backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 08 Jan 2014 14:53:46 -0800] rev 20275
backout: avoid update on simple case. Before the changeset the backout process was: 1) go to <target> 2) revert to <target> parent 3) update back to changeset we came from The two update steps can takes a very long time to move back and forth unrelated file change between <target> and current working directory. The new process is just merging current working directory with the parent of <target> using <target> as ancestor. This give the very same result but skip the two updates. On big repo with a lot of files and changes that save a lots of time (x20 for one week window). The "merge" version (hg backout --merge) is still done with upgrades. We could imagine using in memory commit to speed it up but this is another fish.
Thu, 16 Jan 2014 12:08:57 +0100 run-tests: print more information on unnecessary glob matching
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 12:08:57 +0100] rev 20274
run-tests: print more information on unnecessary glob matching Extend the message with the test name and the approximate line number. (The line number is the one of the command producing the output.) Finding the line to fix is easier now. old message: ...... Info, unnecessary glob: at a/b/c (glob) .. new message: ...... Info, unnecessary glob in test-example.t (after line 9): at a/b/c (glob) .. The test result is still pass as before.
Thu, 16 Jan 2014 12:08:29 +0100 run-tests: suggest to append glob when only path sep does not match
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 12:08:29 +0100] rev 20273
run-tests: suggest to append glob when only path sep does not match When the line does not match because of \ instead of / (on windows), append (glob) in the expected output. This allows to rename test-bla.t.err to test-bla.t for getting a correct output. This worked for other failures like missing (esc), but not here. Output example (only +- lines of diff): Before: - path/with/local/sep + path\\with\\local/sep Now: - path/with/local/sep + path/with/local/sep (glob)
Thu, 16 Jan 2014 12:06:49 +0100 run-tests: test each line matching function on its own
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 12:06:49 +0100] rev 20272
run-tests: test each line matching function on its own This has several advantages. * Each match function can return some information to the caller runone (used in the next patch). * It is not checked that the line ends in " (glob)" when rematch() returns false. * And it looks more readable.
Thu, 16 Jan 2014 19:07:18 +0100 tests: new test for line matching functions in run-tests
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 19:07:18 +0100] rev 20271
tests: new test for line matching functions in run-tests Test for failing matches and warnings. (The existing test-run-tests.t can not do both by design.) And simulate matching on other os.
Wed, 08 Jan 2014 17:15:22 -0800 test-backout: add multiple summary calls to monitor result wc
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 08 Jan 2014 17:15:22 -0800] rev 20270
test-backout: add multiple summary calls to monitor result wc The main goal is to monitor that working directory parent are correct after backout. This will be useful the next changeset introducting magic merge usage.
Mon, 02 Dec 2013 00:50:30 +0900 transplant: use "ui.extractchoices()" to show the list of available responses
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20269
transplant: use "ui.extractchoices()" to show the list of available responses Before this patch, transplant extension shows the list of available responses by specific string, even though the prompt string passed to "ui.promptchoice()" has enough (maybe i18n-ed) information. This patch uses "ui.extractchoices()" to show the list of available responses.
Mon, 02 Dec 2013 00:50:30 +0900 transplant: use "ui.promptchoice()" for interactive transplant
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20268
transplant: use "ui.promptchoice()" for interactive transplant Before this patch, transplant extension uses "ui.prompt()" for interactive transplant, and has to check whether user response returned by "ui.prompt()" is valid or not in own code. In addition to it, transplant extension uses response characters (e.g. "y", "n", and so on) directly in own code, and this disallows to use another response characters by translation, even though the help shown by '?' typing is translatable. This patch uses "ui.promptchoice()" instead of "ui.prompt()" to resolve problems above.
Mon, 02 Dec 2013 00:50:30 +0900 transplant: add test for interactive transplant
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20267
transplant: add test for interactive transplant
Mon, 02 Dec 2013 00:50:30 +0900 record: use "ui.extractchoices()" to get the list of available responses
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20266
record: use "ui.extractchoices()" to get the list of available responses Before this patch, record extension gets the list of available responses from online help document of "hg record" in the tricky way, even though the value passed to "ui.promptchoice()" has enough (maybe i18n-ed) information. This patch uses "ui.extractchoices()" to get the list of available responses.
Mon, 02 Dec 2013 00:50:29 +0900 ui: add "extractchoices()" to share the logic to extract choices from prompt
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:29 +0900] rev 20265
ui: add "extractchoices()" to share the logic to extract choices from prompt
Mon, 06 Jan 2014 15:19:31 -0800 branchmap: use set for update code
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 06 Jan 2014 15:19:31 -0800] rev 20264
branchmap: use set for update code We are doing membership test and substraction. new code is marginally faster.
Mon, 06 Jan 2014 14:26:49 -0800 branchmap: simplify update code
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 06 Jan 2014 14:26:49 -0800] rev 20263
branchmap: simplify update code We drop iterrevs which are not needed anymore. The know head are never a descendant of the updated set. It was possible with the old strip code. This simplification make the code easier to read an update.
Fri, 03 Jan 2014 16:44:23 -0800 branchmap: stop useless rev -> node -> rev round trip
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Jan 2014 16:44:23 -0800] rev 20262
branchmap: stop useless rev -> node -> rev round trip We never use the node of new revisions unless in the very specific case of closed heads. So we can just use the revision number. So give another handfull of percent speedup.
Tue, 15 Jan 2013 20:04:12 +0100 branchmap: stop membership test in update logic
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 15 Jan 2013 20:04:12 +0100] rev 20261
branchmap: stop membership test in update logic Now that no user try to update the cache on a truncated repo we can drop the extra lookup. Give an handfull percent speedup on big branchmap update.
Fri, 03 Jan 2014 17:06:07 -0800 branchmap: remove silly line break
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Jan 2014 17:06:07 -0800] rev 20260
branchmap: remove silly line break The line fit in 80 character limit without it. It is even shorter without it.
Thu, 16 Jan 2014 11:26:54 +0100 run-tests: set the thread name to the test name for info on error
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 11:26:54 +0100] rev 20259
run-tests: set the thread name to the test name for info on error This does not happen when running normal. But when fiddling around with the test infrastructure, this helps a lot. Old traceback messge Exception in thread Thread-7: Traceback (most recent call last): ... new traceback message Exception in thread test-something.t: Traceback (most recent call last): ...
Thu, 16 Jan 2014 18:55:35 +0100 run-tests: report tests as failed when run-test raises an error
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 18:55:35 +0100] rev 20258
run-tests: report tests as failed when run-test raises an error Before no message was returned to the main thread. No result was registered and no new thread was started. This does not happen when running normal. But when fiddling around with the test infrastructure, this helps a lot.
Wed, 08 Jan 2014 00:47:45 +0900 hgweb: infinite scroll support for coal style
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:47:45 +0900] rev 20257
hgweb: infinite scroll support for coal style
Thu, 16 Jan 2014 09:23:31 -0500 test-hgweb-*: output change fixes from b1d65cb8
Augie Fackler <raf@durin42.com> [Thu, 16 Jan 2014 09:23:31 -0500] rev 20256
test-hgweb-*: output change fixes from b1d65cb8
Wed, 08 Jan 2014 00:47:44 +0900 hgweb: infinite scroll support for monoblue style
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:47:44 +0900] rev 20255
hgweb: infinite scroll support for monoblue style
Wed, 08 Jan 2014 00:47:43 +0900 hgweb: infinite scroll support for gitweb style
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:47:43 +0900] rev 20254
hgweb: infinite scroll support for gitweb style
Wed, 08 Jan 2014 00:35:03 +0900 hgweb: avoid invalid infinity scroll request when overwritten web.style
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:35:03 +0900] rev 20253
hgweb: avoid invalid infinity scroll request when overwritten web.style Infinity scroll is broken when you override the web.style in the following ways: $ hg --config='web.style=gitweb' serve $ open http://localhost:8080/shortlog?style=paper ajaxScrollInit should use http://localhost:8080/shortlog/%next%?style=paper. however, http://localhost:8080/shortlog/%next% is used actually. It is missing style parameter. This patch add style parameter to request url.
Wed, 08 Jan 2014 00:26:55 +0900 hgweb: fix regexp for other styles like monoblue
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:26:55 +0900] rev 20252
hgweb: fix regexp for other styles like monoblue Some styles have indentation.
Sat, 16 Nov 2013 15:46:29 -0500 tests: introduce test for rebasing on named branches with closed heads
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20251
tests: introduce test for rebasing on named branches with closed heads
Sat, 16 Nov 2013 15:46:29 -0500 rebase: remove old code for handling empty rebaseset
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20250
rebase: remove old code for handling empty rebaseset
Sun, 17 Nov 2013 18:21:58 -0500 rebase: improve error message for --base being empty or causing emptiness
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 18:21:58 -0500] rev 20249
rebase: improve error message for --base being empty or causing emptiness Before it just said 'nothing to rebase'. Now 'if "base" is an empty set: abort: empty "base" revision set - can't compute rebase set If the set of changesets to rebase can't be found from "base", it will fail as before but with more explanation of what the problem was. The name of the "base" option is not obvious - it is more like "samples identifying the branch to rebase". The error messages for problems with the specified "base" value will use that term and might thus also not be obvious, but at least they are consistent with the option name. The name "base" will not be used if the base only was specified implicitly as the working directory parent.
Sun, 17 Nov 2013 18:21:58 -0500 rebase: improve error message for empty --source set
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 18:21:58 -0500] rev 20248
rebase: improve error message for empty --source set Before, it just said 'nothing to rebase' in this case. Now, it aborts mentioning the reason: 'empty "source" revision set'. Specifying revisions that cannot be rebased is a 'soft' error, but specifying an empty set deserves an abort that explains exactly what the problem is.
Sat, 16 Nov 2013 15:46:29 -0500 rebase: improve error message for empty --rev set
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20247
rebase: improve error message for empty --rev set Before, it just said 'nothing to rebase' in this case. Now, it aborts mentioning the reason: 'empty "rev" revision set'. Specifying revisions that cannot be rebased is a 'soft' error, but specifying an empty set deserves an abort that explains exactly what the problem is.
Sun, 17 Nov 2013 18:21:58 -0500 rebase: test for empty dest revision
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 18:21:58 -0500] rev 20246
rebase: test for empty dest revision
Thu, 21 Nov 2013 15:17:18 -0500 help: branch names primarily denote the tipmost unclosed branch head
Mads Kiilerich <madski@unity3d.com> [Thu, 21 Nov 2013 15:17:18 -0500] rev 20245
help: branch names primarily denote the tipmost unclosed branch head Was the behavior correct and the description wrong so it should be updated as in this patch? Or should the code work as the documentation says? Both ways could make some sense ... but none of them are obvious in all cases. One place where it currently cause problems is when the current revision has another branch head that is closer to tip but closed. 'hg rebase' refuses to rebase to that as it only see the tip-most unclosed branch head which is the current revision. /me kind of likes named branches, but no so much how branch closing works ...
Sun, 12 Jan 2014 23:28:21 +0100 util: introduce util.debugstacktrace for showing a stack trace without crashing
Mads Kiilerich <madski@unity3d.com> [Sun, 12 Jan 2014 23:28:21 +0100] rev 20244
util: introduce util.debugstacktrace for showing a stack trace without crashing This is often very handy when hacking/debugging. Calling util.debugstacktrace('hey') from a place in hg will give something like: hey at: ./hg:38 in <module> /home/user/hgsrc/mercurial/dispatch.py:28 in run /home/user/hgsrc/mercurial/dispatch.py:65 in dispatch /home/user/hgsrc/mercurial/dispatch.py:88 in _runcatch /home/user/hgsrc/mercurial/dispatch.py:740 in _dispatch /home/user/hgsrc/mercurial/dispatch.py:514 in runcommand /home/user/hgsrc/mercurial/dispatch.py:830 in _runcommand /home/user/hgsrc/mercurial/dispatch.py:801 in checkargs /home/user/hgsrc/mercurial/dispatch.py:737 in <lambda> /home/user/hgsrc/mercurial/util.py:472 in check ...
Tue, 07 Jan 2014 22:29:57 +0100 check-code: print debug output when an ignore pattern matches
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:57 +0100] rev 20243
check-code: print debug output when an ignore pattern matches
Tue, 07 Jan 2014 22:29:51 +0100 check-code: drop now unused check-code-ignore
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:51 +0100] rev 20242
check-code: drop now unused check-code-ignore Using check-code-ignore to skip the failures on a line has several disadvantages: * It skips all check-code failures on a line, not only the one it was created for. * It does not give any hint for which rule it was added, making it difficult to see when it is not needed anymore. So drop this pragma in favor of better alternatives promoted before.
Tue, 07 Jan 2014 22:29:44 +0100 check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:44 +0100] rev 20241
check-code: explain what to do when a check-code rule mismatches In the past several approaches were used when a check-code rule triggered without a good reason. Not all of them looked nice, some were even wrong. Suggest some good practices which should be used instead.
Tue, 07 Jan 2014 22:29:39 +0100 cleanup: Remove the only ever used skip-check-code pragma
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:39 +0100] rev 20240
cleanup: Remove the only ever used skip-check-code pragma Use the work-around suggested by the rule instead
Tue, 07 Jan 2014 22:29:15 +0100 check-code: always report when a file is skipped by "no-check-code"
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:15 +0100] rev 20239
check-code: always report when a file is skipped by "no-check-code" Skipping an entire file generally from checking is an important event, so report it always. Do not tell the check name because skipping does not depend on it. Directly skip the entire file instead of checking more patterns and skip again. The pragma no-check-code was introduced by accident in the past. (Fixed in e033a7d444ac and ee07f9d142c9.) This now is prevented because the files to skip have to be listed in the test output of test-check-code-hg.t.
Tue, 07 Jan 2014 22:28:45 +0100 check-code: do not skip entire file, skip only one match instead
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:28:45 +0100] rev 20238
check-code: do not skip entire file, skip only one match instead Skipping of the entire file has been introduced in bc3b48b0f5c8.
Sat, 16 Nov 2013 15:46:29 -0500 bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20237
bisect: --command without --noupdate should flag the parent rev it tested 14913fcb30c6 not only introduced the 'bisect(current)' revset predicate, it also changed how the 'current' revision is used in combination with --command. The new behaviour might be ok for --noupdate where the working directory and its revision shouldn't be used, but it also did that when --command is used to run a command on the currently checked out revision then it could register the test result on the wrong revision. An example: Before, bisect with --command could use the wrong revision when recording the test result: $ hg up -qr 0 $ hg bisect --command "python \"$TESTTMP/script.py\" and some parameters" changeset 31:58c80a7c8a40: bad abort: inconsistent state, 31:58c80a7c8a40 is good and bad Now it works as before and as expected and uses the working directory revision for the --command result: $ hg up -qr 0 $ hg bisect --command "python \"$TESTTMP/script.py\" and some parameters" changeset 0:b99c7b9c8e11: bad ...
Sat, 16 Nov 2013 15:46:29 -0500 context: drop caching 'copies' method
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20236
context: drop caching 'copies' method The 'copies' method has no test coverage and calls copies.pathcopies with an incorrect number of parameters and is thus (fortunately) not used. Kill it.
Tue, 19 Nov 2013 12:43:29 -0800 commands.bookmarks: move hexfn to inside list block
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 12:43:29 -0800] rev 20235
commands.bookmarks: move hexfn to inside list block This isn't used outside this block, nor is it expected to be.
Tue, 19 Nov 2013 12:42:17 -0800 commands.bookmarks: move cur initialization to inside wlock
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 12:42:17 -0800] rev 20234
commands.bookmarks: move cur initialization to inside wlock This is more correct because we now fetch '.' while nothing else can interfere with it.
Thu, 21 Nov 2013 17:11:04 -0800 commands.bookmarks: pass cur in explicitly to checkconflict
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Nov 2013 17:11:04 -0800] rev 20233
commands.bookmarks: pass cur in explicitly to checkconflict cur will be moved inside the wlock in a future patch, so we need to pass it into checkconflict explicitly.
Tue, 19 Nov 2013 12:33:14 -0800 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 12:33:14 -0800] rev 20232
commands.bookmarks: hold wlock for write operations Any invocations of bookmarks other than a plain 'hg bookmarks' will likely cause a write to the bookmark store. These should be guarded by the wlock. The repo._bookmarks read should be similarly guarded by the wlock if we're going to be subsequently writing to it.
Tue, 19 Nov 2013 11:47:30 -0800 commands.bookmarks: separate out 'no bookmarks set' status messages
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 11:47:30 -0800] rev 20231
commands.bookmarks: separate out 'no bookmarks set' status messages Upcoming patches will acquire the wlock for write operations, such as make inactive, but not read-only ones, such as list bookmarks. Separate out the status messages so that the code paths can be separated.
Sat, 16 Nov 2013 19:56:53 -0500 tests: test-convert-cvs-synthetic.t requires cvs 1.12
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 19:56:53 -0500] rev 20230
tests: test-convert-cvs-synthetic.t requires cvs 1.12 9589227657bc introduced hghave cvs112 10 months ago. Let's assume it has stabilized so much that we can start using it now.
Mon, 13 Jan 2014 14:33:39 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 13 Jan 2014 14:33:39 -0600] rev 20229
merge with stable
Wed, 08 Jan 2014 12:25:00 -0800 i18n-de: rename noun "entfernt" to "Gegenseite" stable
David Soria Parra <davidsp@fb.com> [Wed, 08 Jan 2014 12:25:00 -0800] rev 20228
i18n-de: rename noun "entfernt" to "Gegenseite" The German translation for "remote" as "entfernt" can be misleading in situations where remote is used as a noun. "entfernt" is not a noun and can also mean "removed". To clarify this we rename "remote" to "Gegenseite" when used as a noun.
Fri, 10 Jan 2014 16:26:11 -0600 doc: bump copyright year
Kevin Bullock <kbullock@ringworld.org> [Fri, 10 Jan 2014 16:26:11 -0600] rev 20227
doc: bump copyright year
Fri, 10 Jan 2014 17:29:16 -0600 localrepo: drop unused variable
Matt Mackall <mpm@selenic.com> [Fri, 10 Jan 2014 17:29:16 -0600] rev 20226
localrepo: drop unused variable
Fri, 15 Nov 2013 23:28:43 -0500 discovery: stop using nodemap for membership testing
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 15 Nov 2013 23:28:43 -0500] rev 20225
discovery: stop using nodemap for membership testing Nodemap is not aware of filtering so we need to ask the changelog itself if a node is known. This is probably a bit slower but such check does not dominated discovery time. This is necessary if we want to run discovery on filtered repo.
Fri, 15 Nov 2013 23:27:39 -0500 discovery: enforce filtering into revlogbaseddag._internalizeall
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 15 Nov 2013 23:27:39 -0500] rev 20224
discovery: enforce filtering into revlogbaseddag._internalizeall One more step toward discovery running on filtered repo.
Fri, 15 Nov 2013 23:27:15 -0500 discovery: make revlogdag work on filtered repo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 15 Nov 2013 23:27:15 -0500] rev 20223
discovery: make revlogdag work on filtered repo The revlogdag class is a core part of discovery. We need its initialisation to exclude revision filtered out.
Sat, 16 Nov 2013 11:53:44 -0500 pull: run findcommon incoming on unfiltered repo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Nov 2013 11:53:44 -0500] rev 20222
pull: run findcommon incoming on unfiltered repo The discovery is not yet ready for filtered repo. Pull was using filtered for its discovery which is wrong. It worked by dumb luck because discovery mainly use funtion that does not respect the filtering. Trying to makes discovery work on filtered repo revealed this bug.
Tue, 05 Nov 2013 18:37:44 +0100 push: more robust check for bundle fast path
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 05 Nov 2013 18:37:44 +0100] rev 20221
push: more robust check for bundle fast path When all changesets in the local repo are either being pushed or remotly known, we can take a fast path when bundling changeset because we are certain all local deltas are computed againts base known remotely. So we have a check to detect this situation, when we did a bare push and nothing was excluded. In a coming refactoring, the discovery will run on filtered view and the content of `outgoing.excluded` will just include unserved (secret) changeset not filtered by the repoview used to call push (usually "visible"). So we need to check if there is both no excluded changeset and nothing filtered by the current repoview.
Sat, 16 Nov 2013 15:36:50 -0500 pull: fix post-pull common computation
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Nov 2013 15:36:50 -0500] rev 20220
pull: fix post-pull common computation Before that changes, pulled revision that happend to be already known locally (so, not actually added) was not taken into account when computing the new common set between local and remote. It appears that we already know the heads of the pulled set. It is in the `rheads` variable, so we are just using it and everything is works fine. We are dropping the, now useless, computation of `added` set in the process.
Mon, 25 Nov 2013 22:00:46 +0100 run-tests: better check for python version
Simon Heimberg <simohe@besonet.ch> [Mon, 25 Nov 2013 22:00:46 +0100] rev 20219
run-tests: better check for python version Compare version by using pythons tuple comparison. So we do not match on python 3.0 or newer.
Mon, 23 Dec 2013 14:14:31 +0100 templatekw: allow tagtypes other than global in getlatesttags
Andrew Shadura <andrew@shadura.me> [Mon, 23 Dec 2013 14:14:31 +0100] rev 20218
templatekw: allow tagtypes other than global in getlatesttags hg-git uses tagtype 'git', for example, so it's better to check for tagtype != 'local', not strictly for 'global'
Tue, 26 Nov 2013 12:58:27 -0800 revlog: move file writing to a separate function
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 12:58:27 -0800] rev 20217
revlog: move file writing to a separate function Moves the code that actually writes to a file to a separate function in revlog.py. This allows extensions to intercept and use the data being written to disk. For example, an extension might want to replicate these writes elsewhere. When cloning the Mercurial repo on /dev/shm with --pull, I see about a 0.3% perf change. It goes from 28.2 to 28.3 seconds.
Sun, 24 Nov 2013 17:33:39 -0600 discovery: prefer loop to double-for list comprehension in changegroupsubset
Kevin Bullock <kbullock@ringworld.org> [Sun, 24 Nov 2013 17:33:39 -0600] rev 20216
discovery: prefer loop to double-for list comprehension in changegroupsubset The double-for form of list comprehensions gets particularly unreadable when you throw in an 'if' condition. This expands the only remaining instance of the double-for syntax in our codebase into a loop.
Thu, 02 Jan 2014 16:32:51 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 02 Jan 2014 16:32:51 -0600] rev 20215
merge with stable
Thu, 02 Jan 2014 15:56:30 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 02 Jan 2014 15:56:30 -0600] rev 20214
merge with stable
Wed, 01 Jan 2014 21:46:45 -0600 Added signature for changeset ca387377df7a stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Jan 2014 21:46:45 -0600] rev 20213
Added signature for changeset ca387377df7a
Wed, 01 Jan 2014 21:46:41 -0600 Added tag 2.8.2 for changeset ca387377df7a stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Jan 2014 21:46:41 -0600] rev 20212
Added tag 2.8.2 for changeset ca387377df7a
Wed, 01 Jan 2014 21:46:03 -0600 merge with i18n stable 2.8.2
Matt Mackall <mpm@selenic.com> [Wed, 01 Jan 2014 21:46:03 -0600] rev 20211
merge with i18n
Mon, 30 Dec 2013 21:30:34 +0900 i18n-ja: synchronized with d4be314b2071 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 30 Dec 2013 21:30:34 +0900] rev 20210
i18n-ja: synchronized with d4be314b2071
Wed, 01 Jan 2014 18:28:40 -0500 merge with stable
Augie Fackler <raf@durin42.com> [Wed, 01 Jan 2014 18:28:40 -0500] rev 20209
merge with stable
Sat, 21 Dec 2013 12:44:19 +0900 fileset, revset: do not use global parser object for thread safety stable
Yuya Nishihara <yuya@tcha.org> [Sat, 21 Dec 2013 12:44:19 +0900] rev 20208
fileset, revset: do not use global parser object for thread safety parse() cannot be called at the same time because a parser object keeps its states. This is no problem for command-line hg client, but it would cause strange errors in multi-threaded hgweb. Creating parser object is not too expensive. original: % python -m timeit -s 'from mercurial import revset' 'revset.parse("0::tip")' 100000 loops, best of 3: 11.3 usec per loop thread-safe: % python -m timeit -s 'from mercurial import revset' 'revset.parse("0::tip")' 100000 loops, best of 3: 13.1 usec per loop
Mon, 23 Dec 2013 15:29:51 -0800 obsolete: order of magnitude speedup in _computebumpedset
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 15:29:51 -0800] rev 20207
obsolete: order of magnitude speedup in _computebumpedset Reminder: a changeset is said "bumped" if it tries to obsolete a immutable changeset. The previous algorithm for computing bumped changeset was: 1) Get all public changesets 2) Find all they successors 3) Search for stuff that are eligible for being "bumped" (mutable and non obsolete) The entry size of this algorithm is `O(len(public))` which is mostly the same as `O(len(repo))`. Even this this approach mean fewer obsolescence marker are traveled, this is not very scalable. The new algorithm is: 1) For each potential bumped changesets (non obsolete mutable) 2) iterate over precursors 3) if a precursors is public. changeset is bumped We travel more obsolescence marker, but the entry size is much smaller since the amount of potential bumped should remains mostly stable with time `O(1)`. On some confidential gigantic repo this move bumped computation from 15.19s to 0.46s (Ɨ33 speedupā€¦). On "smaller" repo (mercurial, cubicweb's review) no significant gain were seen. The additional traversal of obsolescence marker is probably probably counter balance the advantage of it. Other optimisation could be done in the future (eg: sharing precursors cache for divergence detection)
Mon, 23 Dec 2013 13:36:13 -0800 obsolete: add an allprecursors method mirroring allsuccessors one.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 13:36:13 -0800] rev 20206
obsolete: add an allprecursors method mirroring allsuccessors one. Detection of bumped changeset should use `allprecursors(<mutable>)` instead or `allsuccessors(<immutable>)` so we need the all precursors function to exists.
Mon, 23 Dec 2013 16:04:51 -0800 perf: fix perfvolatilesets
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 16:04:51 -0800] rev 20205
perf: fix perfvolatilesets The repoview's `filteredrevs` has been renamed to `filterrevs` at some point. perf was never informed.
Mon, 23 Dec 2013 13:33:21 -0800 obsolete: improve allsuccessors doc string
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 13:33:21 -0800] rev 20204
obsolete: improve allsuccessors doc string The fact original nodes are also yield is not obvious. We update the docstring to highlight it.
Mon, 23 Dec 2013 13:32:03 -0800 obsolete: fix bad comment
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 13:32:03 -0800] rev 20203
obsolete: fix bad comment We cannot afford such extra "with" they are far too pricy.
Sun, 29 Dec 2013 13:54:04 +0000 util: remove unused realpath (issue4063)
Christian Ebert <blacktrash@gmx.net> [Sun, 29 Dec 2013 13:54:04 +0000] rev 20202
util: remove unused realpath (issue4063) util.realpath was in use for only 5 days from dbdb777502dc until it was backed out in c519cd8f0169 because it caused issue3077 and issue3071.
Wed, 01 Jan 2014 17:57:48 -0500 import-checker: suppress check-code about any()
Augie Fackler <raf@durin42.com> [Wed, 01 Jan 2014 17:57:48 -0500] rev 20201
import-checker: suppress check-code about any() ast is a new enough module that this script can't work on any version of Python without any(), so we'll just use it.
Tue, 24 Dec 2013 19:10:04 -0500 import-checker: use any() and a genexp to avoid awkward for/else construction
Augie Fackler <raf@durin42.com> [Tue, 24 Dec 2013 19:10:04 -0500] rev 20200
import-checker: use any() and a genexp to avoid awkward for/else construction
Sun, 22 Dec 2013 21:27:00 -0800 import-checker: backout 40f79b9a2cc8 (issue4129)
Chris Jerdonek <chris.jerdonek@gmail.com> [Sun, 22 Dec 2013 21:27:00 -0800] rev 20199
import-checker: backout 40f79b9a2cc8 (issue4129) This patch backs out 40f79b9a2cc8, which caused test-module-imports.t to be skipped when the test was run using virtualenv. Since the test now passes when using virtualenv, the skip is no longer necessary.
Sun, 22 Dec 2013 21:20:38 -0800 import-checker: make test-module-imports.t work using virtualenv (issue4129)
Chris Jerdonek <chris.jerdonek@gmail.com> [Sun, 22 Dec 2013 21:20:38 -0800] rev 20198
import-checker: make test-module-imports.t work using virtualenv (issue4129) This patch modifies contrib/import-checker.py so that test-module-imports.t will pass if run using virtualenv. The patch achieves this by adding two new prefixes to the list of allowable sys.path prefixes. The added prefixes are the directories of two modules in the stdlib. The modules selected are a minimal set that allowed the return value of list_stdlib_modules() to match the return value without virtualenv, when run on the patch author's machine: Mac OS X 10.8, Python 2.7.6.
Sun, 22 Dec 2013 14:10:26 -0800 import-checker: refactor sys.path prefix check (issue4129)
Chris Jerdonek <chris.jerdonek@gmail.com> [Sun, 22 Dec 2013 14:10:26 -0800] rev 20197
import-checker: refactor sys.path prefix check (issue4129) This patch refactors the logic in contrib/import-checker.py responsible for checking the beginnings of the paths in sys.path. In particular, it adds a variable that defines the set of allowed prefixes. The primary purpose of this change is to make it easier to add more allowed prefixes. This will be useful in resolving issue4129, which involves making the function list_stdlib_modules() work when run from a virtualenv.
Tue, 24 Dec 2013 17:44:23 -0500 filter: add a comment so that people do not forget to update subsettable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 24 Dec 2013 17:44:23 -0500] rev 20196
filter: add a comment so that people do not forget to update subsettable Changeset 175c6fd8cacc moved `subsettable` from `mercurial/repoview.py` to `mercurial/branchmap.py`. This mean that `filtertable` and `subsettable` are no longer next to each other. So we add a comment to remind people to update both.
Mon, 16 Sep 2013 01:08:29 -0700 localrepo: remove unused repo.branchtags()/_branchtip() methods
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20195
localrepo: remove unused repo.branchtags()/_branchtip() methods
Mon, 16 Sep 2013 01:08:29 -0700 hgweb: simplify branches with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20194
hgweb: simplify branches with repo.branchmap().iterbranches()
Mon, 16 Sep 2013 01:08:29 -0700 hgweb: simplify summary with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20193
hgweb: simplify summary with repo.branchmap().iterbranches()
Mon, 16 Sep 2013 01:08:29 -0700 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20192
branches: simplify with repo.branchmap().iterbranches() Running hg branches on the PyPy repo (with 996) over a busy NFS server, before this change: $ time hg --profile branches > /dev/null CallCount Recursive Total(s) Inline(s) module:lineno(function) 1069 0 1.2955 1.2955 <open> 1063 0 0.5576 0.5576 <method 'close' of 'file' objects> 4122 0 0.1993 0.0449 mercurial.repoview:161(changelog) 8240 0 0.0771 0.0299 mercurial.changelog:133(tip) 4122 0 0.0422 0.0204 mercurial.localrepo:26(__get__) 8240 0 0.0252 0.0131 <len> 4122 0 0.0060 0.0037 mercurial.repoview:112(filterrevs) 8240 0 0.0028 0.0028 <hash> 3029 0 0.2139 0.0390 mercurial.context:202(__init__) 3029 0 0.1402 0.0339 mercurial.repoview:161(changelog) 3029 0 0.0240 0.0087 mercurial.changelog:183(rev) 9087 0 0.0067 0.0067 <isinstance> 1096 0 0.0025 0.0025 <binascii.unhexlify> 4125 0 0.0015 0.0015 <len> 4229 0 0.0344 0.0344 mercurial.revlog:296(rev) 1061 0 0.0343 0.0343 <method 'seek' of 'file' objects> 1063 0 0.0339 0.0339 <method 'read' of 'file' objects> 40476 16488 0.0479 0.0311 <len> 16488 0 0.0216 0.0168 mercurial.revlog:262(__len__) 8240 0 0.0771 0.0299 mercurial.changelog:133(tip) 8240 0 0.0281 0.0203 mercurial.changelog:190(node) 8240 0 0.0191 0.0095 <len> 1342 0 0.0278 0.0278 <zlib.decompress> 1074 0 2.2143 0.0266 mercurial.changelog:270(read) 1074 0 2.1328 0.0230 mercurial.revlog:907(revision) 1073 0 0.0208 0.0108 mercurial.changelog:28(decodeextra) 2148 0 0.0072 0.0072 <method 'split' of 'str' objects> 2148 0 0.0211 0.0038 mercurial.encoding:61(tolocal) 1074 0 0.0028 0.0028 <method 'index' of 'str' objects> 1061 0 1.9811 0.0237 mercurial.revlog:817(_loadchunk) real 0m2.742s user 0m0.811s sys 0m0.188s After this change: $ time hg --profile branches > /dev/null CallCount Recursive Total(s) Inline(s) module:lineno(function) 2092 0 0.1444 0.0292 mercurial.context:202(__init__) 2092 0 0.0908 0.0216 mercurial.repoview:161(changelog) 2092 0 0.0164 0.0057 mercurial.changelog:183(rev) 6276 0 0.0045 0.0045 <isinstance> 1096 0 0.0024 0.0024 <binascii.unhexlify> 3188 0 0.0013 0.0013 <len> 2218 0 0.0230 0.0230 mercurial.revlog:296(rev) 2111 0 0.1028 0.0218 mercurial.repoview:161(changelog) 4218 0 0.0387 0.0146 mercurial.changelog:133(tip) 2111 0 0.0238 0.0104 mercurial.localrepo:26(__get__) 4218 0 0.0122 0.0062 <len> 2111 0 0.0038 0.0021 mercurial.repoview:112(filterrevs) 4218 0 0.0014 0.0014 <hash> 20240 8444 0.0233 0.0149 <len> 8444 0 0.0110 0.0084 mercurial.revlog:262(__len__) 4218 0 0.0387 0.0146 mercurial.changelog:133(tip) 4218 0 0.0144 0.0103 mercurial.changelog:190(node) 4218 0 0.0097 0.0048 <len> 2398 1 0.0271 0.0115 mercurial.localrepo:26(__get__) 2398 1 0.0146 0.0046 mercurial.scmutil:939(__get__) 2124 0 0.0009 0.0009 mercurial.localrepo:330(unfiltered) 274 0 0.0002 0.0002 mercurial.repoview:192(unfiltered) 4 0 0.1409 0.0112 mercurial.branchmap:19(read) 1096 0 0.1113 0.0028 mercurial.localrepo:407(__contains__) 1098 0 0.0020 0.0020 <method 'split' of 'str' objects> 1097 0 0.0019 0.0019 <binascii.unhexlify> 1096 0 0.0093 0.0018 mercurial.encoding:61(tolocal) 1096 0 0.0010 0.0010 <method 'append' of 'list' objects> 4349 0 0.0150 0.0105 mercurial.changelog:190(node) 4349 0 0.0045 0.0045 mercurial.revlog:317(node) real 0m0.362s user 0m0.329s sys 0m0.024s
Mon, 16 Sep 2013 01:08:29 -0700 debuglabelcomplete: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20191
debuglabelcomplete: simplify with repo.branchmap().iterbranches()
Mon, 16 Sep 2013 01:08:29 -0700 branchmap: introduce iterbranches() method
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20190
branchmap: introduce iterbranches() method
Mon, 16 Sep 2013 01:08:29 -0700 localrepo: refactor repo.branchheads() to use repo.branchmap().branchheads()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20189
localrepo: refactor repo.branchheads() to use repo.branchmap().branchheads()
Mon, 16 Sep 2013 01:08:29 -0700 branchmap: introduce branchheads() method
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20188
branchmap: introduce branchheads() method
Mon, 16 Sep 2013 01:08:29 -0700 localrepo: refactor repo.branchtip() to use repo.branchmap().branchtip()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20187
localrepo: refactor repo.branchtip() to use repo.branchmap().branchtip()
Mon, 16 Sep 2013 01:08:29 -0700 branchmap: introduce branchtip() method
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20186
branchmap: introduce branchtip() method
Mon, 16 Sep 2013 01:08:29 -0700 branchmap: cache open/closed branch head information
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20185
branchmap: cache open/closed branch head information This lets us determine the open/closed state of a branch without reading from the changelog (which can be costly over NFS and/or with many branches).
Mon, 11 Nov 2013 21:16:54 +1100 bookmarks: allow push -B to create a new remote head (issue2372)
Stephen Lee <sphen.lee@gmail.com> [Mon, 11 Nov 2013 21:16:54 +1100] rev 20184
bookmarks: allow push -B to create a new remote head (issue2372) Push is currently allowed to create a new head if there is a remote bookmark that will be updated to point to the new head. If the bookmark is not known remotely then push aborts, even if a -B argument is about to push the bookmark. This change allows push to continue in this case. This does not require a wireproto force.
Thu, 21 Nov 2013 15:46:49 -0500 template: modify showextras to return a hybrid
Matthew Turk <matthewturk@gmail.com> [Thu, 21 Nov 2013 15:46:49 -0500] rev 20183
template: modify showextras to return a hybrid This modifies slightly the behavior introduced in 519120a96c63 to allow showextras to return a hybrid, rather than showlist. The example in the template help file now executes and returns meaningful results.
Fri, 15 Nov 2013 23:18:08 -0500 branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io> [Fri, 15 Nov 2013 23:18:08 -0500] rev 20182
branches: avoid unnecessary changectx.branch() calls This requires reading from the changelog, which can be costly over NFS. Note that this does not totally remove reading from the changelog; we still do that when calling changectx.closesbranch(). That call will be removed in a later patch. Running hg branches on the PyPy repo (with 996) over a busy NFS server, before this change: $ time hg --profile branches > /dev/null CallCount Recursive Total(s) Inline(s) module:lineno(function) 2042 0 2.2827 2.2827 <open> 2036 0 0.9840 0.9840 <method 'close' of 'file' objects> 2036 0 0.0464 0.0464 <method 'read' of 'file' objects> 5233 0 0.1985 0.0453 mercurial.repoview:161(changelog) 10462 0 0.0791 0.0314 mercurial.changelog:133(tip) 5233 0 0.0388 0.0176 mercurial.localrepo:26(__get__) 10462 0 0.0250 0.0126 <len> 5233 0 0.0059 0.0039 mercurial.repoview:112(filterrevs) 10462 0 0.0029 0.0029 <hash> 2034 0 0.0444 0.0444 <method 'seek' of 'file' objects> 5340 0 0.0390 0.0390 mercurial.revlog:296(rev) 2582 0 0.0371 0.0371 <zlib.decompress> 3155 0 0.1963 0.0366 mercurial.context:202(__init__) 3155 0 0.1238 0.0306 mercurial.repoview:161(changelog) 3155 0 0.0261 0.0080 mercurial.changelog:183(rev) 9465 0 0.0061 0.0061 <isinstance> 1096 0 0.0023 0.0023 <binascii.unhexlify> 4251 0 0.0014 0.0014 <len> 2059 0 3.7341 0.0332 mercurial.changelog:270(read) 2059 0 3.6304 0.0307 mercurial.revlog:907(revision) 2057 0 0.0262 0.0137 mercurial.changelog:28(decodeextra) 4118 0 0.0094 0.0094 <method 'split' of 'str' objects> 4118 0 0.0270 0.0048 mercurial.encoding:61(tolocal) 2059 0 0.0040 0.0040 <method 'index' of 'str' objects> 10462 0 0.0791 0.0314 mercurial.changelog:133(tip) 10462 0 0.0289 0.0207 mercurial.changelog:190(node) 10462 0 0.0188 0.0091 <len> 52433 20932 0.0478 0.0310 <len> 20932 0 0.0221 0.0168 mercurial.revlog:262(__len__) 2059 0 3.6304 0.0307 mercurial.revlog:907(revision) real 0m4.361s user 0m0.986s sys 0m0.237s After this change: $ time hg --profile branches > /dev/null CallCount Recursive Total(s) Inline(s) module:lineno(function) 1069 0 1.1098 1.1098 <open> 1063 0 0.4865 0.4865 <method 'close' of 'file' objects> 4122 0 0.1811 0.0404 mercurial.repoview:161(changelog) 8240 0 0.0712 0.0272 mercurial.changelog:133(tip) 4122 0 0.0378 0.0177 mercurial.localrepo:26(__get__) 8240 0 0.0221 0.0115 <len> 4122 0 0.0057 0.0033 mercurial.repoview:112(filterrevs) 8240 0 0.0025 0.0025 <hash> 3029 0 0.1979 0.0371 mercurial.context:202(__init__) 3029 0 0.1278 0.0310 mercurial.repoview:161(changelog) 3029 0 0.0230 0.0081 mercurial.changelog:183(rev) 9087 0 0.0061 0.0061 <isinstance> 1096 0 0.0026 0.0026 <binascii.unhexlify> 4125 0 0.0014 0.0014 <len> 4229 0 0.0337 0.0337 mercurial.revlog:296(rev) 1061 0 0.0296 0.0296 <method 'seek' of 'file' objects> 1063 0 0.0292 0.0292 <method 'read' of 'file' objects> 8240 0 0.0712 0.0272 mercurial.changelog:133(tip) 8240 0 0.0271 0.0196 mercurial.changelog:190(node) 8240 0 0.0169 0.0083 <len> 40476 16488 0.0422 0.0271 <len> 16488 0 0.0193 0.0152 mercurial.revlog:262(__len__) 1342 0 0.0241 0.0241 <zlib.decompress> 9445 0 0.0336 0.0224 mercurial.changelog:190(node) 9445 0 0.0112 0.0112 mercurial.revlog:317(node) 1074 0 1.9102 0.0224 mercurial.changelog:270(read) 1074 0 1.8397 0.0202 mercurial.revlog:907(revision) 1073 0 0.0187 0.0099 mercurial.changelog:28(decodeextra) 2148 0 0.0061 0.0061 <method 'split' of 'str' objects> 2148 0 0.0184 0.0034 mercurial.encoding:61(tolocal) real 0m2.402s user 0m0.735s sys 0m0.177s
Fri, 15 Nov 2013 23:18:08 -0500 branchmap: add documentation on the branchcache on-disk format
Brodie Rao <brodie@sf.io> [Fri, 15 Nov 2013 23:18:08 -0500] rev 20181
branchmap: add documentation on the branchcache on-disk format
Sun, 17 Nov 2013 18:04:29 -0500 revlog: allow tuning of the chunk cache size (via format.chunkcachesize)
Brodie Rao <brodie@sf.io> [Sun, 17 Nov 2013 18:04:29 -0500] rev 20180
revlog: allow tuning of the chunk cache size (via format.chunkcachesize) Running perfmoonwalk on the Mercurial repo (with almost 20,000 changesets) on Mac OS X with an SSD, before this change: $ hg --config format.chunkcachesize=1024 perfmoonwalk ! wall 2.022021 comb 2.030000 user 1.970000 sys 0.060000 (best of 5) (16,154 cache hits, 3,840 misses.) $ hg --config format.chunkcachesize=4096 perfmoonwalk ! wall 1.901006 comb 1.900000 user 1.880000 sys 0.020000 (best of 6) (19,003 hits, 991 misses.) $ hg --config format.chunkcachesize=16384 perfmoonwalk ! wall 1.802775 comb 1.800000 user 1.800000 sys 0.000000 (best of 6) (19,746 hits, 248 misses.) $ hg --config format.chunkcachesize=32768 perfmoonwalk ! wall 1.818545 comb 1.810000 user 1.810000 sys 0.000000 (best of 6) (19,870 hits, 124 misses.) $ hg --config format.chunkcachesize=65536 perfmoonwalk ! wall 1.801350 comb 1.810000 user 1.800000 sys 0.010000 (best of 6) (19,932 hits, 62 misses.) $ hg --config format.chunkcachesize=131072 perfmoonwalk ! wall 1.805879 comb 1.820000 user 1.810000 sys 0.010000 (best of 6) (19,963 hits, 31 misses.) We may want to change the default size in the future based on testing and user feedback.
Sun, 17 Nov 2013 18:04:28 -0500 revlog: read/cache chunks in fixed windows of 64 KB
Brodie Rao <brodie@sf.io> [Sun, 17 Nov 2013 18:04:28 -0500] rev 20179
revlog: read/cache chunks in fixed windows of 64 KB When reading a revlog chunk, instead of reading up to 64 KB ahead of the request offset and caching that, this change caches a fixed window before and after the requested data that falls on 64 KB boundaries. This increases cache hits when reading revlogs backwards. Running perfmoonwalk on the Mercurial repo (with almost 20,000 changesets) on Mac OS X with an SSD, before this change: $ hg perfmoonwalk ! wall 2.307994 comb 2.310000 user 2.120000 sys 0.190000 (best of 5) (Each run has 10,668 cache hits and 9,304 misses.) After this change: $ hg perfmoonwalk ! wall 1.814117 comb 1.810000 user 1.810000 sys 0.000000 (best of 6) (19,931 cache hits, 62 misses.) On a busy NFS share, before this change: $ hg perfmoonwalk ! wall 17.000034 comb 4.100000 user 3.270000 sys 0.830000 (best of 3) After: $ hg perfmoonwalk ! wall 1.746115 comb 1.670000 user 1.660000 sys 0.010000 (best of 5)
Sun, 17 Nov 2013 18:04:28 -0500 perf: add perfmoonwalk command to walk the changelog backwards
Brodie Rao <brodie@sf.io> [Sun, 17 Nov 2013 18:04:28 -0500] rev 20178
perf: add perfmoonwalk command to walk the changelog backwards This lets us test the effectiveness (or ineffectiveness) of the revlog chunk cache when walking revlogs backwards.
Tue, 03 Dec 2013 13:28:04 -0500 largefiles: call super class method with proper kwargs to respect API
Long Vu <long@tlvu.ca> [Tue, 03 Dec 2013 13:28:04 -0500] rev 20177
largefiles: call super class method with proper kwargs to respect API Since the localrepositoyry.push() method in mercurial/localrepo.py is defined this way: def push(self, remote, force=False, revs=None, newbranch=False): it is better for largefiles to call push() on the super class with proper kwargs to respect the API. This will avoid breaking other extensions overriding the push method this way: def push(self, remote, force=False, **kwargs):
Wed, 13 Nov 2013 15:55:30 +0900 subrepo: check phase of state in each subrepositories before committing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 13 Nov 2013 15:55:30 +0900] rev 20176
subrepo: check phase of state in each subrepositories before committing Before this patch, phase of newly created commit is determined by "phases.new-commit" configuration regardless of phase of state in each subrepositories. For example, this may cause the "public" revision in the parent repository referring the "secret" one in subrepository. This patch checks phase of state in each subrepositories before committing in the parent, and aborts or changes phase of newly created commit if subrepositories have more restricted phase than the parent. This patch uses "follow" as default value of "phases.checksubrepos" configuration, because it can keep consistency between phases of the parent and subrepositories without breaking existing tool chains.
Mon, 16 Dec 2013 12:59:32 -0600 merge with crew
Matt Mackall <mpm@selenic.com> [Mon, 16 Dec 2013 12:59:32 -0600] rev 20175
merge with crew
Sat, 14 Dec 2013 12:48:12 -0500 http: backout 181108726ea5, which breaks on Python 2.4
Augie Fackler <raf@durin42.com> [Sat, 14 Dec 2013 12:48:12 -0500] rev 20174
http: backout 181108726ea5, which breaks on Python 2.4
Sat, 14 Dec 2013 11:58:26 -0500 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com> [Sat, 14 Dec 2013 11:58:26 -0500] rev 20173
test-module-imports: try and detect virtualenv breakage (issue4129) virtualenvs (among other things) break the stdlib module detection in the import checker, and I don't see a good way to work around that for now.
Mon, 25 Nov 2013 17:18:12 +0100 http: reuse authentication info after the first failed request (issue3567)
Stéphane Klein <contact@stephane-klein.info> [Mon, 25 Nov 2013 17:18:12 +0100] rev 20172
http: reuse authentication info after the first failed request (issue3567) Context: mercurial access to repository server with http access, and this server is protected by basic auth. Before patch: * mercurial try an anonymous access to server, server return 401 response and mercurial resend request with login / password information After patch: * mercurial try an anonymous access to server, server return 401 response. For all subsequent requests, mercurial keep in memory this information (this server need basic auth information). This patch reduce the number of http access against mercurial server. Example, before patch : 10.10.168.170 - - [25/Oct/2013:15:44:51 +0200] "GET /hg/testagt?cmd=capabilities HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:44:52 +0200] "GET /hg/testagt?cmd=capabilities HTTP/1.1" 200 147 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:00 +0200] "GET /hg/testagt?cmd=capabilities HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:01 +0200] "GET /hg/testagt?cmd=capabilities HTTP/1.1" 200 147 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:03 +0200] "GET /hg/testagt?cmd=batch HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:04 +0200] "GET /hg/testagt?cmd=batch HTTP/1.1" 200 42 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:06 +0200] "GET /hg/testagt?cmd=getbundle HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:07 +0200] "GET /hg/testagt?cmd=getbundle HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:09 +0200] "GET /hg/testagt?cmd=listkeys HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:10 +0200] "GET /hg/testagt?cmd=listkeys HTTP/1.1" 200 15 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys HTTP/1.1" 200 - "-" "mercurial/proto-1.0" Example after patch : 10.10.168.170 - - [28/Oct/2013:11:49:14 +0100] "GET /hg/testagt?cmd=capabilities HTTP/1.1" 401 260 "-" "mercurial/proto-1.0" 10.10.168.170 - - [28/Oct/2013:11:49:15 +0100] "GET /hg/testagt?cmd=capabilities HTTP/1.1" 200 147 "-" "mercurial/proto-1.0" 10.10.168.170 - - [28/Oct/2013:11:49:17 +0100] "GET /hg/testagt?cmd=batch HTTP/1.1" 200 42 "-" "mercurial/proto-1.0" 10.10.168.170 - - [28/Oct/2013:11:49:19 +0100] "GET /hg/testagt?cmd=getbundle HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0" 10.10.168.170 - - [28/Oct/2013:11:49:22 +0100] "GET /hg/testagt?cmd=listkeys HTTP/1.1" 200 15 "-" "mercurial/proto-1.0" 10.10.168.170 - - [28/Oct/2013:11:49:24 +0100] "GET /hg/testagt?cmd=listkeys HTTP/1.1" 200 - "-" "mercurial/proto-1.0" In this last example, you can see only one 401 response.
Thu, 12 Dec 2013 12:25:56 +0530 record: --user/-u now works with record when ui.username not set (issue3857)
Prasoon Shukla <prasoon92.iitr@gmail.com> [Thu, 12 Dec 2013 12:25:56 +0530] rev 20171
record: --user/-u now works with record when ui.username not set (issue3857) The -u flag didn't work when ui.username was not set and resulted in an abort message. This was fixed by checking for the 'user' key in the opts dictionary. If the key is present, the step causing the exception is not executed.
Wed, 11 Dec 2013 11:33:58 -0600 help: fix formatting of template example
Steve Hoelzer <shoelzer@gmail.com> [Wed, 11 Dec 2013 11:33:58 -0600] rev 20170
help: fix formatting of template example
Fri, 13 Dec 2013 17:23:02 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 13 Dec 2013 17:23:02 -0600] rev 20169
merge with stable
Wed, 04 Dec 2013 13:42:28 -0600 hgweb: avoid initialization race (issue3953) stable
Matt Mackall <mpm@selenic.com> [Wed, 04 Dec 2013 13:42:28 -0600] rev 20168
hgweb: avoid initialization race (issue3953)
Wed, 11 Dec 2013 18:33:42 -0600 mpatch: rewrite pointer overflow checks stable
Matt Mackall <mpm@selenic.com> [Wed, 11 Dec 2013 18:33:42 -0600] rev 20167
mpatch: rewrite pointer overflow checks
Mon, 02 Dec 2013 07:49:49 -0800 parsers: clarify documentation of test-parseindex2.py
Chris Jerdonek <chris.jerdonek@gmail.com> [Mon, 02 Dec 2013 07:49:49 -0800] rev 20166
parsers: clarify documentation of test-parseindex2.py This change updates and improves the description of test-parseindex2.py. In particular, it removes language that can be interpreted to mean that the test module checks only the C implementation of parsers.parse_index2(). Rather, the module checks parsers.parse_index2(), which can be either the C or pure Python implementation, depending on which version is being used. As of e57c532c3835, the module also does more than just compare the return value with the original Python implementation.
Sun, 01 Dec 2013 21:24:48 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 21:24:48 -0600] rev 20165
merge with stable
Sun, 01 Dec 2013 21:24:26 -0600 tests: fix missing import in check-translations stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 21:24:26 -0600] rev 20164
tests: fix missing import in check-translations
Sun, 01 Dec 2013 20:54:02 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:54:02 -0600] rev 20163
merge with stable
Sun, 01 Dec 2013 20:51:15 -0600 Added signature for changeset 209e04a06467 stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:51:15 -0600] rev 20162
Added signature for changeset 209e04a06467
Sun, 01 Dec 2013 20:51:12 -0600 Added tag 2.8.1 for changeset 209e04a06467 stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:51:12 -0600] rev 20161
Added tag 2.8.1 for changeset 209e04a06467
Sun, 01 Dec 2013 20:47:09 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:47:09 -0600] rev 20160
merge with stable
Sun, 01 Dec 2013 20:46:36 -0600 parsers: backout version mismatch detection from 21dafd8546d1
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:46:36 -0600] rev 20159
parsers: backout version mismatch detection from 21dafd8546d1 This introduced mandatory recompilations and breaks pure mode in tests
Sun, 01 Dec 2013 20:39:11 -0600 tests: fix Mac doctest escape code garbage for check-translations stable 2.8.1
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:39:11 -0600] rev 20158
tests: fix Mac doctest escape code garbage for check-translations
Sun, 01 Dec 2013 18:26:42 -0200 i18n-pt_BR: synchronized with 734ff413eb7e stable
Wagner Bruna <wbruna@yahoo.com> [Sun, 01 Dec 2013 18:26:42 -0200] rev 20157
i18n-pt_BR: synchronized with 734ff413eb7e
Sun, 01 Dec 2013 14:10:53 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 14:10:53 -0600] rev 20156
merge with stable
Fri, 29 Nov 2013 12:36:28 -0800 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com> [Fri, 29 Nov 2013 12:36:28 -0800] rev 20155
parsers: fail fast if Python has wrong minor version (issue4110) This change causes an informative ImportError to be raised when importing the extension module parsers if the minor version of the currently-running Python interpreter doesn't match that of the Python that was used when compiling the extension module. Here is an example of what the new error looks like: Traceback (most recent call last): File "test.py", line 1, in <module> import mercurial.parsers ImportError: Python minor version mismatch: The Mercurial extension modules were compiled with Python 2.7.6, but Mercurial is currently using Python with sys.hexversion=33883888: Python 2.5.6 (r256:88840, Nov 18 2012, 05:37:10) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] at: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/ Python.app/Contents/MacOS/Python The reason for raising an error in this scenario is that Python's C API is known not to be compatible from minor version to minor version, even if sys.api_version is the same. See for example this Python bug report about incompatibilities between 2.5 and 2.6+: http://bugs.python.org/issue8118 These incompatibilities can cause Mercurial to break in mysterious, unforeseen ways. For example, when Mercurial compiled with Python 2.7 was run with 2.5, the following crash occurred when running "hg status": http://bz.selenic.com/show_bug.cgi?id=4110 After this crash was fixed, running with Python 2.5 no longer crashes, but the following puzzling behavior still occurs: $ hg status ... File ".../mercurial/changelog.py", line 123, in __init__ revlog.revlog.__init__(self, opener, "00changelog.i") File ".../mercurial/revlog.py", line 251, in __init__ d = self._io.parseindex(i, self._inline) File ".../mercurial/revlog.py", line 158, in parseindex index, cache = parsers.parse_index2(data, inline) TypeError: data is not a string which can be reproduced more simply with: import mercurial.parsers as parsers parsers.parse_index2("", True) Both the crash and the TypeError occurred because the Python C API's PyString_Check returns the wrong value when the C header files from Python 2.7 are run with Python 2.5. This is an example of an incompatibility of the sort mentioned in the Python bug report above. Failing fast with an informative error message will result in a better user experience in cases like the above. The information in the ImportError will also simplify troubleshooting for those on Mercurial mailing lists, the bug tracker, etc. This patch only adds the version check to parsers.c, which is sufficient to affect command-line commands like "hg status" and "hg summary". An idea for a future improvement is to move the version-checking C code to a more central location, and have it run when importing all Mercurial extension modules and not just parsers.c.
Sun, 01 Dec 2013 13:53:24 -0600 hgk: fix tag list parser (issue4101) stable
Andrew Shadura <andrew@shadura.me> [Sun, 01 Dec 2013 13:53:24 -0600] rev 20154
hgk: fix tag list parser (issue4101) As tags may have embedded spaces, and "hg tags" command doesn't escape them, the output of the command doesn't make a well-formed list, so we can't just iterate over it. Instead, apply a simple regexp to transform it to a list which we actually use. Line boundary matching should be enabled.
Sun, 01 Dec 2013 13:45:00 -0600 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 13:45:00 -0600] rev 20153
merge with i18n
Wed, 27 Nov 2013 22:47:32 +0900 i18n: add the tool to check Mercurial specific translation problems in *.po stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Nov 2013 22:47:32 +0900] rev 20152
i18n: add the tool to check Mercurial specific translation problems in *.po Existing tool like "msgfmt --check" can check typical translation problems (missing "%s" in msgstr, for example), but can't check Mercurial specific ones. For example, "msgfmt --check" can't check whether the translated string given to "ui.promptchoice()" is correct or not, even though problems like below cause run-time error or unexpected behavior: - less or more choices than msgid, - choices without '&', or - choices with '&' followed by none This patch adds the tool to check Mercurial specific translation problems in *.po files.
Wed, 27 Nov 2013 22:32:01 +0100 help: fix backwards bisect help example stable
Santiago Pay=C3=A0 i Miralta <santiagopim@gmail.com> [Wed, 27 Nov 2013 22:32:01 +0100] rev 20151
help: fix backwards bisect help example
Tue, 26 Nov 2013 16:30:52 -0800 unshelve: add tests for unknown files stable
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 16:30:52 -0800] rev 20150
unshelve: add tests for unknown files Adds a basic test for shelving/unshelving with an unknown file present. Adds a test for unshelving on top of an existing unknown file.
Tue, 26 Nov 2013 16:23:05 -0800 unshelve: don't commit unknown files during unshelve (issue4113) stable
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 16:23:05 -0800] rev 20149
unshelve: don't commit unknown files during unshelve (issue4113) Previously, unshelve would temporarily commit unknown files (via addremove) in an attempt to allow unshelving into unknown files. This produced unexpected results, like the file time stamp changing and a .i file being created. This change makes it no longer use addremove. It ignores unknown files completely. If an unshelve would overwrite an unknown file, the unknown file is moved to *.orig The shelve continue/abort format is changed, but it just removes stuff from the end of the file, so it can still read the old format.
Tue, 26 Nov 2013 15:38:33 +0100 largefiles: don't crash on 'local renamed directory' actions stable
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Nov 2013 15:38:33 +0100] rev 20148
largefiles: don't crash on 'local renamed directory' actions a12798938721 introduced splitstandin on all action filenames. It would however crash on 'd' actions where the filename is None. Fix that and add test coverage for that case.
Fri, 22 Nov 2013 19:13:07 +0100 glossary: don't mention obsolete graphlog extension stable
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:13:07 +0100] rev 20147
glossary: don't mention obsolete graphlog extension
Fri, 22 Nov 2013 19:12:44 +0100 bisect: don't mention obsolete graphlog extension in help stable
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:12:44 +0100] rev 20146
bisect: don't mention obsolete graphlog extension in help
Fri, 22 Nov 2013 19:12:18 +0100 contrib: don't mention obsolete graphlog extension in mercurial.ini stable
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:12:18 +0100] rev 20145
contrib: don't mention obsolete graphlog extension in mercurial.ini
Fri, 22 Nov 2013 19:11:48 +0100 contrib: stop mentioning obsolete graphlog extension in sample.hgrc stable
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:11:48 +0100] rev 20144
contrib: stop mentioning obsolete graphlog extension in sample.hgrc
Fri, 22 Nov 2013 17:14:44 +0100 contrib: promote strip extension over MQ in sample.hgrc stable
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 17:14:44 +0100] rev 20143
contrib: promote strip extension over MQ in sample.hgrc
Fri, 22 Nov 2013 17:12:43 +0100 help: use progress instead of mq as in 'hg help config' example stable
Matt Mackall <mpm@selenic.com> [Fri, 22 Nov 2013 17:12:43 +0100] rev 20142
help: use progress instead of mq as in 'hg help config' example
Sat, 30 Nov 2013 21:50:40 -0200 i18n-pt_BR: fix wording in tag command help text stable
Wagner Bruna <wbruna@yahoo.com> [Sat, 30 Nov 2013 21:50:40 -0200] rev 20141
i18n-pt_BR: fix wording in tag command help text
Thu, 28 Nov 2013 20:10:47 +0900 i18n-ja: synchronized with 5246fd4781d8 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 28 Nov 2013 20:10:47 +0900] rev 20140
i18n-ja: synchronized with 5246fd4781d8
Tue, 26 Nov 2013 11:00:49 -0200 i18n-pt_BR: synchronized with 224e96078708 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 26 Nov 2013 11:00:49 -0200] rev 20139
i18n-pt_BR: synchronized with 224e96078708
Wed, 27 Nov 2013 16:43:02 -0500 test-import-git.t: work around check-code hating on ^ and $( in tests
Augie Fackler <raf@durin42.com> [Wed, 27 Nov 2013 16:43:02 -0500] rev 20138
test-import-git.t: work around check-code hating on ^ and $( in tests
Wed, 27 Nov 2013 18:39:00 +0100 patch: add support for git delta hunks
Nicolas Vigier <boklm@mars-attacks.org> [Wed, 27 Nov 2013 18:39:00 +0100] rev 20137
patch: add support for git delta hunks When creating patches modifying binary files using "git format-patch", git creates 'literal' and 'delta' hunks. Mercurial currently supports 'literal' hunks only, which makes it impossible to import patches with 'delta' hunks. This changeset adds support for 'delta' hunks. It is a reimplementation of patch-delta.c from git : http://git.kernel.org/cgit/git/git.git/tree/patch-delta.c
Mon, 25 Nov 2013 12:12:42 -0500 pathcomplete: remove ambiguous entries for sole completion on a directory
Sean Farley <sean.michael.farley@gmail.com> [Mon, 25 Nov 2013 12:12:42 -0500] rev 20136
pathcomplete: remove ambiguous entries for sole completion on a directory Previously, directories were added with the trailing slash and, if there was only one completion, then another ambiguous entry was created using '.', as follows: $ hg rm mer<TAB> mercurial/./ mercurial// This was added in fa6d5c62f3bd (though, some logic existed before that) to work around bash completion adding a space after the sole entry because we treated directories and files the same. We no longer do that now so we remove this unneeded code. Tests have been updated to match this new behavior.
Tue, 26 Nov 2013 14:33:18 -0600 bash_completion: add global support for -b|--branch
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:33:18 -0600] rev 20135
bash_completion: add global support for -b|--branch Previously, only -r|--rev was parsed globally which meant 'hg push -b <tab>' would try to complete a path instead of a branch.
Tue, 26 Nov 2013 14:31:40 -0600 bash_completion: add global support for -B|--bookmark
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:31:40 -0600] rev 20134
bash_completion: add global support for -B|--bookmark Previously, only -r|--rev was parsed globally which meant 'hg push -B <tab>' would try to complete a path instead of a bookmark.
Tue, 26 Nov 2013 14:04:12 -0600 bash_completion: change --rev if-else block into a case
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:04:12 -0600] rev 20133
bash_completion: change --rev if-else block into a case Again, this doesn't change behavior but does make it easy to add cases in the next patch.
Tue, 26 Nov 2013 13:55:33 -0600 bash_completion: simplify if-else logic
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 13:55:33 -0600] rev 20132
bash_completion: simplify if-else logic There is no change in functionality here but this makes refactoring this later easier.
Mon, 25 Nov 2013 11:38:14 -0500 bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com> [Mon, 25 Nov 2013 11:38:14 -0500] rev 20131
bash_completion: add _hg_branches for list of branches
Tue, 26 Nov 2013 14:38:14 -0600 bash_completion: add -B|--bookmark support for strip
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:38:14 -0600] rev 20130
bash_completion: add -B|--bookmark support for strip
Fri, 22 Nov 2013 14:58:41 -0500 bash_completion: add completion for deleting a shelve
Sean Farley <sean.michael.farley@gmail.com> [Fri, 22 Nov 2013 14:58:41 -0500] rev 20129
bash_completion: add completion for deleting a shelve
Thu, 21 Nov 2013 15:14:52 -0500 bash_completion: use correct command for listing shelves
Sean Farley <sean.michael.farley@gmail.com> [Thu, 21 Nov 2013 15:14:52 -0500] rev 20128
bash_completion: use correct command for listing shelves Previously, _hg_shelves used the unshelve command to list current shelves. This is actually the wrong command. The correct usage is 'hg shelve -l' so we use that instead.
Wed, 20 Nov 2013 19:13:24 -0500 bash_completion: remove restriction on bookmark completion
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 19:13:24 -0500] rev 20127
bash_completion: remove restriction on bookmark completion Previously, we only completed a bookmark when deleting or renaming a bookmark. Since we can now move a bookmark forward, we drop this restriction.
Wed, 20 Nov 2013 14:45:18 -0500 bash_completion: fix issue with subdirectories not being completed
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 14:45:18 -0500] rev 20126
bash_completion: fix issue with subdirectories not being completed Previously, if there was a directory between the file and first-level directory (e.g. 'bar' in foo/bar/file), then bash_completion would only list 'foo/file' instead of 'foo/bar/file'. This behavior was introduced in 80f3ae36f908 to fix spaces in file names. In this patch, we keep that behavior while also fixing subdirectory completion by reverting 80f3ae36f908 and instead add backslashes to whitespace manually. This approach means adding the completion option 'nospace' since we do this manually now.
Wed, 20 Nov 2013 13:19:55 -0500 bash_completion: determine root executable in case of alias
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 13:19:55 -0500] rev 20125
bash_completion: determine root executable in case of alias This solves an issue for users that have "alias hg='hg --some_opts'" where they would see wrong entries in the completion output (such as color codes).
Wed, 20 Nov 2013 15:16:54 -0500 bash_completion: expand aliased commands
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 15:16:54 -0500] rev 20124
bash_completion: expand aliased commands
Tue, 19 Nov 2013 11:45:30 -0500 bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com> [Tue, 19 Nov 2013 11:45:30 -0500] rev 20123
bash_completion: untabify
Mon, 25 Nov 2013 12:20:39 -0500 dispatch: turn off custom debugger for HGPLAIN mode
Sean Farley <sean.michael.farley@gmail.com> [Mon, 25 Nov 2013 12:20:39 -0500] rev 20122
dispatch: turn off custom debugger for HGPLAIN mode Some debuggers, such as ipdb, load escape codes and color codes even when later turned off. This will affect scripts that do simple parsing and can't handle escape codes. Therefore, we only load a custom debugger if ui.plain() is false.
Sun, 17 Nov 2013 12:18:26 +0100 Makefile: temporary copy of hg.pot is hg.pot.tmp instead of hg.pot~
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 12:18:26 +0100] rev 20121
Makefile: temporary copy of hg.pot is hg.pot.tmp instead of hg.pot~ The file ending of temporary files for generating XX.po has been changed to .tmp (from ~). Use the same ending when generating hg.pot.
Sun, 17 Nov 2013 12:17:55 +0100 Makefile: fix po file updating by using same file name everywhere
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 12:17:55 +0100] rev 20120
Makefile: fix po file updating by using same file name everywhere The update is done on a temporary file since ce5d711475a3. The name of this file was first XX.po~ and has been changed to XX.po.tmp in all except of one place. Do this now.
Sun, 24 Nov 2013 17:29:10 -0600 mq: prefer a loop to a double-for list comprehension
Kevin Bullock <kbullock@ringworld.org> [Sun, 24 Nov 2013 17:29:10 -0600] rev 20119
mq: prefer a loop to a double-for list comprehension The [x for y in l for x in y] syntax is nigh-incomprehensible, and this is a particularly easy case to expand into a loop since there's no 'if' condition in the list comprehension.
Sat, 23 Nov 2013 18:34:32 +0100 graphlog: mark as deprecated
Martin Geisler <martin@geisler.net> [Sat, 23 Nov 2013 18:34:32 +0100] rev 20118
graphlog: mark as deprecated
Fri, 22 Nov 2013 19:14:17 +0100 tests: don't load unnecessary graphlog extension
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:14:17 +0100] rev 20117
tests: don't load unnecessary graphlog extension Since graphlog is in core, we can use 'hg log -G' instead.
Fri, 22 Nov 2013 19:13:26 +0100 hg: remove outdated comment
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:13:26 +0100] rev 20116
hg: remove outdated comment The graphlog functionality has been in core since Mercurial 2.3.
Fri, 22 Nov 2013 17:10:08 +0100 tests: use strip extension instead of mq where it makes sense
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 17:10:08 +0100] rev 20115
tests: use strip extension instead of mq where it makes sense When a test only uses 'hg strip', it no longer needs to load MQ.
Sat, 23 Nov 2013 01:06:20 +0100 tests: fix `hghave root` on windows
Simon Heimberg <simohe@besonet.ch> [Sat, 23 Nov 2013 01:06:20 +0100] rev 20114
tests: fix `hghave root` on windows This lets tests\test-hghave.t pass on windows where geteuid does not exist.
Wed, 20 Nov 2013 12:55:08 +0000 keyword: wlock while setting branch in kwdemo
Christian Ebert <blacktrash@gmx.net> [Wed, 20 Nov 2013 12:55:08 +0000] rev 20113
keyword: wlock while setting branch in kwdemo
Sun, 17 Nov 2013 15:43:46 +0100 tests: add missing glob
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 15:43:46 +0100] rev 20112
tests: add missing glob
Tue, 26 Nov 2013 21:55:21 -0800 Merge
Bryan O'Sullivan <bryano@fb.com> [Tue, 26 Nov 2013 21:55:21 -0800] rev 20111
Merge
Tue, 19 Nov 2013 23:49:11 +0530 mercurial/parsers.c: fix compiler warning
Abhay Kadam <abhaykadam88@gmail.com> [Tue, 19 Nov 2013 23:49:11 +0530] rev 20110
mercurial/parsers.c: fix compiler warning When try to compile on x64 OS X, I get this warning: mercurial/parsers.c:931:27: warning: implicit conversion loses integer precision : 'long' to 'int' [-Wshorten-64-to-32] ? 4 : self->raw_length / 2; The patch verifies if value of self->raw_length falls bellow INT_MAX; if not, it raises the ValueError exception. If value of self->raw_length is greater than 4, it's casted to int type, to eliminate the warning.
Tue, 26 Nov 2013 16:14:22 -0800 parse_index2: fix crash on bad argument type (issue4110) stable
Chris Jerdonek <chris.jerdonek@gmail.com> [Tue, 26 Nov 2013 16:14:22 -0800] rev 20109
parse_index2: fix crash on bad argument type (issue4110) Passing a non-string to parsers.parse_index2() causes Mercurial to crash instead of raising a TypeError (found on Mac OS X 10.8.5, Python 2.7.6): import mercurial.parsers as parsers parsers.parse_index2(0, 0) Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 parsers.so 0x000000010e071c59 _index_clearcaches + 73 (parsers.c:644) 1 parsers.so 0x000000010e06f2d5 index_dealloc + 21 (parsers.c:1767) 2 parsers.so 0x000000010e074e3b parse_index2 + 347 (parsers.c:1891) 3 org.python.python 0x000000010dda8b17 PyEval_EvalFrameEx + 9911 This happens because when arguments of the wrong type are passed to parsers.parse_index2(), indexType's initialization function index_init() in parsers.c leaves the indexObject instance in a state that indexType's destructor function index_dealloc() cannot handle. This patch moves enough of the indexObject initialization code inside index_init() from after the argument validation code to before it. This way, when bad arguments are passed to index_init(), the destructor doesn't crash and the existing code to raise a TypeError works. This patch also adds a test to check that a TypeError is raised.
Mon, 25 Nov 2013 16:15:44 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 16:15:44 -0600] rev 20108
merge with stable
Wed, 06 Nov 2013 19:01:14 -0600 bookmarks: consider successor changesets when moving bookmark (issue4015) stable
Sean Farley <sean.michael.farley@gmail.com> [Wed, 06 Nov 2013 19:01:14 -0600] rev 20107
bookmarks: consider successor changesets when moving bookmark (issue4015) Previously, this required -f because we didn't consider obsolete changesets (and their children ... or successors of those children, etc.). We now use obsolete.foreground to calculate acceptable changesets when advancing the bookmark. Test coverage has been added.
Wed, 20 Nov 2013 22:03:15 +0100 util: url keeps backslash in paths stable
Simon Heimberg <simohe@besonet.ch> [Wed, 20 Nov 2013 22:03:15 +0100] rev 20106
util: url keeps backslash in paths Backslashes (\) in paths were encoded to %C5 when converting from url to string. This does not look nice for windows paths. And it introduces many problems when running tests on windows.
Sat, 16 Nov 2013 19:55:38 -0500 tests: deal with new gits sending status messages to stderr stable
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 19:55:38 -0500] rev 20105
tests: deal with new gits sending status messages to stderr git-1.8.4.2 will send messages like Cloning into 'X'... done. to stderr. Mute stderr.
Mon, 25 Nov 2013 13:50:36 -0600 subrepo: sanitize non-hg subrepos stable
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 13:50:36 -0600] rev 20104
subrepo: sanitize non-hg subrepos
Mon, 25 Nov 2013 13:46:46 -0600 shelve: fix bad argument interaction with largefiles (issue4111) stable
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 13:46:46 -0600] rev 20103
shelve: fix bad argument interaction with largefiles (issue4111)
Mon, 18 Nov 2013 09:09:05 -0800 strip.stripcmd: remove redundant wlock acquire/release
Siddharth Agarwal <sid0@fb.com> [Mon, 18 Nov 2013 09:09:05 -0800] rev 20102
strip.stripcmd: remove redundant wlock acquire/release Now that we acquire and release a wlock in the outer scope, this is redundant.
Mon, 25 Nov 2013 12:18:29 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 12:18:29 -0600] rev 20101
merge with stable
Fri, 15 Nov 2013 18:41:40 -0800 bookmarks: make setcurrent with None an error
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:41:40 -0800] rev 20100
bookmarks: make setcurrent with None an error
Fri, 15 Nov 2013 18:31:02 -0800 strip: use bookmarks.unsetcurrent instead of setcurrent with None
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:31:02 -0800] rev 20099
strip: use bookmarks.unsetcurrent instead of setcurrent with None
Fri, 15 Nov 2013 18:28:57 -0800 bmstore.write: use unsetcurrent instead of setcurrent with None
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:28:57 -0800] rev 20098
bmstore.write: use unsetcurrent instead of setcurrent with None
Fri, 15 Nov 2013 18:06:01 -0800 commands.bookmark: use unsetcurrent instead of setcurrent with None
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:06:01 -0800] rev 20097
commands.bookmark: use unsetcurrent instead of setcurrent with None There are currently two different ways we can have no active bookmark: .hg/bookmarks.current being missing and it being an empty file. This patch and upcoming ones make an empty file the only way to represent no active bookmarks. This is the right choice because it matches the state that a new repository without bookmarks will be in.
Mon, 18 Nov 2013 08:57:19 -0800 strip: hold wlock for entire duration stable
Siddharth Agarwal <sid0@fb.com> [Mon, 18 Nov 2013 08:57:19 -0800] rev 20096
strip: hold wlock for entire duration Previously, we'd acquire and release the wlock several times. This meant that other hg processes could come in and change state. Instead of that, retain the wlock for the entire duration of the strip.
Fri, 22 Nov 2013 17:26:58 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 22 Nov 2013 17:26:58 -0600] rev 20095
merge with stable
Sun, 10 Nov 2013 18:51:21 +0100 bisect: report "both good and bad" as such, not as "not directly related" stable
Mads Kiilerich <madski@unity3d.com> [Sun, 10 Nov 2013 18:51:21 +0100] rev 20094
bisect: report "both good and bad" as such, not as "not directly related"
Fri, 08 Nov 2013 11:49:13 +0100 phase: better error message when --force is needed stable
Martin Geisler <martin@geisler.net> [Fri, 08 Nov 2013 11:49:13 +0100] rev 20093
phase: better error message when --force is needed When trying to turn a draft changeset into a secret changeset, I was told: % hg phase -s . cannot move 1 changesets to a more permissive phase, use --force no phases changed That message struck me as being backwards -- the secret phase feels less permissive to me since it restricts the changesets from being pushed. We don't use the word "permissive" elsewhere, 'hg help phase' talks about "lower phases" and "higher phases". I therefore reformulated the error message to be cannot move 1 changesets to a higher phase, use --force That is not perfect either, but more in line with the help text. An alternative could be cannot move phase backwards for 1 changesets, use --force which fits better with the help text for --force.
Fri, 08 Nov 2013 09:48:01 +0100 hgweb: ignore non numeric "revcount" parameter values (issue4091) stable
Isaac Jurado <diptongo@gmail.com> [Fri, 08 Nov 2013 09:48:01 +0100] rev 20092
hgweb: ignore non numeric "revcount" parameter values (issue4091)
Tue, 12 Nov 2013 16:23:52 +0900 lock: take both vfs and lock file path relative to vfs to access via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20091
lock: take both vfs and lock file path relative to vfs to access via vfs This patch makes "lock.lock.__init__()" take both vfs and lock file path relative to vfs, instead of absolute path to lock file. This allows lock file to be accessed via vfs.
Tue, 12 Nov 2013 16:23:52 +0900 vfs: add "makelock()" and "readlock()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20090
vfs: add "makelock()" and "readlock()"
Tue, 12 Nov 2013 16:23:52 +0900 hg: rewrite "copystore()" with vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20089
hg: rewrite "copystore()" with vfs This patch rewrites "copystore()" with vfs, because succeeding patch requires "lock.lock()" invocation with vfs. This patch uses 'dstbase + "/lock"' instead of "join()" with both elements even on Windows environment but it should be reasonable, because target files given from "store.copyfiles()" already uses "/" as path separator. "util.copyfiles()" between two vfs-s may have to be rewritten in the future.
Tue, 12 Nov 2013 16:23:52 +0900 localrepo: import "lock" module as "lockmod" for readability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20088
localrepo: import "lock" module as "lockmod" for readability Before this patch, "localrepo.py" has many methods defining local variable "lock", even though it imports "lock" module as "lock". This ambiguity decreases readability.
(0) -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 +30000 tip