Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 23:18:27 -0400] rev 21133
bundle2: include stderr when capturing handlers output
We do not discriminate between stdout and stderr yet. But this will do for now.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 23:36:57 -0400] rev 21132
ui: pushbuffer can now also capture stderr
We need an easy way to capture both stderr and stdout during bundle2 processing
of a remote bundle. This changeset adds simple changes to the `ui` class to make
this possible.
I expect the interface to change in future releases as bundle2 will probably want to
distinguish stdout and stderr. The current change will, however, do for now.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 14:22:24 -0400] rev 21131
bundle2: capture remote stdout while unbundling
When a reply is built, the bundle processing will capture the output of each
handler and sends it to the client in a dedicated part.
As a side effect, this add a "remote: " prefix to destination output on local
push. This is considered okay for now as:
1. bundle2 is still experimental,
2. Matt said he could be okay to change output for bundle2,
3. This keeps the implementation simple.
This changeset does it for stdout only. stderr will be done in a future changeset.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 14:09:35 -0400] rev 21130
bundle2: introduce `replycaps` part for on-demand reply
The bundle2 processing does not create a bundle2 reply by default anymore. It
is only done if the client requests it with a `replycaps` part. This part is
called `replycaps` as it will eventually contain data about which bundle2
capabilities are supported by the client.
We have to add a flag to the test command to control whether a reply is
generated or not.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 16 Apr 2014 18:41:48 -0400] rev 21129
bundle2: use an official iterparts method to unbundle parts
Explicit is better than implicit.
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Feb 2014 02:52:32 +0100] rev 21128
merge: with merge.preferancestor=*, run an auction with bids from ancestors
The basic idea is to do the merge planning with all the available ancestors,
consider the resulting actions as "bids", make an "auction" and
automatically pick the most favourable action for each file.
This implements the basic functionality and will only consider "keep" and
"get" actions. The heuristics for picking the best action can be tweaked later
on.
By default it will only pass ctx.ancestor as the single ancestor to
calculateupdates. The code path for merging with a single ancestor is not
changed.
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 28 Feb 2014 15:10:56 -0800] rev 21127
log: changed implementation to use graphlog code
Now that revsets work in a lazy way, log code can be changed to parse every
option into a revset and then evaluate it lazily.
Now expressions like
"hg log -b default -b ."
are converted into a revset using the same code as graphlog.
Mads Kiilerich <madski@unity3d.com> [Mon, 24 Feb 2014 22:42:14 +0100] rev 21126
context: introduce merge.preferancestor for controlling which ancestor to pick
Multiple revisions can be specified in merge.preferancestor, separated by
whitespace. First match wins.
This makes it possible to overrule the default of picking the common ancestor
with the lowest hash value among the "best" (introduced in
3605d4e7e618).
This can for instance help with some merges where the 'wrong' ancestor is used.
There will thus be some overlap between this and the problems that can be
solved with a future 'consensus merge'.
Mercurial will show a note like
note: using
40663881a6dd as ancestor of
3b08d01b0ab5 and
adfe50279922
alternatively, use --config merge.preferancestor=
0f6b37dbe527
when the option is available, listing all the alternative ancestors.
Mads Kiilerich <madski@unity3d.com> [Thu, 17 Apr 2014 17:32:04 +0200] rev 21125
context: tell when .ancestor picks one of multiple common ancestors heads
Show a message like
note: using
0f6b37dbe527 as ancestor of
adfe50279922 and
cf89f02107e5
So far this is just a warning - there is nothing the user can do to select
another ancestor.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 17 Apr 2014 09:36:09 +0900] rev 21124
hgweb: align entries in "changelog" and "revisions" pages of "spartan" style
Before this patch, each log entries in "changelog" and "revisions"
pages of "spartan" style are not aligned by column, because:
- each log entries are separated "<table>" entries, and
- there are no fixed "width" information for each "<th>"/"<td>" entries
This patch aligns entries in "changelog" and "revisions" pages of
"spartan" style by:
- adding 'label' class to '<th>' for 'age' information, and
- setting 'width' of '<th class="label">' with fixed size
'class="age"' is not used for this purpose, because it is also used to
set "bold" font-weight
"16em" seems to be wide enough to show date information fully, when
web browser disables (or doesn't support) javascript.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 17 Apr 2014 09:36:09 +0900] rev 21123
hgweb: show revisions and hashes gotten from changelog in "comparison" page
Before this patch, revision numbers and hash values in "comparison"
page are gotten from not changelog but filelog.
Such filelog information is useful only for hgweb debugging, and may
confuse users.
This patch shows revision numbers and hash values gotten from
changelog in "comparison" page.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 17 Apr 2014 09:36:08 +0900] rev 21122
hgweb: show as same parents as "hg parents -r REV FILE" in pages for file
Before this patch, "parents" in pages for file doesn't show as same
parents as "hg parents -r REV FILE", when the specified file is not
modified in the specified revision.
For example, it is assumed that revision A, B and D change file "f".
changelog (A) ---> (B) ---> (C) ---> (D)
filelog "f" (x) ---> (y) ------------> (z)
"/file/D/f" invokes "webutil.parents()" with filectx(z) gotten from
changectx(D), and it returns changectx(B). This is as same result as
"hg parents -r D f".
In the other hand, "/file/C/f" invokes "webutil.parents()" with
filectx(y') gotten from changectx(C), and it returns changectx(A),
because filectx(y') is linked to changectx(B), and works like
filectx(y) in some cases.
In this case, revision B is hidden from users browsing file "f" in
revision C.
This patch shows as same parents as "hg parents -r REV FILE" in pages
for file, by making "webutil.parents()" return:
- "linkrev()"-ed revision only, if:
- specified context instance is "filectx" (because
"webutil.parents()" is invoked with changectx, too), and
- (1) the revision from which filectx is gotten and (2) the one to
which filectx is linked are different from each other
- revision gotten from "ctx.parents()", otherwise