Siddharth Agarwal <sid0@fb.com> [Tue, 12 Jan 2016 18:17:07 -0800] rev 27741
merge: determine what untracked conflicts cause warns and aborts separately
This is written in a somewhat weird style, but it's designed for code reuse in
an upcoming patch.
Siddharth Agarwal <sid0@fb.com> [Tue, 12 Jan 2016 18:12:35 -0800] rev 27740
merge: factor out code to get checkunknown config
We're going to reuse this code shortly.
Mateusz Kwapich <mitrandir@fb.com> [Tue, 05 Jan 2016 17:37:59 -0800] rev 27739
hooks: add HG_NODE_LAST to txnclose and changegroup hook environments
Sometimes a txnclose or changegroup hook wants to iterate through all
the changesets in transaction: in that situation usually the revset
`$HG_NODE:` is used to select the revisions. Unfortunately this revset
sometimes may contain too many changesets because we don't have the
write lock while the hook runs newer changes may be added to
repository in the meantime.
That's why there is a need for extra variable carrying the information about
the last change in the transaction.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 08 Jan 2016 10:58:04 -0800] rev 27738
exchange: make clone bundles non-experimental and enabled by default
The clone bundles feature was introduced in Mercurial 3.6 behind an
experimental and disabled by default flag. The feature has been enabled
on hg.mozilla.org for a few months and has served many terabytes of
clones. Users have been encouraged to use the feature and reception
has been very positive (mainly due to faster clones as a result of
connecting to a CDN). I have heard no feedback about changing the
feature other than inquiries about when it will be enabled by default.
So, I think the feature is ready to be enabled by default.
This patch renames experimental.clonebundles to ui.clonebundles,
documents the option, and enables it by default. References to the
experimental state of clone bundles have been removed. The remaining
config option docs in clonebundles.py have been removed because they
are redudant with `hg help config`.
There are some oddities with behavior of clone bundles. Because clones
with clone bundles are effectively 2 `hg pull` operations, there may be
2 transactions. This could result in hooks running twice. If the
subsequent pull is aborted, it could result in partial rollback and an
incomplete clone. This behavior is a bit wonky and should probably
be documented. If this patch is accepted, I'll send a follow-up to
document it. I don't think this behavior should prevent the feature
being enabled by default. Reworking the clone mechanism to support
interrupted or multi-part clones feels like a major new feature and
something that when implemented can change the hook and rollback
semantics of clone bundles. Besides, partial clone is better than
full rollback and hooks running on initial clone are likely rare, so I
think the impact is minimal.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 08 Jan 2016 10:57:01 -0800] rev 27737
exchange: make clonebundleprefers non-experimental
In preparation for making the feature enabled by default.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 08 Jan 2016 10:53:07 -0800] rev 27736
clonebundles: remove advertisement of feature
I screwed up.
When clone bundles is enabled on the server and a compatible client
without the feature enabled clones, the server sends down an
advertisement saying to enable the feature. The server creates the
message which is printed verbatim on the client as an "output" part.
There are 2 problems:
1) The message doesn't respect the client's localization
2) The message contains a reference to the "experimental.clonebundles"
option.
Since clone bundles is about to be marked as non-experimental and the
goal of the advertisement was to encourage clients to test the
experimental feature, let's just remove the broken advertisement since
it no longer serves a purpose.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2016 21:14:08 -0800] rev 27735
changegroup: remove now-unused 'wasempty' variable and parameter
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2016 21:13:06 -0800] rev 27734
treemanifests: set bundle2 part parameter indicating treemanifest
By adding a mandatory 'treemanifest' parameter in the bundle2 part, we
make it possible for the recipient to set repo requirements before the
manifest revlog is accessed.
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 20:05:18 +0000] rev 27733
docchecker: scan for missing space before :hg:
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 19:57:29 +0000] rev 27732
tests: run docchecker in gendoc.t
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 19:49:53 +0000] rev 27731
tests: move gendoc.t runrst comment next to runrst
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 19:47:14 +0000] rev 27730
docchecker: introduce a way to check for poor markup
Specifically, :hg:`foo 'bar baz'` when rendered by `hg help`
results in:
'hg foo 'bar baz''
... which is hard to read.
We encourage :hg:`foo "bar baz"` instead.
timeless <timeless@mozdev.org> [Tue, 12 Jan 2016 06:03:36 +0000] rev 27729
minirst: change hgrole to use single quotes
We decided to reserve double quotes for arguments to hg because cmd
does not like single quotes, so switch the outer quotes to single
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 22:09:57 +0900] rev 27728
paths: port to generic templater
Embedded passwords are masked only in plain output because we'll want raw
values in machine-readable format such as JSON. For custom template, we can
add a filter to mask passwords (e.g. "{url|hidepassword}").
path.rawloc field is called as "url" than "path" because we have "pushurl"
sub-option. Also, "name" and "url" are not allowed as sub-options as they
conflict with the field names.
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 23:01:19 +0900] rev 27727
paths: merge conditions that select visibility of fields
Truth table (extracted from the original implementation):
search quiet name path subopt
------ ----- ---- ---- ------
f f T T T
f T T f f
T f f T f
T T f f f
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 22:02:32 +0900] rev 27726
paths: use single loop for both search=None|pattern cases
This will help porting to the formatter API. This patch adds test for empty
pathitems to make sure "hg paths" never say "not found!".
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 21:55:57 +0900] rev 27725
paths: reorder else clause for readability of subsequent patches
This prepares for porting to the formatter API. Future patches will use a
single loop to handle both search=None|pattern cases because formatter output
should be the same. "pathitems" will be switched instead.
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 21:54:00 +0900] rev 27724
paths: drop ui.status label from output of "hg paths name"
We just need to not print path if --quiet. ui.status label is unwanted.
Sean Farley <sean@farley.io> [Wed, 06 Jan 2016 11:01:55 -0800] rev 27723
unionrepo: fix wrong rev being checked in iscensored (issue5024)
Matt Harbison <matt_harbison@yahoo.com> [Mon, 11 Jan 2016 21:00:29 -0500] rev 27722
summary: print unstable, bumped and divergent as unconditionally plural
This aligns with the unconditional plural output for the update line contents,
as well as the incoming/outgoing bookmarks line. It also matches the message
in evolve's summary hook as of 4f83b2d2d20d. (Though I thought this was removed
recently?)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 11 Jan 2016 18:16:38 -0800] rev 27721
debugshell: disable demand importer when importing debugger
For reasons I can't explain (but likely have something to do with a
combination of __import__ inferring default values for arguments and
the demand importer mechanism further assuming defaults), the demand
importer isn't playing well with IPython. Without this patch, we get
a failure "ValueError: Attempted relative import in non-package" when
attempting to import "IPython." The stack has numerous demandimport
calls on it and adding "IPython" to the exclude list in demandimport
isn't enough to make the problem go away, which means the issue is
likely somewhere in the bowells of IPython. It's easier to just disable
the demand importer when importing the debugger.
Martin von Zweigbergk <martinvonz@google.com> [Mon, 04 Jan 2016 10:13:29 -0800] rev 27720
status: change + back out == clean (API)
After backing out a change, so the file contents is equal to a
previous revision of itself, we currently report the status between
the two equal revisions as modified. This is because
context._buildstatus() reports any file whose new nodeid is not equal
to _newnode as modified. That magic nodeid is given only to files
added or modified in the working directory, so any file whose nodeid
has changed between two revisions will be reported as modified.
Fix by simply comparing the file contents for all cases where the
nodeid changed, whether they are in the working copy or committed.
Marking with (API) as it subtly changes the semantics of the method.
Martin von Zweigbergk <martinvonz@google.com> [Sat, 09 Jan 2016 22:58:10 -0800] rev 27719
convert: use manifest.diff() instead of ctx.status()
mercurial_source.getchanges() seems to care about files whose nodeid
has changed even if their contents has not (i.e. it has been
reverted/backed out). The method uses ctx1.status(ctx2) to find
differencing files. However, that method is currently broken and
reports reverted changes as modified. In order to fix that method, we
first need to rewrite getchanges() using manifest.diff(), which does
report reverted files as modified (because it's about differences in
the manifest, so about nodeids).
Martin von Zweigbergk <martinvonz@google.com> [Sun, 10 Jan 2016 21:07:34 -0800] rev 27718
convert: replace cache of (m,a,r) by (ma,r)
The next commit will rewrite the way we find changes between two
manifests. By making the cache not care about the difference between
added and modified files, we don't require the rewritten code to care
about that difference either. Also extract the call to ctx.status() to
simplify the next commit.
Martin von Zweigbergk <martinvonz@google.com> [Sat, 09 Jan 2016 21:42:48 -0800] rev 27717
convert: use _ prefix for private methods in hg sink
This makes it clearer which methods are part of the interface defined
by the superclass.
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 17:18:18 +0000] rev 27716
children: update help with replacement
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 17:17:49 +0000] rev 27715
graphlog: update help with replacement
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 06:36:47 +0000] rev 27714
histedit: clarify modes
also fix terse command syntax
timeless <timeless@mozdev.org> [Tue, 22 Dec 2015 23:21:53 +0000] rev 27713
histedit: explain basics of histedit commands
This should be hooked into @action via an extended
help argument, but that is future work.
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 07:37:45 +0000] rev 27712
histedit: report the unacceptable changeset
Mike Hommey <mh@glandium.org> [Mon, 11 Jan 2016 22:00:07 -0500] rev 27711
mdiff: don't emit a diff header for empty trivial deltas
An empty trivial delta, coded as (0, 0, 0) makes the delta application
do nothing, but still takes 12 bytes, while skipping it altogether works
as much, without taking any space at all.
Bryan O'Sullivan <bos@serpentine.com> [Mon, 11 Jan 2016 09:49:48 -0800] rev 27710
commands: get rid of empty try/finally block from _dograft
This diff is purely an indentation change to clean up a block that
was kept in place to make 77995317b374 easier to read.