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.
Sun, 24 Jun 2012 17:39:27 +0200 patchbomb: support --outgoing and revsets
Patrick Mezard <patrick@mezard.eu> [Sun, 24 Jun 2012 17:39:27 +0200] rev 17177
patchbomb: support --outgoing and revsets With --outgoing, input revisions were passed to getoutgoing() before being resolved.
Sat, 14 Jul 2012 19:21:31 +0200 patchbomb: make --outgoing ignore secret changesets
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Jul 2012 19:21:31 +0200] rev 17176
patchbomb: make --outgoing ignore secret changesets getoutgoing() is just rewritten almost like revset.outgoing(), a follow-up will make it use revsets after the tests are adjusted.
Sun, 15 Jul 2012 14:48:50 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 15 Jul 2012 14:48:50 -0500] rev 17175
merge with stable
Fri, 06 Jul 2012 01:14:02 -0300 convert: make filemap renames consistently override revision renames stable
Wagner Bruna <wbruna@yahoo.com> [Fri, 06 Jul 2012 01:14:02 -0300] rev 17174
convert: make filemap renames consistently override revision renames When the source repository had a revision renaming "$new -> $old", but the filemap a "$old -> $new" rename, the converted revision could use either $new (deleting the file) or $old (keeping the file) when getting the file data, depending on the lexicographical order of those names. So the resulting revision would leave some files untouched (as expected), but delete others arbitrarely.
Fri, 06 Jul 2012 19:34:09 +0200 obsolete: compute extinct changesets
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 06 Jul 2012 19:34:09 +0200] rev 17173
obsolete: compute extinct changesets `extinct` changesets are obsolete changesets with obsolete descendants only. They are of no interest anymore and can be: - exclude from exchange - hidden to the user in most situation - safely garbage collected This changeset just allows mercurial to detect them. The implementation is a bit naive, as for unstable changesets. We better use a simple revset query and a cache, but simple version comes first.
Tue, 10 Jul 2012 01:39:03 +0200 push: refuse to push unstable changesets without force
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 10 Jul 2012 01:39:03 +0200] rev 17172
push: refuse to push unstable changesets without force User should resolve unstability locally before pushing the same way we encourage user to merge locally instead of pushing a new remote head. If we are to push obsolete changeset, at least one set of the pushed set will be either obsolete or unstable. The check is narrowed to only heads.
Fri, 06 Jul 2012 00:18:09 +0200 obsolete: compute unstable changeset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 06 Jul 2012 00:18:09 +0200] rev 17171
obsolete: compute unstable changeset An unstable changeset is a changeset *not* obsolete but with some obsolete ancestors. The current logic to decide if a changeset is unstable is naive and very inefficient. A better solution is to compute the set of unstable changeset with a simple revset and to cache the result. But this require cache invalidation logic. Simpler version goes first.
Fri, 06 Jul 2012 19:29:10 +0200 revset: add an `obsolete` symbol
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 06 Jul 2012 19:29:10 +0200] rev 17170
revset: add an `obsolete` symbol This predicate matches obsolete changesets. This is a naive implementation to be improved later.
Tue, 10 Jul 2012 01:32:18 +0200 push: refuse to push obsolete changesets
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 10 Jul 2012 01:32:18 +0200] rev 17169
push: refuse to push obsolete changesets This is a first version. Simple but not very efficient. Note that this changeset introduce the "obsolete" word in the UI.
Thu, 05 Jul 2012 19:53:04 +0200 push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 05 Jul 2012 19:53:04 +0200] rev 17168
push: accept revset argument for --rev
Fri, 06 Jul 2012 19:48:19 +0200 check-code: recognise %= as an operator
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 06 Jul 2012 19:48:19 +0200] rev 17167
check-code: recognise %= as an operator
Wed, 04 Jul 2012 08:55:16 +0200 tests: do exclude what is expected
Simon Heimberg <simohe@besonet.ch> [Wed, 04 Jul 2012 08:55:16 +0200] rev 17166
tests: do exclude what is expected
Fri, 06 Jul 2012 00:48:45 +0200 parsers.c: remove warning: 'size' may be used uninitialized in this function
Mads Kiilerich <mads@kiilerich.com> [Fri, 06 Jul 2012 00:48:45 +0200] rev 17165
parsers.c: remove warning: 'size' may be used uninitialized in this function Some compilers / compiler options (such as gcc 4.7) would emit warnings: mercurial/parsers.c: In function 'pack_dirstate': mercurial/parsers.c:306:18: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized] mercurial/parsers.c:306:12: warning: 'mode' may be used uninitialized in this function [-Wmaybe-uninitialized] It is apparently not smart enough to figure out how the 'err' arithmetics makes sure that it can't happen. 'err' is now replaced with simple checks and goto. That might also help the optimizer when it is inlining getintat().
Wed, 11 Jul 2012 16:47:33 +0200 graphlog: remove unused ASCIIDATA constant
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 16:47:33 +0200] rev 17164
graphlog: remove unused ASCIIDATA constant It was introduced by d9acbe7b0049, returned by asciiformat() but never read anywhere. 20140c249e63 stopped using it completely, and the graphmod.CHANGESET type is passed through all functions.
Wed, 11 Jul 2012 17:10:21 +0200 graphlog: make functions private, fix names
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 17:10:21 +0200] rev 17163
graphlog: make functions private, fix names
Wed, 11 Jul 2012 17:05:20 +0200 graphlog: remove unused get_revs() function
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 17:05:20 +0200] rev 17162
graphlog: remove unused get_revs() function
Fri, 06 Jul 2012 18:45:27 +0900 localrepo: use file API via vfs while ensuring repository directory
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17161
localrepo: use file API via vfs while ensuring repository directory As a part of migration to vfs, this patch invokes some file API indirectly via vfs, while ensuring repository directory in the constructor of "localrepository" class. New file API are added to "scmutil.abstractopener" class, because they are also used via other derived classes than "scmutil.opener". But "join()" is not yet defined other than "scmutil.opener" class, because it should not be used via other opener classes yet.
Fri, 06 Jul 2012 18:45:27 +0900 localrepo: use "vfs" intead of "opener" while ensuring repository directory
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17160
localrepo: use "vfs" intead of "opener" while ensuring repository directory As a part of migration to vfs, this patch uses "self.vfs" instead of "self.opener", while ensuring repository directory in the constructor of "localrepository" class.
Fri, 06 Jul 2012 18:45:27 +0900 localrepo: use the path relative to "self.vfs" instead of "path" argument
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17159
localrepo: use the path relative to "self.vfs" instead of "path" argument As a part of migration to vfs, this patch uses "self.root", which can be recognized as the path relative to "self.vfs", instead of "path" argument. This fix allows to make invocations of "util.makedirs()" and "os.path.exists()" while ensuring repository directory in "localrepository.__init__()" ones indirectly via vfs. But this fix also raises issue 2528: "hg clone" with empty destination. "path" argument is empty in many cases, so this issue can't be fixed in the view of "localrepository.__init__()". Before this patch, it is fixed by empty-ness check ("not name") of exception handler in "util.makedirs()". try: os.mkdir(name) except OSError, err: if err.errno == errno.EEXIST: return if err.errno != errno.ENOENT or not name: raise This requires "localrepository.__init__()" to invoke "util.makedirs()" with "path" instead of "self.root", because empty "path" is treated as "current directory" and "self.root" becomes valid path. But "hg clone" with empty destination can be detected also in "hg.clone()" before "localrepository.__init__()" invocation, so this patch re-fixes issue2528 by checking it in "hg.clone()".
Fri, 06 Jul 2012 18:45:27 +0900 localrepo: use "self.wvfs.join()" instead of "os.path.join()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17158
localrepo: use "self.wvfs.join()" instead of "os.path.join()" As a part of migration to vfs, this patch uses "self.wvfs.join()" instead of "os.path.join()", while initialization of fields in the constructor of "localrepository" class.
Fri, 06 Jul 2012 18:45:27 +0900 localrepo: use path expansion API via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17157
localrepo: use path expansion API via vfs As a part of migration to vfs, this patch moves path expansion API invocations in the constructor of "localrepository" to the constructor of "opener", because the root path to the repository is very important to handle paths using non-ASCII characters correctly. This patch also rearrange initialization order of "wvfs" field, because it is required to initialize "self.root".
Fri, 06 Jul 2012 18:45:26 +0900 localrepo: add "vfs" fields to "localrepository" for migration from "opener"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:26 +0900] rev 17156
localrepo: add "vfs" fields to "localrepository" for migration from "opener" As a part of migration to vfs, this patch adds "vfs" fields to "localrepository" class. This allows new codes to access current "opener" objects related to repositories via "vfs" fields, so patches referring to "vfs" will replace referring to "opener" in time. This patch also adds initializations for "vfs" fields to "statichttprepository" class derived from it, because its constructor doesn't invoke the constructor of "localrepository", so "vfs" fields should be initialized explicitly as same as "opener" fields: it has no working directory, so "wvfs" field is not added.
Fri, 13 Jul 2012 14:49:16 +0200 largefiles: optimize status by synchronizing lfdirstate with the largefile on update
Na'Tosha Bard <natosha@unity3d.com> [Fri, 13 Jul 2012 14:49:16 +0200] rev 17155
largefiles: optimize status by synchronizing lfdirstate with the largefile on update This speeds up status on a largefiles repo by synchronizing the largefiles dirstate to the largefile's mtime upon update, preventing the files from coming back as "unsure" later, requiring a check of the SHA1 sum.
Mon, 25 Jun 2012 15:14:06 -0700 store: abstract out how we retrieve a file's size
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Jun 2012 15:14:06 -0700] rev 17154
store: abstract out how we retrieve a file's size
Wed, 27 Jun 2012 22:03:27 +0900 mq: check subrepo synchronizations against parent of workdir or other appropriate context
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Jun 2012 22:03:27 +0900] rev 17153
mq: check subrepo synchronizations against parent of workdir or other appropriate context Before this patch, MQ checks each subrepo synchronizations against the working directory context, so ".hgsubstate" updating is not imported into MQ revision correctly in cases below: - qrefresh when current ".hgsubstate" is already synchronized with each subrepos: you can reproduce this easily by just twice or more qrefresh invocations - qnew just after rollback of commit which updates ".hgsubstate" This patch resolves this by checking subrepo states against: - the parent of "qtop" for qrefresh, or - the parent of working context otherwise
Wed, 27 Jun 2012 22:03:27 +0900 mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Jun 2012 22:03:27 +0900] rev 17152
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh Even though the committed revision contains diff of ".hgsubstate", the patch file created by qrefresh doesn't contain it, because: - ".hgsubstate" is not listed up as one of target files of the patch for reasons below, so diff of ".hgsubstate" is not imported into patch file - status of ".hgsubstate" in working directory is usually "clean" - ".hgsubstate" is not specified explicitly by users - the patch file is created before commit processing which updates or creates ".hgsubstate" automatically, so there is no diff for it at that time This patch resolves this problem by: - putting ".hgsubstate" into target list of the patch, if needed: this allows "patch.diff()" to import diff of ".hgsubstate" into patch file. - creating the patch file after commit processing: this updates ".hgsubstate" before "patch.diff()" invocation. For the former fixing, this patch introduces "putsubstate2changes()" to share same implementation with qnew. This is invoked only once per qnew/qrefresh at most, so there is less performance impact. This patch also omits "match" argument for "patch.diff()" invocation, because "patch.diff()" ignores "match" if "changes" is specified.
Wed, 27 Jun 2012 22:03:22 +0900 mq: add ".hgsubstate" to patch target list only if it is not listed up yet
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Jun 2012 22:03:22 +0900] rev 17151
mq: add ".hgsubstate" to patch target list only if it is not listed up yet If ".hgsubstate" is already listed up as one of commit targets, qnew put diff of ".hgsubstate" twice into the patch file stored under ".hg/patches". It causes rejections at applying such patches. Other than the case like in added test script, this can also occur when qnew is executed just after rolling back the committing updated ".hgsubstate". This patch checks whether ".hgsubstate" is already listed up as one of commit targets, and put it into the appropriate list only if it is not listed up yet.
Thu, 12 Jul 2012 14:20:34 -0500 backout e7167007c083
Matt Mackall <mpm@selenic.com> [Thu, 12 Jul 2012 14:20:34 -0500] rev 17150
backout e7167007c083 This may have allowed unbounded I/O sizes with the current chunk retrieval code.
Thu, 12 Jul 2012 13:33:53 +0200 merge with crew-stable
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 13:33:53 +0200] rev 17149
merge with crew-stable
Mon, 09 Jul 2012 17:51:46 +0200 revert: use term "uncommitted merge" in help text stable
Adrian Buehlmann <adrian@cadifra.com> [Mon, 09 Jul 2012 17:51:46 +0200] rev 17148
revert: use term "uncommitted merge" in help text to make sure users can't possibly be mislead to try this for canceling a *merge changeset*.
Fri, 06 Jul 2012 22:43:10 +0200 histedit: use cmdutil.command decorator
Adrian Buehlmann <adrian@cadifra.com> [Fri, 06 Jul 2012 22:43:10 +0200] rev 17147
histedit: use cmdutil.command decorator
Tue, 10 Jul 2012 17:52:43 +0200 hgweb: show help with verbose sections included
Adrian Buehlmann <adrian@cadifra.com> [Tue, 10 Jul 2012 17:52:43 +0200] rev 17146
hgweb: show help with verbose sections included This makes sure we see the same help info as with 'hg help <command> --verbose' on the command line, that is, with verbose sections included.
Thu, 12 Jul 2012 10:41:56 +0200 merge with crew-stable
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 10:41:56 +0200] rev 17145
merge with crew-stable
Tue, 10 Jul 2012 21:26:18 +0200 update: mention how update can be used to cancel an uncommitted merge stable
Adrian Buehlmann <adrian@cadifra.com> [Tue, 10 Jul 2012 21:26:18 +0200] rev 17144
update: mention how update can be used to cancel an uncommitted merge
Tue, 10 Jul 2012 11:15:22 +0200 update: move help text about parent revision higher up stable
Adrian Buehlmann <adrian@cadifra.com> [Tue, 10 Jul 2012 11:15:22 +0200] rev 17143
update: move help text about parent revision higher up emphasizing how important the parent revision is
Wed, 11 Jul 2012 09:12:31 +0200 rollback: move examples and --force note in help into verbose section stable
Adrian Buehlmann <adrian@cadifra.com> [Wed, 11 Jul 2012 09:12:31 +0200] rev 17142
rollback: move examples and --force note in help into verbose section Plain 'hg help rollback' now looks like this: $ hg help rollback hg rollback roll back the last transaction (dangerous) This command should be used with care. There is only one level of rollback, and there is no way to undo a rollback. It will also restore the dirstate at the time of the last transaction, losing any dirstate changes since that time. This command does not alter the working directory. Transactions are used to encapsulate the effects of all commands that create new changesets or propagate existing changesets into a repository. This command is not intended for use on public repositories. Once changes are visible for pull by other users, rolling a transaction back locally is ineffective (someone else may already have pulled the changes). Furthermore, a race is possible with readers of the repository; for example an in-progress pull from the repository may fail if a rollback is performed. Returns 0 on success, 1 if no rollback data is available. options: -n --dry-run do not perform actions, just print output -f --force ignore safety measures --mq operate on patch repository use "hg -v help rollback" to show more info
Wed, 11 Jul 2012 09:08:26 +0200 rollback: split off command example paragraph in help stable
Adrian Buehlmann <adrian@cadifra.com> [Wed, 11 Jul 2012 09:08:26 +0200] rev 17141
rollback: split off command example paragraph in help
Thu, 12 Jul 2012 09:58:40 +0200 subrepo: add missing newline in Git warning message stable
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 09:58:40 +0200] rev 17140
subrepo: add missing newline in Git warning message
Thu, 12 Jul 2012 10:03:50 +0200 merge with main
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 10:03:50 +0200] rev 17139
merge with main
Wed, 11 Jul 2012 15:39:00 -0700 Merge
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:39:00 -0700] rev 17138
Merge
Wed, 11 Jul 2012 15:36:00 -0700 localrepo: make requirements and openerreqs mutable by subclasses
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:36:00 -0700] rev 17137
localrepo: make requirements and openerreqs mutable by subclasses This is necessary for extensions that need to modify a repo's requirements.
Wed, 11 Jul 2012 15:34:01 -0700 test-clone: load extensions before doing anything
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:34:01 -0700] rev 17136
test-clone: load extensions before doing anything This makes it possible to run this test using "--extra-config-opt=extensions.myext=" and have the extension be loaded as intended.
Wed, 11 Jul 2012 15:34:32 -0700 test-clone: load extensions before doing anything
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:34:32 -0700] rev 17135
test-clone: load extensions before doing anything This makes it possible to run this test using "--extra-config-opt=extensions.myext=" and have the extension be loaded as intended.
Wed, 11 Jul 2012 12:38:42 +0200 revlog: fix for generaldelta distance calculation
Friedrich Kastner-Masilko <kastner_masilko@at.festo.com> [Wed, 11 Jul 2012 12:38:42 +0200] rev 17134
revlog: fix for generaldelta distance calculation The decision whether or not to store a full snapshot instead of a delta is done based on the distance value calculated in _addrevision.builddelta(rev). This calculation traditionally used the fact of deltas only using the previous revision as base. Generaldelta mechanism is changing this, yet the calculation still assumes that current-offset minus chainbase-offset equals chain-length. This appears to be wrong. This patch corrects the calculation by means of using the chainlength function if Generaldelta is used.
Wed, 11 Jul 2012 15:05:06 -0700 Merge
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:05:06 -0700] rev 17133
Merge
Wed, 11 Jul 2012 15:03:10 -0700 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:03:10 -0700] rev 17132
tests: reduce spurious failures when run with generaldelta Quite a few tests fail in noisy but meaningless ways when the test suite is run with generaldelta enabled: ./run-tests.py --extra-config-opt=format.generaldelta=1 This reduces the amount of noise introduced by the debugindex command, the main source of differences. In my environment, when testing with generaldelta enabled, this change reduces the number of completely failing tests from 21 to 8.
Fri, 06 Jul 2012 12:17:53 -0500 histedit: add extension docstring from external README
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 12:17:53 -0500] rev 17131
histedit: add extension docstring from external README Made a couple of tweaks to try and fit better with the hg docstring style and fix up some ReST errors in the README.
Fri, 06 Jul 2012 11:39:02 -0500 histedit: don't crash if the result of fixing up a fold is empty
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 11:39:02 -0500] rev 17130
histedit: don't crash if the result of fixing up a fold is empty
Fri, 06 Jul 2012 11:06:57 -0500 histedit: replace hexshort lambda with node.short
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 11:06:57 -0500] rev 17129
histedit: replace hexshort lambda with node.short
Mon, 25 Jun 2012 13:56:13 -0700 revlog: make compress a method
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Jun 2012 13:56:13 -0700] rev 17128
revlog: make compress a method This allows an extension to optionally use a new compression type based on the options applied by the repo to the revlog's opener. (decompress doesn't need the same treatment, as it can be replaced using extensions.wrapfunction, and can figure out which compression algorithm is in use based on the first byte of the compressed payload.)
Sun, 24 Jun 2012 20:36:22 +0200 largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com> [Sun, 24 Jun 2012 20:36:22 +0200] rev 17127
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386) This implements a part of issue 3386. It batches the request for the status of all largefiles in the revisions that are about to be pushed into a single request, instead of doing N separate requests. In a real world test case, this change was verified to save 1,116 round-trips to the server. It only requires a client-side change; it is backwards-compatible with an older version of the server.
Wed, 04 Jul 2012 02:21:04 +0200 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 04 Jul 2012 02:21:04 +0200] rev 17126
obsolete: write obsolete marker inside a transaction Marker are now written as soon as possible but within a transaction. Using a transaction ensure a proper behavior on error and rollback compatibility. Flush logic are not necessary anymore and are dropped from lock release. With this changeset, the obsstore is open, written and closed for every single added marker. This is expected to be highly inefficient and batched write should be implemented "quickly". Another issue is that every flush of the file will invalidate the obsstore filecache and trigger a full re instantiation of the repo.obsstore attribute (including, reading and parsing entry). This is also expected to be highly inefficient and proper filecache operation should be implemented "quickly" too. A side benefit of the filecache issue is that repo.obsstore object is properly invalidated on transaction abortion.
Wed, 04 Jul 2012 02:02:48 +0200 obsolete: append new markers to obsstore file instead of rewriting everything
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 04 Jul 2012 02:02:48 +0200] rev 17125
obsolete: append new markers to obsstore file instead of rewriting everything This is the second step toward incremental writing of marker inside a transaction. The obsstore file is now handled append only. Header writing have been extracted from _writemarkers. Because the _writemarkers method have been dropped, the push code directly reuse the serialised content of local repo `listkeys`. This is not very pretty, but this part of the protocol still need major improvement anyway.
Wed, 04 Jul 2012 02:00:36 +0200 obsolete: move obsolete markers read/write logic to obsstore object
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 04 Jul 2012 02:00:36 +0200] rev 17124
obsolete: move obsolete markers read/write logic to obsstore object This is the first step toward incremental writing of obsolete marker within a transaction. For this purpose, obsstore is now given its repo sopener. This make it able to handles read and write to the obsstore file itself. Most IO logic is removed from localrepo and handled by obsstore object directly.
Wed, 11 Jul 2012 18:35:14 -0500 debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com> [Wed, 11 Jul 2012 18:35:14 -0500] rev 17123
debugobsolete: remove spurious ctx from variable name 'contexts' are objects like the ones described in context.py, not anything that describes a situation.
Fri, 06 Jul 2012 20:28:32 -0700 Merge
Bryan O'Sullivan <bryano@fb.com> [Fri, 06 Jul 2012 20:28:32 -0700] rev 17122
Merge
Fri, 06 Jul 2012 20:19:55 -0700 setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com> [Fri, 06 Jul 2012 20:19:55 -0700] rev 17121
setup: disable -mno-cygwin if building under mingw32 This gcc option has been deprecated since at least 2009 (gcc 4.4), and it causes compilations to fail entirely with gcc 4.6.x. Upstream distutils bug: http://bugs.python.org/issue12641
Fri, 06 Jul 2012 00:30:18 +0200 graphlog: don't truncate template value at last \n
Mads Kiilerich <mads@kiilerich.com> [Fri, 06 Jul 2012 00:30:18 +0200] rev 17120
graphlog: don't truncate template value at last \n Most uses of templates requires a trailing newline to get vertical output. Graphlog with a template without trailing newline did however not just create horisontal output like other commands would but truncated the output at the last \n. Template values without any \n were ignored completely. Graphlog will now only eat one trailing newline before it lets the flow of the graph add the necessary vertical space.
Wed, 04 Jul 2012 17:29:49 +0200 graphlog: display obsolete changeset as "x"
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 04 Jul 2012 17:29:49 +0200] rev 17119
graphlog: display obsolete changeset as "x" Changeset detected as obsolete will be displayed as "x" instead of 'o': o new rewritten changeset | | x old obsolete changeset |/ | o base This will be useful even when some obsolete changeset will be "hidden" because not all obsolete changeset can be hidden. If an obsolete changeset have non-obsolete descendant we can't simply hide it. And having a clear visual hint that the changeset is obsolete is useful. The main reason to make this minor change right now is to: 1) introduce an officiel user of the `ctx.obsolete()` method that will detect breakage earlier than third party code (mutable, hgview) 2) Do not display any vocabulary related to obsolete. Such vocabulary will require discussion.
Wed, 04 Jul 2012 17:26:51 +0200 obsolete: fix context.obsolete() method
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 04 Jul 2012 17:26:51 +0200] rev 17118
obsolete: fix context.obsolete() method - obsstore attribut name changed. - public changeset can't be obsolete
Wed, 04 Jul 2012 16:37:00 +0200 obsolete: fix error message at marker creation
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 04 Jul 2012 16:37:00 +0200] rev 17117
obsolete: fix error message at marker creation precursors content where printed for invalid successor.
Mon, 02 Jul 2012 00:31:22 +0200 help: explain effect of .hgignore on tracked files
Adrian Buehlmann <adrian@cadifra.com> [Mon, 02 Jul 2012 00:31:22 +0200] rev 17116
help: explain effect of .hgignore on tracked files
Sun, 01 Jul 2012 10:06:16 +0200 hgignore: simply ignore all *.exe's everywhere
Adrian Buehlmann <adrian@cadifra.com> [Sun, 01 Jul 2012 10:06:16 +0200] rev 17115
hgignore: simply ignore all *.exe's everywhere it's not like we're going to add any exe anywhere ever
Thu, 05 Jul 2012 02:25:49 +0200 tests: ignore pax_global_header in test-subrepo-git.t
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 02:25:49 +0200] rev 17114
tests: ignore pax_global_header in test-subrepo-git.t Failure seen on hgbuildbot 2.4 and 2.5 after 1894dac619de. Hide '../archive_x/s/pax_global_header' with same strange trick as in 5dda6c708138.
Thu, 05 Jul 2012 01:47:17 +0200 tests: remove GNU quoting in test-subrepo-deep-nested-change.t
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 01:47:17 +0200] rev 17113
tests: remove GNU quoting in test-subrepo-deep-nested-change.t Test failure on non-GNU systems introduced in 1894dac619de.
Thu, 05 Jul 2012 00:51:05 +0200 tests: add '(glob)' for Windows paths in test-subrepo-deep-nested-change.t
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 00:51:05 +0200] rev 17112
tests: add '(glob)' for Windows paths in test-subrepo-deep-nested-change.t Test failure was introduced in 1894dac619de.
Thu, 05 Jul 2012 00:49:26 +0200 check-code: verify that 'saved backup bundle to ...' is '(glob)'ed
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 00:49:26 +0200] rev 17111
check-code: verify that 'saved backup bundle to ...' is '(glob)'ed This is the most frequent trivial reason tests fail on Windows.
Thu, 05 Jul 2012 00:35:42 +0200 tests: fix test markup in test-merge-types.t
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 00:35:42 +0200] rev 17110
tests: fix test markup in test-merge-types.t ca5cc2976574 introduced some tests that because of incorrect indentation wasn't run.
Wed, 04 Jul 2012 12:43:13 +0200 test-hgweb-diffs: partially adapt for Windows
Adrian Buehlmann <adrian@cadifra.com> [Wed, 04 Jul 2012 12:43:13 +0200] rev 17109
test-hgweb-diffs: partially adapt for Windows Since chmod isn't supported on Windows (or vfat), I'm importing a here-doc instead (<<EOF ..). Option --bypass on import of the here-doc is required on Windows (or vfat) to bypass the working directory (see hg help import). Not using --bypass would lose the mode changing bits. I've had to insert a --bypass on the preexisting import call futher down in the test, because importing a patch with --exact and mode changes will fail on Windows (and vfat). As the point of this test is not to test commit, I'm using the import procedure for all platforms unconditionally, that is, I'm intentionally not keeping the original sequence of hg and chmod calls for platforms that support exec either, which saves us having to insert an #if exec ... #else ... #endif.
Sat, 16 Jun 2012 22:34:06 -0400 subrepo: propagate matcher to subrepos when archiving
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 Jun 2012 22:34:06 -0400] rev 17108
subrepo: propagate matcher to subrepos when archiving Add a match object to subrepo.archive(). This will allow the -X and -I options to be honored inside subrepos when archiving. They formerly only affect the top level repo.
Mon, 18 Jun 2012 22:45:21 -0400 largefiles: remove a standin check that could never be true
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jun 2012 22:45:21 -0400] rev 17107
largefiles: remove a standin check that could never be true
Mon, 18 Jun 2012 23:02:51 -0400 largefiles: fix the directory structure when archiving a subrepo in a subrepo
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jun 2012 23:02:51 -0400] rev 17106
largefiles: fix the directory structure when archiving a subrepo in a subrepo Previously, a repo consisting of main/sub/subsub archived sub and subsub as siblings under main.
Sun, 17 Jun 2012 21:57:48 -0400 largefiles: fix a traceback when archiving a subrepo in a subrepo
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Jun 2012 21:57:48 -0400] rev 17105
largefiles: fix a traceback when archiving a subrepo in a subrepo This regression was introduced in 43fb170a23bd.
Thu, 21 Jun 2012 12:50:15 +0200 help: improve hgweb help
Mads Kiilerich <mads@kiilerich.com> [Thu, 21 Jun 2012 12:50:15 +0200] rev 17104
help: improve hgweb help The existing help only walked through an example. Now we first explain the basic rules and then show an example. The 'collections' example and description only cause confusion and is removed. Bikeshedded by Patrick Mezard <patrick@mezard.eu>
Mon, 18 Jun 2012 18:19:28 +0200 convert: keep branch switching merges with ancestors (issue3340)
Patrick Mezard <patrick@mezard.eu> [Mon, 18 Jun 2012 18:19:28 +0200] rev 17103
convert: keep branch switching merges with ancestors (issue3340) When running convert with a filemap, merge parents which are ancestors of other parents are ignored. This is hardly a problem when parents belong to the same branch, but the result could be confusing when named branches are involved. With: -o-a1-a2-a3... <- A \ \ b1-b2-b3...-m- <- B If all b* revisions are discarded, it is useful to preserve 'm' even if it is empty after filtering to record the branch switch. This patch makes filemap preserve "ancestor parents" if there is no "non-ancestor parent" on the same branch than the merge revision. Remarks: - I am not completely convinced by the reasons given above and those detailed by Matt in this thread: http://selenic.com/pipermail/mercurial-devel/2012-May/040627.html The properties we try to preserve are not clearly defined. That said, I know this patch already helped someone on IRC and the tests output look reasonable. - This is a new version of the original "convert: filemap must preserve fast-forward merges" patch. It has exactly the same output for 2 parents merges, the additional complexity is here to handle more than two parents.
Wed, 13 Jun 2012 23:32:58 +0200 revset: add "diff" field to "matching" keyword
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 13 Jun 2012 23:32:58 +0200] rev 17102
revset: add "diff" field to "matching" keyword The new "diff" field lets you use the matching revset keyword to find revisions that apply the same change as the selected revisions. The match must be exact (i.e. same additions, same deletions, same modified lines and same change context, same file renames and copies). Two revisions matching their diff must also match their files. Thus, to match the diff much faster we will always check that the 'files' match first, and only then check that the 'diff' matches as well.
(0) -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 +30000 tip