Mads Kiilerich <madski@unity3d.com> [Fri, 23 Oct 2015 21:27:29 +0200] rev 26822
largefiles: test coverage of handling of store corruption
This reveals that update might put a corrupted largefile in the working
directory where it will show up as modified and ready for commit.
Augie Fackler <augie@google.com> [Fri, 23 Oct 2015 06:06:22 -0400] rev 26821
merge: improve clarity of table in update docstring
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 22 Oct 2015 18:59:03 +0000] rev 26820
ui: support paths.default-push without paths.default set (issue4914)
This behavior regressed as part of the paths API refactoring. Previous
behavior was to accept "default-push" without "default" defined. Current
behavior aborts with "default repository not configured!." This patch
restores the old behavior and adds test coverage for the scenario, which
was absent before.
Matt Mackall <mpm@selenic.com> [Wed, 21 Oct 2015 16:21:27 -0500] rev 26819
bookmarks: don't allow pushing new head for existing mark with -B (issue4400)
timeless <timeless@mozdev.org> [Tue, 20 Oct 2015 18:46:00 -0400] rev 26818
commands: fix help for debugobsolete
Mads Kiilerich <madski@unity3d.com> [Wed, 21 Oct 2015 00:18:11 +0200] rev 26817
largefiles: fix explicit commit of normal/largefile switch
Commit of corresponding normal/largefiles pairs would only commit the standin.
That is usually fine, except if either the normal file or the standin is a
remove while the other is an add. In that case it would either give duplicate
colliding entries or lose the file.
Instead, commit both filenames if one of them is a remove.
Mads Kiilerich <madski@unity3d.com> [Wed, 21 Oct 2015 00:10:46 +0200] rev 26816
largefiles: test coverage of explicit commit of normal/largefile switch
This reveals that a switch from normal to largefile violates the normal
largefile invariant and gives a manifest with both a normal and standin file
in the repository, while a switch from largefile to normal gives nothing.
Not good.
Matt Mackall <mpm@selenic.com> [Tue, 20 Oct 2015 16:00:02 -0500] rev 26815
Added signature for changeset b66e3ca0b90c
Matt Mackall <mpm@selenic.com> [Tue, 20 Oct 2015 15:59:58 -0500] rev 26814
Added tag 3.6-rc for changeset b66e3ca0b90c
Matt Mackall <mpm@selenic.com> [Tue, 20 Oct 2015 15:59:10 -0500] rev 26813
merge default into stable for code freeze
Mads Kiilerich <madski@unity3d.com> [Mon, 19 Oct 2015 16:49:54 +0200] rev 26812
convert: fix Python syntax in 'splice in' message
Instead of reporting
spliced in ['82544090e14fe18091e04f1fb0f0d7991cbe6e7e'] as parents of 369fd983d9e13330e9f12d9fce820deae84ea223
report
spliced in 82544090e14fe18091e04f1fb0f0d7991cbe6e7e as parents of 369fd983d9e13330e9f12d9fce820deae84ea223
Mads Kiilerich <madski@unity3d.com> [Mon, 19 Oct 2015 16:29:35 +0200] rev 26811
rebase: fix wrong 'no changes to commit' when using --collapse
--collapse will do that rebase doesn't commit until the final commit. The lack
of a new commit would make it look like the rebase didn't contribute any
changes.
Instead, only warn about no commits when not using --collapse.
Sean Farley <sean@farley.io> [Mon, 19 Oct 2015 15:47:40 -0700] rev 26810
pull: all pass along extra opargs
Wihtout this patch, commands.pull silently drops opargs defeating the whole
purpose of the argument.
Sean Farley <sean@farley.io> [Mon, 19 Oct 2015 15:43:35 -0700] rev 26809
push: all pass along opargs
Wihtout this patch, commands.push silently drops opargs defeating the whole
purpose of the argument.
timeless <timeless@mozdev.org> [Thu, 15 Oct 2015 17:28:26 -0400] rev 26808
check-code: allow argument passing py2.6ism
this backs out 131f7fe06e9e, because Python2.5 support was dropped
timeless <timeless@mozdev.org> [Thu, 15 Oct 2015 17:24:42 -0400] rev 26807
mail: drop python 2.5 self.sock.read workaround
timeless <timeless@mozdev.org> [Thu, 15 Oct 2015 17:21:08 -0400] rev 26806
url: drop support for python2.5
timeless <timeless@mozdev.org> [Thu, 15 Oct 2015 17:19:11 -0400] rev 26805
win32: drop reference to python2.5
Ryan McElroy <rmcelroy@fb.com> [Mon, 19 Oct 2015 21:36:12 -0700] rev 26804
editmerge: dequote other use of $ED
We want to support editors with parameters, eg EDITOR="vim -O" or whatever.
So remove the quotes from around $ED and assume that the editor variable is
properly escaped already.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 16:01:55 +0200] rev 26803
bundlerepo: properly extract compressed changegroup from bundle2
Before this bundle repository were unable to work with compressed
bundle2. We use the same approach as with bundle1, we extract the
changegroup in uncompressed form into a temporary file.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 02 Oct 2015 23:21:39 -0700] rev 26802
bundle2: make unbundle.compressed return True when compressed
We were returning 'False' in all cases, even when the bundle2 was actually
compressed.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 18:04:08 +0200] rev 26801
bundlerepo: uncompress changegroup in bundle1 case only
Uncompressing bundle2 needs to be handled differently.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 17:58:04 +0200] rev 26800
bundlerepo: move temp-bundle writing logic into a closure
We will reuse this logic for bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 15:42:50 +0200] rev 26799
shelve: properly process bundle2 bundle
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 03:07:23 +0200] rev 26798
histedit: properly apply bundle2 backups
If the histedit fails, we restore a backup. We make sure this backup bundle can
be in bundle2 format as general delta will require.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 16:01:33 +0200] rev 26797
strip: pass source and url to bundle2 processing
Restoring from a 'bundle2' was missing this data.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:56:22 +0200] rev 26796
unbundle: use 'url' argument with applybundle
This will let the hook get access to the 'url' value.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:55:04 +0200] rev 26795
applybundle: take url as argument
We allow specifying the url to carry it to hooks. This gets us closer to
'bundle1.apply(...)' and will allow us to remove regressions in multiple place
where we forget to pass the url to hooks.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:53:07 +0200] rev 26794
unbundle: use 'source' argument with applybundle
This will let the hook get access to the 'source' value.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:52:42 +0200] rev 26793
applybundle: take source as argument
We allow specifying the source to carry it to hooks. This gets us closer to
'bundle1.apply(...)' and will allow us to remove regressions in multiple places
where we forget to pass the source to hooks.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:48:24 +0200] rev 26792
applybundle: set 'bundle2=1' env for all transaction
This should be set for all bundle2 application, we enforce that at a low level.
This is for courtesy with hooks.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:47:20 +0200] rev 26791
unbundle: use 'bundle2.applybundle'
This is one such place.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:45:39 +0200] rev 26790
bundle2: introduce an "applybundle" function
There is a case where the intent is clear and the transaction is not optional. We
want to be able to alter that transaction in a wide and easy way. We cannot get
a unified '.apply(repo)' method for bundle1 and bundle2 yet because the api are
still a bit too far apart. But this is a good step forward to get the rc out.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:31:04 -0700] rev 26789
commands.resolve: conclude merge driver if no unresolved files are left
This can happen when either 'hg resolve --all' is called or a driver-resolved
file is explicitly requested.
This is done as part of 'hg resolve --all' so that users still have a chance to
test their changes before committing them.
The exact semantics here are still to be decided. This does not impact any
non-experimental features.
Thanks to Pierre-Yves David for some advice about this behavior in particular,
and merge drivers in general.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:27:06 -0700] rev 26788
commands.resolve: call driverpreprocess if we haven't run it yet
We need to be careful about allowing --mark and --unmark to keep working -- we
don't want the user to be stuck in a weird state. The exact behavior here is
still to be decided, though.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:22:01 -0700] rev 26787
merge.applyupdates: call driverconclude after performing merge actions
This will be a chance for the merge driver to finish resolving or generating
any driver-resolved files.
As before, having a separate error state from 'unresolved' is too big a
refactoring for now, so we hack around it by setting unresolved to a positive
value when necessary.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:19:10 -0700] rev 26786
merge.applyupdates: call driverpreprocess before starting merge actions
We also need to update our internal state to whatever state driverpreprocess
leaves it in.
Adding an error state separate from the unresolved count is too big a
refactoring for now, so we hack around it by setting it to a positive value to
indicate an error state.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:17:29 -0700] rev 26785
merge: add stubs for preprocess and conclude steps of merge driver
The exact semantics for what should happen (particularly with respect to error
handling) are still a bit hard to pin down, so I think it's better to
experiment with it as an extension for now. For now this stub will act as a
convenient point for extensions to hook on.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:15:22 -0700] rev 26784
commands.resolve: don't allow users to mark or unmark driver-resolved files
Users will often be in the habit of running 'hg resolve --mark --all' after
resolving merge conflicts in source files. We need to make sure this doesn't
cause driver-resolved files to be marked.
'hg resolve --all' will resolve driver-resolved files, though.
The weird conditional structure is to accommodate an upcoming patch.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:11:50 -0700] rev 26783
resolve: only create wctx once
This allows for status and other results on the wctx to be cached between iterations.
James Mills <prologic@fb.com> [Mon, 19 Oct 2015 12:07:17 -0700] rev 26782
dirstate: fix invalid reference to self.ui
Mads Kiilerich <madski@unity3d.com> [Sat, 17 Oct 2015 00:58:46 +0200] rev 26781
spelling: trivial spell checking
timeless@mozdev.org [Wed, 14 Oct 2015 03:30:27 -0400] rev 26780
mq: consistently use qrefresh
timeless@mozdev.org [Wed, 14 Oct 2015 02:06:54 -0400] rev 26779
grammar: use does instead of do where appropriate
timeless@mozdev.org [Wed, 14 Oct 2015 22:29:03 -0400] rev 26778
l10n: use %d instead of %s for numbers
timeless <timeless@mozdev.org> [Thu, 15 Oct 2015 20:36:12 -0400] rev 26777
check-code: block non-portable pipe-and
timeless <timeless@mozdev.org> [Thu, 15 Oct 2015 20:32:01 -0400] rev 26776
test-shelve: do not use non-portable pipe-and
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Oct 2015 09:05:04 +0900] rev 26775
parsers: suppress warning of signed and unsigned comparison at nt_init
Spotted by CC=clang CFLAGS='-Wall -Wextra -Wno-missing-field-initializers
-Wno-unused-parameter -Wshorten-64-to-32':
mercurial/parsers.c:1580:24: warning: comparison of integers of different
signs: 'Py_ssize_t' (aka 'long') and 'unsigned long' [-Wsign-compare]
if (self->raw_length > INT_MAX / sizeof(nodetree)) {
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Oct 2015 23:14:13 +0900] rev 26774
parsers: correct type of temporary variables for dirstate tuple fields
These fields are defined as int. This eliminates the following warning
spotted by CC=clang CFLAGS='-Wall -Wextra -Wno-missing-field-initializers
-Wno-unused-parameter -Wshorten-64-to-32':
mercurial/parsers.c:625:29: warning: comparison of integers of different
signs: 'uint32_t' (aka 'unsigned int') and 'int' [-Wsign-compare]
if (state == 'n' && mtime == now) {
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Oct 2015 02:53:57 +0100] rev 26773
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'
This bundle command is meant to generate a bundle1, we enforce that to avoid
test's misbehavior when moving to general-delta by default.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Oct 2015 02:51:34 +0100] rev 26772
test: enforce v1 type in 'test-bundle2-format.t'
This bundle command is meant to generate a bundle1, we enforce that to avoid
test's misbehavior when moving to general-delta by default.
Ryan McElroy <rmcelroy@fb.com> [Sat, 17 Oct 2015 15:48:14 -0700] rev 26771
editmerge: properly quote variables
Previously, files with spaces would break editmerge.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:09:58 -0700] rev 26770
commands.resolve: print out warning when only driver-resolved files remain
'hg resolve --all' will be the canonical way to run the 'conclude' step of the
merge driver.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:06:29 -0700] rev 26769
merge.mergestate: set merge driver state to 's' if there's none present
This allows mergestate.mdstate() to return 's' if there's nothing to be done on
the merge driver end.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:04:46 -0700] rev 26768
merge.mergestate: only check for merge driver when property is accessed
Otherwise 'hg update --clean', 'hg rebase --abort' etc wouldn't work.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 01:02:32 -0700] rev 26767
localrepo.commit: abort if merge driver's conclude step hasn't been run yet
This case also requires 'hg resolve --all' to be run before continuing.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 00:57:56 -0700] rev 26766
merge.mergestate: add a way to get the merge driver state
This will be useful to check what the status of the merge driver is.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 00:49:07 -0700] rev 26765
merge.mergestate: add a way to get the other side of the merge
It's surprising there was no API at all for this until now. In any case this
will be needed from custom merge drivers.
Siddharth Agarwal <sid0@fb.com> [Thu, 15 Oct 2015 00:45:20 -0700] rev 26764
commands.resolve: support printing out driver-resolved files
There's no user-visible way to mark files as driver-resolved, so this status
won't be visible.
Durham Goode <durham@fb.com> [Sat, 17 Oct 2015 12:32:23 -0700] rev 26763
histedit: make histedit prune when obsolete is enabled
Back in June we made histedit use obsolete markers to cleanup when possible.
This was rolled back as part of 54f9561088c7 (which should have only rolled back
the --abort stuff, but rolled back everything). This caused a nasty bug when
used in conjuction with the inhibit+directaccess extensions where histedit would
leave old nodes around even after they had been squashed away.
The root of the problem is that we first clean up old nodes, and then we clean
up temp nodes. In the first pass, when we obsoleted old nodes, some would become
unobsolete because they had temp nodes on top of them, thus making them stick
around even after the histedit finished.
The fix is to A) move the temp node cleanup to be before the old node cleanup
(since they are topological on top of the old nodes), and B) use obsolete
markers instead of stripping.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 17 Oct 2015 11:23:54 -0700] rev 26762
clonebundles: rewrite documentation
There are a lot of considerations server operators need to know before
deploying clone bundles. They should be documented. So I rewrote the
extension docs to contain this information.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 17 Oct 2015 11:37:08 -0700] rev 26761
exchange: support streaming clone bundles in clone bundles
Now that we have support for detecting compatible stream clone bundles
in bundle specifications, we can safely add support for applying stream
clone bundles to the clone bundles feature.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 17 Oct 2015 10:26:34 -0700] rev 26760
exchange: parse requirements from stream clone specification string
Stream clone bundles can only be consumed if the consumer supports the
exact format requirements that were present on the producer.
This patch adds support for encoding and verifying the format
requirements on the bundle specification string for a stream clone
bundle are supported by the local repository. If they aren't, we raise
an UnsupportedBundleSpecification, just like we do when an unknown
compression or bundle type is encountered.
The impetus for this patch is so the clone bundles manifest can
advertise stream clone bundles and so clients can filter out stream
clones with unsupported format requirements. e.g. a stream clone
produced with the not-yet-invented "revlogv2" format will be ignored by
clients that only support "revlogv1."
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 14 Oct 2015 17:00:34 -0700] rev 26759
exchange: support parameters in bundle specification strings
Sometimes a basic type string is not sufficient for representing the
contents of a bundle. Take bundle2 for example: future bundle2 files may
contain parts that today's bundle2 parser can't read. Another example is
stream clone data. These require clients to support specific
repository formats or they won't be able to read the written files. In
both scenarios, we need to describe additional metadata beyond the outer
container type. Furthermore, this metadata behaves more like an
unordered set, so an order-based declaration format (such as static
strings) is not sufficient.
We introduce support for "parameters" into the bundle specification
string. These are essentially key-value pairs that can be used to encode
additional metadata about the bundle.
Semicolons are used as the delimiter partially to increase similarity to
MIME parameter values (see RFC 2231) and because they are relatively
safe from the command line (although values will need quotes to avoid
interpretation as multiple shell commands). Alternatives considered were
spaces (a bit annoying to encode) and '&' (similar to URL query strings)
(which will do bad things in a shell if unquoted).
The parsing function now returns a dict of parsed parameters and
consumers have been updated accordingly.