Tue, 17 Jul 2012 01:22:31 +0200 repo: move visibleheads and visiblebranchmap logic in discovery
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 17 Jul 2012 01:22:31 +0200] rev 17205
repo: move visibleheads and visiblebranchmap logic in discovery They were previously inside the mercurial.phases module, but obsolete logic will need them to exclude `extinct` changesets from pull and push. The proper and planned way to implement such filtering is still to apply a changelog level filtering. But we are far to late in the cycle to implement and push such a critical piece of code (changelog filtering). With Matt Mackall approval I'm extending this quick and dirty mechanism for obsolete purpose. Changelog level filtering should come during the next release cycle.
Tue, 17 Jul 2012 01:04:45 +0200 localpeer: return only visible heads and branchmap
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 17 Jul 2012 01:04:45 +0200] rev 17204
localpeer: return only visible heads and branchmap Now that we have localpeer, we can apply filtering on heads and branchmap the same way it's done for wireprotocol peer.
Wed, 18 Jul 2012 14:41:58 +0200 util, posix: eliminate encodinglower and encodingupper
Adrian Buehlmann <adrian@cadifra.com> [Wed, 18 Jul 2012 14:41:58 +0200] rev 17203
util, posix: eliminate encodinglower and encodingupper 2ebe3d0ce91d claims this was needed "to avoid cyclic dependency", but there is no cyclic dependency. windows.py already imports encoding, posix.py can import it too, so we can simply use encoding.upper in windows.py and in posix.py. (this is a partial backout of 2ebe3d0ce91d)
Sun, 08 Jul 2012 17:17:02 +0200 hgweb: side-by-side comparison functionality
wujek srujek [Sun, 08 Jul 2012 17:17:02 +0200] rev 17202
hgweb: side-by-side comparison functionality Adds new web command to the core, ``comparison``, which enables colorful side-by-side change display, which for some might be much easier to work with than the standard line diff output. The idea how to implement comes from the SonicHq extension. The web interface gets a new link to call the comparison functionality. It lets users configure the amount of context lines around change blocks, or to show full files - check help (also in this changeset) for details and defaults. The setting in hgrc can be overridden by adding ``context=<value>`` to the request query string. The comparison creates addressable lines, so as to enable sharing links to specific lines, just as standard diff does. Incorporates updates to all web related styles. Known limitations: * the column diff is done against the first parent, just as the standard diff * this change allows examining diffs for single files only (as I am not sure if examining the whole changeset in this way would be helpful) * syntax highlighting of the output changes is not performed (enabling the highlight extension has no influence on it)
Fri, 06 Jul 2012 13:56:40 -0700 scmutil: 25% speedup in casecollisionauditor
Joshua Redstone <joshua.redstone@fb.com> [Fri, 06 Jul 2012 13:56:40 -0700] rev 17201
scmutil: 25% speedup in casecollisionauditor On a large repository, switching casecollisionauditor to lowercasing all file names at once rather than one at a time improves hg-add time by 25%.
Tue, 17 Jul 2012 00:55:22 +0200 obsolete: os.SEEK_END first appeared in Python 2.5
Adrian Buehlmann <adrian@cadifra.com> [Tue, 17 Jul 2012 00:55:22 +0200] rev 17200
obsolete: os.SEEK_END first appeared in Python 2.5 fixes 48c232873a54 failing for Python 2.4
Sun, 15 Jul 2012 12:43:10 -0400 tests: convert a push test to use revsets
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Jul 2012 12:43:10 -0400] rev 17199
tests: convert a push test to use revsets
Sun, 15 Jul 2012 12:43:10 -0400 outgoing: accept revset argument for --rev
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Jul 2012 12:43:10 -0400] rev 17198
outgoing: accept revset argument for --rev There may be a more generic way that would add revset support to more commands by adding revset support to addbranchrevs(), but given the proximity of the next code freeze, a minimal change seems like the better choice.
Mon, 16 Jul 2012 16:19:53 -0500 dirstate: drop assert
Matt Mackall <mpm@selenic.com> [Mon, 16 Jul 2012 16:19:53 -0500] rev 17197
dirstate: drop assert
Wed, 04 Jul 2012 01:31:37 +0200 dirstate: eliminate redundant check parameter on _addpath()
Adrian Buehlmann <adrian@cadifra.com> [Wed, 04 Jul 2012 01:31:37 +0200] rev 17196
dirstate: eliminate redundant check parameter on _addpath() state == 'a' implies check I fail to see what the point of this check parameter is. Near as I can see, the only _addpath call where it was set to True was in add(), but there, state is 'a'. This is a follow-up to c2016bae3b97.
Mon, 16 Jul 2012 22:37:44 +0200 obsolete: add seek to end of file before calling tell (issue3543)
Adrian Buehlmann <adrian@cadifra.com> [Mon, 16 Jul 2012 22:37:44 +0200] rev 17195
obsolete: add seek to end of file before calling tell (issue3543)
Fri, 13 Jul 2012 21:52:37 +0200 peer: remove cancopy from peer api; use directly on repo instead
Sune Foldager <cryo@cyanite.org> [Fri, 13 Jul 2012 21:52:37 +0200] rev 17194
peer: remove cancopy from peer api; use directly on repo instead
Fri, 13 Jul 2012 21:52:28 +0200 peer: introduce canpush and improve error message
Sune Foldager <cryo@cyanite.org> [Fri, 13 Jul 2012 21:52:28 +0200] rev 17193
peer: introduce canpush and improve error message
Fri, 13 Jul 2012 21:47:06 +0200 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Fri, 13 Jul 2012 21:47:06 +0200] rev 17192
peer: introduce real peer classes This change separates peer implementations from the repository implementation. localpeer currently is a simple pass-through to localrepository, except for legacy calls, which have already been removed from localpeer. This ensures that the local client code only uses the most modern peer API when talking to local repos. Peers have a .local() method which returns either None or the underlying localrepository (or descendant thereof). Repos have a .peer() method to return a freshly constructed localpeer. The latter is used by hg.peer(), and also to allow folks to pass either a peer or a repo to some generic helper methods. We might want to get rid of .peer() eventually. The only user of locallegacypeer is debugdiscovery, which uses it to pose as a pre-setdiscovery client. But we decided to leave the old API defined in locallegacypeer for clarity and maybe for other uses in the future. It might be nice to actually define the peer API directly in peer.py as stub methods. One problem there is, however, that localpeer implements lock/addchangegroup, whereas the true remote peers implement unbundle. It might be desireable to get rid of this distinction eventually.
Fri, 13 Jul 2012 21:46:53 +0200 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org> [Fri, 13 Jul 2012 21:46:53 +0200] rev 17191
peer: introduce peer methods to prepare for peer classes This introduces a peer method into all repository classes, which currently simply returns self. It also changes hg.repository so it now raises an exception if the supplied paths does not resolve to a localrepo or descendant. Finally, all call sites are changed to use the peer and local methods as appropriate, where peer is used whenever the code is dealing with a remote repository (even if it's on local disk).
Fri, 06 Jul 2012 14:12:42 -0500 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 14:12:42 -0500] rev 17190
bookmarks: document behavior of -B/--bookmark in help
Fri, 06 Jul 2012 14:11:58 -0500 test-bookmarks-pushpull.t: verify correct push -B behavior
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 14:11:58 -0500] rev 17189
test-bookmarks-pushpull.t: verify correct push -B behavior I wasn't able to find a test that proved this behavior worked, so I felt obligated to write a quick test so it won't regress in the future.
Wed, 11 Jul 2012 11:52:42 +0200 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 11:52:42 +0200] rev 17188
debugrevlog: handle numrevs == numfull case (issue3537) Instead of tracing back with a ZeroDivisionError.
Tue, 10 Jul 2012 09:11:53 -0700 templatekw/help: document the {parents} keyword
epriestley <hg@yghe.net> [Tue, 10 Jul 2012 09:11:53 -0700] rev 17187
templatekw/help: document the {parents} keyword The {parents} keyword does not appear in the generated documentation for templates because it is added by `changeset_templater` (and this is because its behavior depends on `ui`, so it can't be defined as a normal template keyword; see comments in `changeset_templater._show()`). Add it to the documentation synthetically by creating a stub documentation function. Test plan: built the docs and examined the man page to verify that this keyword is now documented. I'm not sure how to test the i18n extraction part, but assume it will just work given that this patch doesn't do anything too crazy.
Sat, 07 Jul 2012 00:47:55 -0400 revset: add destination() predicate
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Jul 2012 00:47:55 -0400] rev 17186
revset: add destination() predicate This predicate is used to find csets that were created because of a graft, transplant or rebase --keep. An optional revset can be supplied, in which case the result will be limited to those copies which specified one of the revs as the source for the command. hg log -r destination() # csets copied from anywhere hg log -r destination(branch(default)) # all csets copied from default hg log -r origin(x) or destination(origin(x)) # all instances of x This predicate will follow a cset through different types of copies. Given a repo with a cset 'S' that is grafted to create G(S), which itself is transplanted to become T(G(S)): o-S / o-o-G(S) \ o-T(G(S)) hg log -r destination( S ) # { G(S), T(G(S)) } hg log -r destination( G(S) ) # { T(G(S)) } The implementation differences between the three different copy commands (see the origin() predicate) are not intentionally exposed, however if the transplant was a graft instead: hg log -r destination( G(S) ) # {} because the 'extra' field in G(G(S)) is S, not G(S). The implementation cannot correct this by following sources before G(S) and then select the csets that reference those sources because the cset provided to the predicate would also end up selected. If there were more than two copies, sources of the argument would also get selected. Note that the convert extension does not currently update the 'extra' map in its destination csets, and therefore copies made prior to the convert will be missing from the resulting set. Instead of the loop over 'subset', the following almost works, but does not select a transplant of a transplant. That is, 'destination(S)' will only select T(S). dests = set([r for r in subset if _getrevsource(repo, r) in args])
Sat, 07 Jul 2012 00:47:30 -0400 revset: add origin() predicate
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Jul 2012 00:47:30 -0400] rev 17185
revset: add origin() predicate This predicate is used to find the original source of csets created by a graft, transplant or rebase --keep. If a copied cset is itself copied, only the source of the original copy is selected. hg log -r origin() # all src csets, anywhere hg log -r origin(branch(default)) # all srcs of copies on default By following through different types of copy commands and only selecting the original cset, the implementation differences between the copy commands are hidden. (A graft of a graft preserves the original source in its 'extra' map, while transplant and rebase use the immediate source specified for the command). Given a repo with a cset S that is grafted to create G(S), which itself is grafted to become G(G(S)) o-S / o-o-G(S) \ o-G(G(S)) hg log -r origin( G(S) ) # { S } hg log -r origin( G(G(S)) ) # { S }, NOT { G(S) } Even if the last graft were a transplant hg log -r origin( T(G(S)) ) # { S } A rebase without --keep essentially strips the source, so providing the cset that results to this predicate will yield an empty set. Note that the convert extension does not currently update the 'extra' map in its destination csets, and therefore copies made prior to the convert will be unable to find their source.
Mon, 16 Jul 2012 15:50:19 +0200 convert: remove unused newnames variable in filemap
Patrick Mezard <patrick@mezard.eu> [Mon, 16 Jul 2012 15:50:19 +0200] rev 17184
convert: remove unused newnames variable in filemap
Thu, 12 Jul 2012 03:03:19 +0200 push: fix bug in detection of remote obsolete support
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 12 Jul 2012 03:03:19 +0200] rev 17183
push: fix bug in detection of remote obsolete support Current code check obsolete availability in local repo.
Wed, 11 Jul 2012 18:22:07 +0200 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 18:22:07 +0200] rev 17182
incoming/outgoing: handle --graph in core
Sat, 14 Jul 2012 19:09:22 +0200 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Jul 2012 19:09:22 +0200] rev 17181
log: support --graph without graphlog extension The glog command is preserved in the extension for backward compatibility.
Sat, 14 Jul 2012 18:55:21 +0200 graphlog: extract revset/support functions into cmdutil
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Jul 2012 18:55:21 +0200] rev 17180
graphlog: extract revset/support functions into cmdutil
Wed, 11 Jul 2012 17:13:39 +0200 graphlog: extract ascii drawing code into graphmod
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 17:13:39 +0200] rev 17179
graphlog: extract ascii drawing code into graphmod
Sun, 24 Jun 2012 18:11:52 +0200 patchbomb: rewrite getoutgoing() with revsets
Patrick Mezard <patrick@mezard.eu> [Sun, 24 Jun 2012 18:11:52 +0200] rev 17178
patchbomb: rewrite getoutgoing() with revsets Another version could have returned a revset expression from getoutgoing(), but we do not know how many times it will be resolved, so better do it once explicitely.
(0) -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 +3000 +10000 +30000 tip