Thu, 23 Feb 2012 00:07:54 +0900 context: use 'changectx.dirs()' in 'walk()' for directory patterns stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Feb 2012 00:07:54 +0900] rev 16145
context: use 'changectx.dirs()' in 'walk()' for directory patterns this patch uses 'changectx.dirs()' instead of nested loop, to examine whether specified pattern is related to the context as a directory or not.
Thu, 23 Feb 2012 00:07:54 +0900 localrepository: use 'changectx.dirs()' in 'status()' for directory patterns stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Feb 2012 00:07:54 +0900] rev 16144
localrepository: use 'changectx.dirs()' in 'status()' for directory patterns when pattern which does not match against any files in working context is specified, current implementation of 'localrepository.status()' decides whether warning message about it should be shown or not by 'f not in context' this works correctly for 'file pattern', but not for 'directory pattern', because 'f not in context' always returns True for directories, even if they are related to the context. this patch uses 'changectx.dirs()' to examine whether specified pattern is related to the context as a directory or not.
Thu, 23 Feb 2012 00:07:54 +0900 context: add 'dirs()' to changectx/workingctx for directory patterns stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Feb 2012 00:07:54 +0900] rev 16143
context: add 'dirs()' to changectx/workingctx for directory patterns this patch adds 'dirs()' to changectx/workingctx, which returns map of all directories deduced from manifest, to examine whether specified pattern is related to the context as directory or not quickly. 'workingctx.dirs()' uses 'dirstate.dirs()' rather than building another copy of it.
Wed, 22 Feb 2012 15:22:12 -0600 status: fix format field thinko
Matt Mackall <mpm@selenic.com> [Wed, 22 Feb 2012 15:22:12 -0600] rev 16142
status: fix format field thinko
Mon, 20 Feb 2012 17:59:48 +0100 largefiles: don't break filesets stable
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Mon, 20 Feb 2012 17:59:48 +0100] rev 16141
largefiles: don't break filesets
Sat, 18 Feb 2012 14:27:57 +0100 help: sort hgrc related "Sections" chapters alphabetically
Michal Sznajder <michalsznajder@gmail.com> [Sat, 18 Feb 2012 14:27:57 +0100] rev 16140
help: sort hgrc related "Sections" chapters alphabetically
Sat, 18 Feb 2012 12:30:24 +0100 doc: minor fixes to [graph] section documentation
Patrick Mezard <patrick@mezard.eu> [Sat, 18 Feb 2012 12:30:24 +0100] rev 16139
doc: minor fixes to [graph] section documentation
Sun, 22 Jan 2012 19:35:26 +0700 hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu> [Sun, 22 Jan 2012 19:35:26 +0700] rev 16138
hgweb: refactor graph customization javascript - Avoid flipping lineWidth state around the edge() call, pass it to the function instead. - Pass the line width and color appended to the other parameters instead of in a dictionary. The javascript code is simpler, no need to check for all containers existence, and the JSON output is smaller. - Reindent setColor() comments and fix code spacing.
Fri, 17 Feb 2012 16:49:43 +0100 templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu> [Fri, 17 Feb 2012 16:49:43 +0100] rev 16137
templates: move Graph.edge() implementation in mercurial.js All implementation in graph.tmpl are the same. It can still be overriden if necessary. There is no clear reason to keep it separated from mercurial.js.
Mon, 20 Feb 2012 16:42:51 -0600 formatter: convert status command
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:51 -0600] rev 16136
formatter: convert status command
Mon, 20 Feb 2012 16:42:48 -0600 ui: add formatter method
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:48 -0600] rev 16135
ui: add formatter method
Mon, 20 Feb 2012 16:42:47 -0600 formatter: add basic formatters
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:47 -0600] rev 16134
formatter: add basic formatters
Mon, 20 Feb 2012 16:42:45 -0600 encoding: introduce utf8-b helpers
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:45 -0600] rev 16133
encoding: introduce utf8-b helpers
Fri, 17 Feb 2012 13:53:41 -0600 graphmod: add config cache
Matt Mackall <mpm@selenic.com> [Fri, 17 Feb 2012 13:53:41 -0600] rev 16132
graphmod: add config cache Before, we'd lookup the branch for every edge segment in the entire graph: extremely expensive. This happened even when no per-branch settings existed. Now we define a revision -> config cache function that's LRU-cached and is a no-op when no configuration exists. Still not terribly fast, but hopefully only one real branch lookup per revision. This might degenerate for wide graphs as the LRU is hard-coded to 20 elements.
Fri, 17 Feb 2012 13:53:19 -0600 graphmod: rewrite graph config validation
Matt Mackall <mpm@selenic.com> [Fri, 17 Feb 2012 13:53:19 -0600] rev 16131
graphmod: rewrite graph config validation Our goal is not to strictly disallow _invalid_ input, simply disallow _hostile_ input. Avoid using re Avoid creating empty dicts when no branch parameters are recognized
Sun, 22 Jan 2012 19:47:03 +0700 graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com> [Sun, 22 Jan 2012 19:47:03 +0700] rev 16130
graph: in hgrc specify line color for main branch You can specify color to visually distinguish main branch (trunk) on hgweb's graph page. If color specified, all branch heads will share same color. Settings format is branch_name.color = value, where color is six hexadecimal digits e.g.: [graph] default.color = FF0000
Sun, 22 Jan 2012 19:35:26 +0700 graph: in hgrc specify line width for main branch
Constantine Linnick <theaspect@gmail.com> [Sun, 22 Jan 2012 19:35:26 +0700] rev 16129
graph: in hgrc specify line width for main branch You can specify width to visually distinguish main branch (trunk) on hgweb's graph page. Settings format is branch_name.width = value, where width in px e.g.: [graph] default.width = 3
Thu, 16 Feb 2012 16:40:29 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 16 Feb 2012 16:40:29 -0600] rev 16128
merge with stable
Thu, 16 Feb 2012 15:58:51 -0600 filemerge: remove some redundancy in decorators/docstrings
Matt Mackall <mpm@selenic.com> [Thu, 16 Feb 2012 15:58:51 -0600] rev 16127
filemerge: remove some redundancy in decorators/docstrings
Sun, 12 Feb 2012 21:38:12 +0900 filemerge: create detail of internal merge tools from documentation string
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 12 Feb 2012 21:38:12 +0900] rev 16126
filemerge: create detail of internal merge tools from documentation string this patch introduces 'internaltoolsmarker' which creates detail of each internal merge tools from documentation string for 'hg help merge-tools'.
Sun, 12 Feb 2012 21:38:12 +0900 filemerge: refactoring of 'filemerge()'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 12 Feb 2012 21:38:12 +0900] rev 16125
filemerge: refactoring of 'filemerge()' current 'filemerge.filemerge()' implementation is verfy complicated. - it is not easy to add new internal merge tools (only by patching on 'filemerge()', or replacing it completely) - cleanup of temporary files is unsatisfactory ('internal:dump' does not, in fact) this is patch for refactoring of 'filemerge()' to isolate each internal merge tool implementations from 'filemerge()', and clean up common part in it.
Mon, 13 Feb 2012 17:22:35 +0100 patch: fuzz more aggressively to match patch(1) behaviour stable
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 17:22:35 +0100] rev 16124
patch: fuzz more aggressively to match patch(1) behaviour The previous code was assuming a default context of 3 lines. When fuzzing, it would take this value in account to reduce the amount of removed line from hunks top or bottom. For instance, if a hunk has only 2 lines of bottom context, fuzzing with fuzz=1 would do nothing and with fuzz=2 it would remove one of those lines. A hunk with one line of bottom context could not be fuzzed at all. patch(1) has apparently no such restrictions and takes the fuzz level at face value. - test-import.t: fuzz/offset changes at the beginning of file are explained by the new fuzzing behaviour and match patch(1) ones. Patching locations are different but those of my patch(1) do not make a lot of sense right now (patched output are the same) - test-import-bypass.t: more agressive fuzzing makes a patching supposed to fail because of context, succeed. Change the diff to avoid this. - test-mq-merge.t: more agressive fuzzing would allow the merged patch to apply with fuzz, but fortunately we disallow this behaviour. The new output is kept. I have not enough experience with patch(1) fuzzing to know whether aligning our implementation on it is a good or bad idea. Until now, it has been the implementation reference. For instance, "qpush" tolerates fuzz (test-mq-merge.t runs the special case of pushing merge revisions where fuzzing is forbidden).
Mon, 13 Feb 2012 16:47:31 +0100 patch: fix fuzzing of hunks without previous lines (issue3264) stable
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 16:47:31 +0100] rev 16123
patch: fix fuzzing of hunks without previous lines (issue3264) When applying hunks such as: @@ -2,1 +2,2 @@ context +change fuzzing would empty the "old" block and make patchfile.apply() traceback. Instead, we apply the new block at specified location without testing. The "bottom hunk" test was removed as patch(1) has no problem applying hunk with no context in the middle of a file.
Mon, 13 Feb 2012 13:51:38 +0100 patch: make hunk.fuzzit() compute the fuzzed start locations stable
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 13:51:38 +0100] rev 16122
patch: make hunk.fuzzit() compute the fuzzed start locations - It moves hunks processing weirdness where it belongs - It helps reusing said weirdness whenever fuzzit() is called, like during the actual hunk fuzzing.
Mon, 13 Feb 2012 13:21:00 +0100 patch: fuzz old and new lines at the same time stable
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 13:21:00 +0100] rev 16121
patch: fuzz old and new lines at the same time In theory, the fuzzed offsets for old and new lines should be exactly the same as they are based on hunk parsing. Make it true in practice.
Mon, 13 Feb 2012 18:37:07 +0100 largefiles: optimize update speed by only updating changed largefiles
Na'Tosha Bard <natosha@unity3d.com> [Mon, 13 Feb 2012 18:37:07 +0100] rev 16120
largefiles: optimize update speed by only updating changed largefiles Historically, during 'hg update', every largefile in the working copy was hashed (which is a very expensive operation on big files) and any largefiles that did not have a hash that matched their standin were updated. This patch optimizes 'hg update' by keeping track of what standins have changed between the old and new revisions, and only updating the largefiles that have changed. This saves a lot of time by avoiding the unecessary calculation of a list of sha1 hashes for big files. With this patch, the time 'hg update' takes to complete is a function of how many largefiles need to be updated and what their size is. Performance tests on a repository with about 80 largefiles ranging from a few MB to about 97 MB are shown below. The tests show how long it takes to run 'hg update' with no changes actually being updated. Mercurial 2.1 release: $ time hg update 0 files updated, 0 files merged, 0 files removed, 0 files unresolved getting changed largefiles 0 largefiles updated, 0 removed real 0m10.045s user 0m9.367s sys 0m0.674s With this patch: $ time hg update 0 files updated, 0 files merged, 0 files removed, 0 files unresolved real 0m0.965s user 0m0.845s sys 0m0.115s The same repsoitory, without the largefiles extension enabled: $ time hg update 0 files updated, 0 files merged, 0 files removed, 0 files unresolved real 0m0.799s user 0m0.684s sys 0m0.111s So before the patch, 'hg update' with no changes was approximately 9.25s slower with largefiles enabled. With this patch, it is approximately 0.165s slower.
Tue, 14 Feb 2012 14:31:40 +0100 mq: make qimport --push push all imported patches (issue3130) stable
Patrick Mezard <patrick@mezard.eu> [Tue, 14 Feb 2012 14:31:40 +0100] rev 16119
mq: make qimport --push push all imported patches (issue3130) Only the first imported one was pushed.
Wed, 15 Feb 2012 11:21:24 +0100 convert: tolerate spaces between splicemap parent ids (issue3203) stable
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Feb 2012 11:21:24 +0100] rev 16118
convert: tolerate spaces between splicemap parent ids (issue3203) Splicemap lines are documented in hg help convert like: key parent1, parent2 but parsed like: key, parents = line.strip().rsplit(' ', 1) parents = parents.replace(',', ' ').split() The rsplit() call was introduced to handle spaces in keys for the generic mapfile format. Spaces can appear in svn identifiers since they contain path components. This logic makes less sense with splicemap since svn identifiers can also appear on the right side, even if it is a bit less likely. Given the parsing is theorically broken, I would rather follow what is documented already and is correct in the main case where all identifiers are hg hashes. Also, using svn identifiers in a splicemap sounds difficult as they are not easily accessible.
(0) -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 +3000 +10000 +30000 tip