Sat, 30 Apr 2011 15:10:58 +0300 graphmod: restore generator nature of dagwalker
Idan Kamara <idankk86@gmail.com> [Sat, 30 Apr 2011 15:10:58 +0300] rev 14087
graphmod: restore generator nature of dagwalker 9966c95b8c4f introduced the ability to walk the DAG given arbitrary revisions, but changed the behaviour of it to return a list of all nodes (and create a changectx for each one) rather than doing it lazily. This has a pretty significant impact on performance for large repositories (tested on CPython repo, with output disabled): $ time hg glog real 0m2.642s user 0m2.560s sys 0m0.080s Before 9966c95b8c4f: $ time hg glog real 0m0.143s user 0m0.112s sys 0m0.032s And after this fix: $ time hg glog real 0m0.213s user 0m0.184s sys 0m0.028s
Sat, 30 Apr 2011 19:42:00 +0200 graphlog: log -G --follow file does not work, forbid it
Patrick Mezard <pmezard@gmail.com> [Sat, 30 Apr 2011 19:42:00 +0200] rev 14086
graphlog: log -G --follow file does not work, forbid it We do not have revsets to follow file history.
Sat, 30 Apr 2011 19:42:00 +0200 graphlog: unify log -G revset translation
Patrick Mezard <pmezard@gmail.com> [Sat, 30 Apr 2011 19:42:00 +0200] rev 14085
graphlog: unify log -G revset translation
Sat, 30 Apr 2011 19:42:00 +0200 graphlog: fix log -G --prune
Patrick Mezard <pmezard@gmail.com> [Sat, 30 Apr 2011 19:42:00 +0200] rev 14084
graphlog: fix log -G --prune follow() revset really means '::.' while we want something based on the passed argument. Also, ancestors() revset does not include the parent revisions.
Sat, 30 Apr 2011 19:42:00 +0200 graphlog: escape log -G single value option arguments
Patrick Mezard <pmezard@gmail.com> [Sat, 30 Apr 2011 19:42:00 +0200] rev 14083
graphlog: escape log -G single value option arguments
Sat, 30 Apr 2011 19:42:00 +0200 graphlog: fix log -G --removed
Patrick Mezard <pmezard@gmail.com> [Sat, 30 Apr 2011 19:42:00 +0200] rev 14082
graphlog: fix log -G --removed Current version was mispelled and processed like a valued argument.
Sat, 30 Apr 2011 19:42:00 +0200 graphlog: fix log -G option types when translating to revset
Patrick Mezard <pmezard@gmail.com> [Sat, 30 Apr 2011 19:42:00 +0200] rev 14081
graphlog: fix log -G option types when translating to revset For instance, --keyword is a multiple value option while it was processed as a single value option.
Sat, 30 Apr 2011 18:53:56 +0200 revset: add tests for multiple and mixed ^ and ~ operators
Kevin Gessner <kevin@kevingessner.com> [Sat, 30 Apr 2011 18:53:56 +0200] rev 14080
revset: add tests for multiple and mixed ^ and ~ operators
Sat, 30 Apr 2011 18:27:39 +0200 extensions: obsolete and remove parentrevspec extension
Kevin Gessner <kevin@kevingessner.com> [Sat, 30 Apr 2011 18:27:39 +0200] rev 14079
extensions: obsolete and remove parentrevspec extension As of 305c97670d7a, revsets implements the ^ and ~ operators that this extension provides, so it's no longer necessary.
Sat, 30 Apr 2011 11:53:57 -0500 wix: a new mercurial.js has replaced graph.js
Steve Borho <steve@borho.org> [Sat, 30 Apr 2011 11:53:57 -0500] rev 14078
wix: a new mercurial.js has replaced graph.js
Sat, 30 Apr 2011 09:43:23 -0700 util.url: copy urllib.unquote() into util to improve startup times
Brodie Rao <brodie@bitheap.org> [Sat, 30 Apr 2011 09:43:23 -0700] rev 14077
util.url: copy urllib.unquote() into util to improve startup times The ui class uses util.hasscheme() in a couple of places, causing hg to import urllib even when it doesn't need to. This copies urllib.unquote() to avoid that import. perfstartup time before the URL refactoring (8796fb6af67e): ! wall 0.050692 comb 0.000000 user 0.000000 sys 0.000000 (best of 100) before this change: ! wall 0.064742 comb 0.000000 user 0.000000 sys 0.000000 (best of 100) after this change: ! wall 0.052126 comb 0.000000 user 0.000000 sys 0.000000 (best of 100
Sat, 30 Apr 2011 09:43:20 -0700 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org> [Sat, 30 Apr 2011 09:43:20 -0700] rev 14076
url: move URL parsing functions into util to improve startup time The introduction of the new URL parsing code has created a startup time regression. This is mainly due to the use of url.hasscheme() in the ui class. It ends up importing many libraries that the url module requires. This fix helps marginally, but if we can get rid of the urllib import in the URL parser all together, startup time will go back to normal. perfstartup time before the URL refactoring (8796fb6af67e): ! wall 0.050692 comb 0.000000 user 0.000000 sys 0.000000 (best of 100) current startup time (139fb11210bb): ! wall 0.070685 comb 0.000000 user 0.000000 sys 0.000000 (best of 100) after this change: ! wall 0.064667 comb 0.000000 user 0.000000 sys 0.000000 (best of 100)
Sat, 30 Apr 2011 16:33:47 +0200 revlog: introduce _chunkbase to allow filelog to override
Sune Foldager <cryo@cyanite.org> [Sat, 30 Apr 2011 16:33:47 +0200] rev 14075
revlog: introduce _chunkbase to allow filelog to override Used by revlog.revision to retrieve the base-chunk in a delta chain.
Sat, 30 Apr 2011 16:32:50 +0200 filelog: extract metadata parsing and packing
Sune Foldager <cryo@cyanite.org> [Sat, 30 Apr 2011 16:32:50 +0200] rev 14074
filelog: extract metadata parsing and packing _parsemeta returns the dictionary and a list of keys in the order they appear in metadata. This can be used to repack the dictionary in the same order. _packmeta creates metadata from a dictionary and an optional key-order list. In _parsemeta, we use slices and re.search indead of str.index so we can accept both buffers and strings.
Sat, 30 Apr 2011 17:21:37 +0200 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Sat, 30 Apr 2011 17:21:37 +0200] rev 14073
discovery: drop findoutgoing and simplify findcommonincoming's api This is a long desired cleanup and paves the way for new discovery. To specify subsets for bundling changes, all code should use the heads of the desired subset ("heads") and the heads of the common subset ("common") to be excluded from the bundled set. These can be used revlog.findmissing instead of revlog.nodesbetween. This fixes an actual bug exposed by the change in test-bundle-r.t where we try to bundle a changeset while specifying that said changeset is to be assumed already present in the target. This used to still bundle the changeset. It no longer does. This is similar to the bugs fixed by the recent switch to heads/common for incoming/pull.
Sat, 30 Apr 2011 18:25:45 +0200 revset: add missing whitespace
Kevin Gessner <kevin@kevingessner.com> [Sat, 30 Apr 2011 18:25:45 +0200] rev 14072
revset: add missing whitespace
Sat, 30 Apr 2011 07:00:13 -0700 url: remove unused/obsolete functions
Brodie Rao <brodie@bitheap.org> [Sat, 30 Apr 2011 07:00:13 -0700] rev 14071
url: remove unused/obsolete functions
Sat, 30 Apr 2011 17:43:04 +0200 revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com> [Sat, 30 Apr 2011 17:43:04 +0200] rev 14070
revset: add ^ and ~ operators from parentrevspec extension ^ (Nth parent) and ~ (Nth first ancestor) are infix operators that match certain ancestors of the set: set^0 the set set^1 (also available as set^) the first parent of every changeset in set set^2 the second parent of every changeset in set set~0 the set set~1 the first ancestor (i.e. the first parent) of every changeset in set set~2 the second ancestor (i.e. first parent of first parent) of every changeset in set set~N the Nth ancestor (following first parents only) of every changeset in set; set~N is equivalent to set^1^1..., with ^1 repeated N times.
Sat, 30 Apr 2011 10:57:13 -0500 encoding: add an encoding-aware lower function
Matt Mackall <mpm@selenic.com> [Sat, 30 Apr 2011 10:57:13 -0500] rev 14069
encoding: add an encoding-aware lower function
Sat, 30 Apr 2011 12:39:46 +0200 add: notify when adding a file that would cause a case-folding collision
Kevin Gessner <kevin@kevingessner.com> [Sat, 30 Apr 2011 12:39:46 +0200] rev 14068
add: notify when adding a file that would cause a case-folding collision On a case-sensitive file system, files can be added with names that differ only in case (a "case collision"). This would cause an error on case-insensitive filesystems. A warning or error is now given for such collisions, depending on the value of ui.portablefilenames ('warn', 'abort', or 'ignore'): $ touch file File $ hg add --config ui.portablefilenames=abort File abort: possible case-folding collision for File $ hg add File warning: possible case-folding collision for File
Sat, 30 Apr 2011 11:08:24 +0200 scmutil: refactor ui.portablefilenames processing
Kevin Gessner <kevin@kevingessner.com> [Sat, 30 Apr 2011 11:08:24 +0200] rev 14067
scmutil: refactor ui.portablefilenames processing The ui.portablefilenames config handling is generally useful for notifying the user of various portability problems.
Sat, 30 Apr 2011 15:05:36 +0200 pure bdiff: don't use a generator
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 30 Apr 2011 15:05:36 +0200] rev 14066
pure bdiff: don't use a generator Generators are slow, and currently defeat the PyPy JIT.
Sat, 30 Apr 2011 15:05:34 +0200 pure mpatch: avoid using list.insert(0, ...)
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 30 Apr 2011 15:05:34 +0200] rev 14065
pure mpatch: avoid using list.insert(0, ...) In Python lists are implemented as arrays with overallocation. As a result, list.insert(0, ...) is O(n), whereas list.append() has an amortised running time of O(1). Reversing the internal representation of the list should cause a slight speedup for pure Python builds.
Sat, 30 Apr 2011 13:59:14 +0200 remove unused imports and variables
Alexander Solovyov <alexander@solovyov.net> [Sat, 30 Apr 2011 13:59:14 +0200] rev 14064
remove unused imports and variables
Sat, 30 Apr 2011 07:30:38 -0500 Zeroconf: catch both ValueError and KeyError in get()
Augie Fackler <durin42@gmail.com> [Sat, 30 Apr 2011 07:30:38 -0500] rev 14063
Zeroconf: catch both ValueError and KeyError in get() This prevents a traceback during discovery of available hosts.
Sat, 30 Apr 2011 15:20:27 +0300 run-tests: print a new line before writing the diff
Idan Kamara <idankk86@gmail.com> [Sat, 30 Apr 2011 15:20:27 +0300] rev 14062
run-tests: print a new line before writing the diff
Sat, 30 Apr 2011 10:56:43 -0500 revsets: add a last function
Matt Mackall <mpm@selenic.com> [Sat, 30 Apr 2011 10:56:43 -0500] rev 14061
revsets: add a last function last(set, n) = reverser(limit(reverse(set), n))
Sat, 30 Apr 2011 14:22:03 +0200 bundle: more comments about the different header types, remove useless if
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sat, 30 Apr 2011 14:22:03 +0200] rev 14060
bundle: more comments about the different header types, remove useless if
Sat, 30 Apr 2011 15:30:51 +0200 merge with mpm
Martin Geisler <mg@lazybytes.net> [Sat, 30 Apr 2011 15:30:51 +0200] rev 14059
merge with mpm
Sat, 30 Apr 2011 13:47:22 +0200 hgweb: initialize permhooks at definition time
Martin Geisler <mg@lazybytes.net> [Sat, 30 Apr 2011 13:47:22 +0200] rev 14058
hgweb: initialize permhooks at definition time This is simpler than creating it empty and then appending the default checkauthz hook 50 lines below.
Sat, 30 Apr 2011 06:58:22 -0700 revset: fix undefined name ParseError
Brodie Rao <brodie@bitheap.org> [Sat, 30 Apr 2011 06:58:22 -0700] rev 14057
revset: fix undefined name ParseError
Sat, 30 Apr 2011 12:56:28 +0200 branchcache: improve speed relative to the amount of heads
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 30 Apr 2011 12:56:28 +0200] rev 14056
branchcache: improve speed relative to the amount of heads Updating the branch cache is quadratic to the amount of heads in the repository. One consequence of this was that cloning a pathological repository with 10,000 heads (and nothing else) took hours of CPU time. This patch makes one of the inner loop much faster, by removing a changectx instantiation, and removes another entirely in cases where there are no candidate branch heads which descend from other branch heads.
Sat, 30 Apr 2011 12:55:07 +0200 drop {short,hex}(ctx.node()) calls in favor of ctx methods
Alexander Solovyov <alexander@solovyov.net> [Sat, 30 Apr 2011 12:55:07 +0200] rev 14055
drop {short,hex}(ctx.node()) calls in favor of ctx methods
Fri, 29 Apr 2011 22:21:13 +0300 mq: be more explicit on invalid patch name message
Idan Kamara <idankk86@gmail.com> [Fri, 29 Apr 2011 22:21:13 +0300] rev 14054
mq: be more explicit on invalid patch name message
Sat, 30 Apr 2011 11:16:52 +0200 fix broken tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sat, 30 Apr 2011 11:16:52 +0200] rev 14053
fix broken tests test-debugcomplete.t broken by 58e58406ed19 test-highlight.t broken by b24e5a708fad
Sat, 30 Apr 2011 03:44:31 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 30 Apr 2011 03:44:31 -0500] rev 14052
merge with stable
Fri, 29 Apr 2011 22:21:13 +0300 mq: add '.' and '..' to list of forbidden patch names stable
Idan Kamara <idankk86@gmail.com> [Fri, 29 Apr 2011 22:21:13 +0300] rev 14051
mq: add '.' and '..' to list of forbidden patch names When an empty string is being passed to normname it would return '.' causing checkfile() to always return that a patch with that name exists.
Fri, 04 Mar 2011 14:00:49 +0100 subrepo: handle svn tracked/unknown directory collisions stable
Patrick Mezard <pmezard@gmail.com> [Fri, 04 Mar 2011 14:00:49 +0100] rev 14050
subrepo: handle svn tracked/unknown directory collisions This happens more often than expected. Say you have an svn subrepository with python code. Python would have generated unknown .pyc files. Now, you rebase this setup on a revision where a directory containing python code does not exist. Subversion is first asked to remove this directory when updating, but will not because it contains untracked items. Then it will have to bring back the directory after the merge but will fail because it now collides with an untracked directory. Using --force is not very elegant and only works with svn >= 1.5 but the only alternative I can think of is to write our own purge command for subversion.
Sat, 30 Apr 2011 03:00:38 -0500 subrepo: backout bcc6ed0f6c3b
Matt Mackall <mpm@selenic.com> [Sat, 30 Apr 2011 03:00:38 -0500] rev 14049
subrepo: backout bcc6ed0f6c3b
Fri, 29 Apr 2011 14:54:01 +0200 wireproto: add test for new optional arg missing on server
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Fri, 29 Apr 2011 14:54:01 +0200] rev 14048
wireproto: add test for new optional arg missing on server New argument is silently ignored by both HTTP and SSH servers. This means we can, for instance, add new flags to getbundle() to request advanced features (like lightweight-copy-aware bundles), and older servers will silently ignore this request and send back a plain bundle.
Sat, 30 Apr 2011 02:42:05 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 30 Apr 2011 02:42:05 -0500] rev 14047
merge with stable
Thu, 28 Apr 2011 17:02:39 +0200 web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl> [Thu, 28 Apr 2011 17:02:39 +0200] rev 14046
web: Made elapsed time calculation dynamic (javascript). This allow safe caching of the pages by the browser and still display the right amount of elapsed time upon page refresh. If javascript is disabled, absolute time is displayed, leaving it readable. All the templates have been updated.
Wed, 27 Apr 2011 21:55:46 -0400 extdiff: add repository root as a variable
Steven Stallion <sstallion@gmail.com> [Wed, 27 Apr 2011 21:55:46 -0400] rev 14045
extdiff: add repository root as a variable Some external diff tools (notably Plan 9 diff(1)) require the absolute path to the file being diffed for proper function. A root variable was added to inform an external tool of the repository root (the tool is invoked with the cwd set to tmproot).
Sun, 17 Apr 2011 23:08:35 +0800 help: move hgignore man page into built-in help (issue2769)
Yun Lee <yun.lee.bj@gmail.com> [Sun, 17 Apr 2011 23:08:35 +0800] rev 14044
help: move hgignore man page into built-in help (issue2769)
Sat, 23 Apr 2011 15:04:15 +0200 graphlog: make use of graphmod's revset support
Alexander Solovyov <alexander@solovyov.net> [Sat, 23 Apr 2011 15:04:15 +0200] rev 14043
graphlog: make use of graphmod's revset support
Sun, 13 Mar 2011 15:53:38 +0100 graphmod: use revsets internally
Alexander Solovyov <alexander@solovyov.net> [Sun, 13 Mar 2011 15:53:38 +0100] rev 14042
graphmod: use revsets internally Thanks for the idea and most of the implementation to Klaus Koch Backs revisions() and filerevs() with DAG walker which can iterate through arbitrary list of revisions instead of strict one by one iteration from start to stop. When a gap occurs in a revisions (i.e. in file log), the next topological parent within the revset is searched and the connection to it is printed in the ascii graph. File graph can draw sometimes more connections than previous version, because graph is produced according to the revset, not according to a file's filelog. In case the graph contains several branches where the left parent is null, the graphs for each are printed sequentially, not in parallel as it was a case earlier (see for example the graph for README in hg-dev).
Fri, 29 Apr 2011 03:34:18 -0500 svn subrepo: attempt work around obstructed checkouts (issue2752)
Augie Fackler <durin42@gmail.com> [Fri, 29 Apr 2011 03:34:18 -0500] rev 14041
svn subrepo: attempt work around obstructed checkouts (issue2752) It should be possible to do better than this with 'svn switch', but the logic required woud be significantly more complex. Until someone needs the performance improvements of using switch, we'll just use the same strategy for everything.
Fri, 29 Apr 2011 16:34:52 +0200 churn: strip key earlier to avoid false negative seach in aliases
Alexander Solovyov <alexander@solovyov.net> [Fri, 29 Apr 2011 16:34:52 +0200] rev 14040
churn: strip key earlier to avoid false negative seach in aliases
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 +30000 tip