Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Mar 2019 11:23:09 +0100] rev 4447
branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 25 Mar 2019 15:45:11 -0700] rev 4446
touch: use action "touch", not "<function touch at ...>", in precheck
I just got this message:
abort: cannot <function touch at 0x7fde174b69b0> public changesets: f177c51ae98f
It has been this way since 1b7b9acda2a9 (touch: use precheck to
validate revision, 2017-07-23).
Martin von Zweigbergk <martinvonz@google.com> [Mon, 25 Mar 2019 15:44:44 -0700] rev 4445
prune: use action "prune", not "touch", in precheck
We have been using "touch" since 06ee4ec88190 (prune: use precheck to
validate revision, 2017-07-23). That commit modified the tests, so it
kind seemed intentional, but I suspect it was still just an oversight.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 24 Mar 2019 21:30:12 +0530] rev 4444
evolve: test a common case of public divergence
evolve: in pubdiv, handle the case when public branch is behind the mutable
In public divergence, when public branch is behind the mutable one the behaviour
that this patch added is that we relocate the draft one to public side.
This should be fine in most case, but might be an issue in some other (eg, when
the draft side of the divergence is rebase away from ancestors it relies on.)
Test written by Pierre-Yves David <pierre-yves.david@octobus.net>
Sushil khanchi <sushilkhanchi97@gmail.com> [Sun, 24 Mar 2019 21:29:44 +0530] rev 4443
evolve: add condition in case of pubdiv to not swap the two div csets
In public divergence, we have pinned the public cset to the local side
when merge is performed. And in divergence resolution implementation
divergent cset is the one who is kept at the local side, so to say this
in one line: we have pinned public cset to the divergent side.
However, in some cases we need to swap the "divergent" and "other"
but we can't swap them in case of public divergence as thought would
cause an error because of not being able to relocate public cset.
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 23 Mar 2019 02:10:31 +0530] rev 4442
evolve: add logic to handle a particular case in divergence resolution
Case is: In content divergence, to check if the two csets are on different
parent or same parent what we do is find gca of the two csets and then
compare it with the singlesuccessors of two csets's parents.
Now, if gca is same as singlesuccessors of both the csets then we conclude
that both are on the same parent which is not totally correct as it is
possible that both the parents of two csets are obsolete with a single
successor.
This patch adds the logic to cover the above metioned case correctly,
deciding the part when we need to relocate a cset to other side while
resolving the stack of divergent csets.
Changes in test file demonstrate that before this patch we were not
doing it right because it should have relocated every node to other side
instead of just relocating the first one from the stack.
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 22 Mar 2019 00:16:44 +0530] rev 4441
evolve: add a test reflecting wrong behaviour of content-div resolution
This patch shows that currently the case when stack of divergent csets
have different parents is not handled correctly.
For a stack of csets which has different parent, right behaviour is to
relocate every node before performing merge but present implementation
only relocate first cset in the stack and skip relocation for the rest
of csets, this is not what we expect it to do.
Next patch will be about fixing this issue.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 22 Mar 2019 09:45:07 -0700] rev 4440
compat: add support for new arg name in memfilectx.__init__
This makes us compatible with 550a172a603b (memctx: rename constructor
argument "copied" to "copysource" (API), 2019-03-19).
Sushil khanchi <sushilkhanchi97@gmail.com> [Wed, 13 Mar 2019 17:32:14 +0530] rev 4439
evolve: preserve compatibility for hg < 4.8 versions
This patch make sure evolve don't break if user using a version of
hg before this 7694b685bb10 patch on hg-committed.
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 09 Mar 2019 19:25:34 +0530] rev 4438
evolve: warn user if cset desc is being lost
In public divergence when merging results in same as public cset,
we only create markers to solve the divergence i.e. [(public, (other,))]
In this case if other cset had a desc which was different from public
that will be lost.
So this print out a warning message to user that desc of non-public
cset is being lost.
Changes in test files reflect the added behaviour.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Mar 2019 18:00:08 +0100] rev 4437
changelog: mention latest improvement
Anton Shestakov <av6@dwimlabs.net> [Sun, 10 Mar 2019 18:50:00 +0800] rev 4436
stack: make @ (current) more important than $ (some sort of unstable)
Base is still ^ even if it's currently checked out.
Anton Shestakov <av6@dwimlabs.net> [Sat, 09 Mar 2019 13:13:53 +0800] rev 4435
stack: show content and phase divergent state and symbol
Replacing ' ' with '-' is just for color labels.
Anton Shestakov <av6@dwimlabs.net> [Sat, 09 Mar 2019 12:54:00 +0800] rev 4434
stack: handle external-children just like other states
This also fixes color labels: previously when external-children was combined
with another state, --color=debug would show something like:
[topic.stack.index topic.stack.index.current - external-children|s4]
Now there is a separate label for each state.
Anton Shestakov <av6@dwimlabs.net> [Thu, 07 Mar 2019 22:50:56 +0800] rev 4433
stack: optimize revset used for stack --children
Since that option needs to exclude changesets on the current stack, let's just
use stack.revs (that are cached) for that and skip branch() or topic() revset.
st.revs[0] is the stack base, we don't consider it actual part of stack.
Anton Shestakov <av6@dwimlabs.net> [Thu, 07 Mar 2019 19:13:45 +0800] rev 4432
stack: rename unstable -> orphan
That's the only instability stack can currently show, but it's about to show
more and showing "unstable" for one type of instability just isn't good.
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Mar 2019 21:47:08 +0800] rev 4431
evolvecmd: compatibility with older geteffectflag() that took a tuple
Before bae6f1418a95 the function took a tuple of 2 arguments instead of these 2
arguments directly.
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Mar 2019 21:42:32 +0800] rev 4430
obshistory: remove unused geteffectflag(), it's been in core since 4.4
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Mar 2019 16:56:25 +0800] rev 4429
compat: remove old vocabulary change fallbacks
Mercurial 4.4 (minimal hg version evolve currently supports) already uses the
new names and in fact has deprecation warnings saying that 4.4 is the last
version of Mercurial to support the old names.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Mar 2019 10:51:48 +0100] rev 4428
branching: merge with stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 07 Mar 2019 01:57:43 +0530] rev 4427
evolve: fix a typo from directory to dirty
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 07 Mar 2019 01:47:14 +0530] rev 4426
evolve: fix the dirstate after setting parents with dirty wdir (issue5930)
Before this patch, during an interrupted evolve it can be confused
about copies. This patch fix the dirstate when parents are changed
using dirstate.setparents() with a dirty wdir.
Changes in test file reflect the fixed behaviour.
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 07 Mar 2019 01:02:05 +0530] rev 4425
evolve: add tests which shows evolve can get confused about copies (issue5930)
This test demonstrate that an interrupted evolve can get confused about
copies. Next patch will fix this.
Sushil khanchi <sushilkhanchi97@gmail.com> [Tue, 05 Mar 2019 21:15:05 +0530] rev 4424
test: include some documentation to describe the case briefly
Sushil khanchi <sushilkhanchi97@gmail.com> [Tue, 05 Mar 2019 20:07:23 +0530] rev 4423
split: use ui.configoverride to preserve phase while commiting
As we need to preserve the phase of revision which is going to be
splitted into multiple revision. This patch use ui.configoverrides
to temporarily overwrite the phases.new-commit config option at the
time of committing a new node.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Mar 2019 12:30:15 +0100] rev 4422
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Mar 2019 11:54:49 +0100] rev 4421
changelog: add entries for the recent fixes
Sushil khanchi <sushilkhanchi97@gmail.com> [Mon, 04 Mar 2019 03:16:51 +0530] rev 4420
evolve: make sure user can recover from conflict (issue6053)
we make sure while continuing interrupted evolve it reach to right code
This patch fix the issue6053 which is about falling evolve into unrecoverable
state and this is how it call fall into it:
If after some rewrite operations we reach to a point where resparent for
two content divergent csets is obsolete and we hit a conflict in
relocation, so now if you run `hg evolve --continue` after resolving
the conflict: code execution would check if wdir parent is obsolete
and run solveobswdp() rather than going to continueevolve() part
and there we will hit by a "abort: outstanding uncommitted merge"
And same for `--abort` or `--stop` flags.
Changes in tests reflect the fixed behaviour.
Sushil khanchi <sushilkhanchi97@gmail.com> [Mon, 04 Mar 2019 02:55:38 +0530] rev 4419
evolve: add test which shows unrecoverable evolve state (issue6053)
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 02 Mar 2019 02:34:29 +0530] rev 4418
evolve: add a test in pubdiv where only merging leads to conflict
Added a test in public divergence where both the cset are on the different
parent and no conflict in relocation but in merging.
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 28 Feb 2019 03:12:39 +0530] rev 4417
evolve: cover continue case in pubdiv when merging results in same as public
This patch is the part of a series which is adding support of public
divergence resolution of the case when merging results in same as pubic
cset. Changes made in this patch cover the --continue flag for the case:
when we had conflicts in merging.
Modified lines in previously added tests reflects the changed behaviour.
Also added some additional tests. I guess I have covered every possbile
case in test-evolve-public-content-divergent.t
While reviewing, if you see any test missed please let me know.
(I think there is one test missed that I will send as a follow-up)
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 22 Feb 2019 01:02:51 +0530] rev 4416
evolve: handle a case in pubic-div when merging results in same as public
In public divergence resolution, what we do is:
1) first apply content divergence resolution
2) then phase divergent resolution on resultant node of 1) case
While doing case 1 it is possible that result of merging the two csets
would have same changes as public one contains. And then processing
the case 2 would create an empty commit which is not something we want
to do.
So this patch catch that same case when merging results in same as public
cset and don't create a new node, instead to solve the divergence
it just add a obsmarker from "other divergent" to "public divergent"
i.e. [other, (public,)]
Next patch will add the continue case handling for this same case.
This patch also adds the tests for the different cases which are possible
for the above mentioned case.
There is test for continue case too which is broken in this patch
and will be fixed in next patch.
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 28 Feb 2019 02:08:58 +0530] rev 4415
evolve: rename npublicdiv to publicnode
In next patches it would make more sense to use publicnode
instead of npublicdiv.
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 28 Feb 2019 02:02:18 +0530] rev 4414
evolve: in pubdiv resolution make sure that transaction get closed
Before this patch it could be possible that transaction won't get
closed if res is False in the pubic divergence resolution when
continuing the hg evolve.
Sushil khanchi <sushilkhanchi97@gmail.com> [Mon, 25 Feb 2019 22:50:24 +0530] rev 4413
evolve: pin the public cset to local side in merging when solving public div
While working on public divergence, I think it would be better to pin
the public cset to local side of merge for understanding and handling
the future cases without any ambiguity.
Changes in tests reflect the changed behaviour.
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 23 Feb 2019 00:47:14 +0530] rev 4412
evolve: add tests of relocation case in public divergence
These tests cover the cases when "other" is behind the "public"
one and we would have to relocate "other" here. It covers
all the conflicting and non-conflicting cases.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 03 Mar 2019 16:29:32 +0100] rev 4411
branching: merge with stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 02 Mar 2019 01:43:14 +0530] rev 4410
split: make sure hg split preserve the phase of splitting cset (issue6048)
Before this patch, while splitting we were not taking the phase
of splitting cset into account. By default new commits would
have draft changes. As we know there can two possible phases
i.e draft and secret in rewriting csets thing, so this adds
the handling of secret phase (as default is draft)
Changes in test file reflect the added behaviour.
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 02 Mar 2019 01:37:04 +0530] rev 4409
split: add tests which demonstrate the issue6048
Next patch will fix this issue.
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 22 Feb 2019 21:01:06 +0530] rev 4408
evolve: fix the broken behaviour on div resolution in relocation case
In content divergence resolution, I see that when "relocationreq" is
True which means both the cset are on different parent and relocation
is required. In this case when "divergent" is the one who is behind
the "other" cset in DAG, we swap them. At this point one thing we
missed is to update the evolvestate['divergent'].
Because of this in continue case we didn't get the right value
of obsmarkers creation.
In this patch I added the code to update the evolvestate when we swap
them.
Now as we know "divergent" and "other" can be swapped in some cases,
it is better to store the intial divergent separately in evolvestate
which is evolvestate['orig-divergent'] and later this value is used
to update the evolvestate['replacements'] which is the track of
revisions which has been resolved.
Changes in tests demonstrate the fixed behaviour.
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 22 Feb 2019 23:49:37 +0530] rev 4407
evolve: change in a test which demonstrate divergence resolution can break
This patch just add "--any" flag to "hg evolve --content-divergent" in
a test and changed output reflect that there is something which is not
handled correctly.
After looking into code I found that it is because of using a evolvestate
value which is not updated i.e evolvestate['divergent']
Next patch will fix this problem.
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 22 Feb 2019 23:57:18 +0530] rev 4406
tests: update the title of a test as it's not what it says
I see that this test has conflict in relocation and in merging also.
We do have a test for the case when only relocation leads to conflict.
Anton Shestakov <av6@dwimlabs.net> [Wed, 13 Feb 2019 21:56:29 +0800] rev 4405
obsexchange: avoid importing io/StringIO module with a different name
Since we're not interested in the whole module, let's shorten the imports and
aviod the lint warnings.
Otherwise pep8-naming complains:
- import io as StringIO: N812 lowercase imported as non lowercase
- import StringIO as io: N813 camelcase imported as lowercase
Anton Shestakov <av6@dwimlabs.net> [Wed, 13 Feb 2019 21:56:05 +0800] rev 4404
evolve: remove unused StringIO import
Anton Shestakov <av6@dwimlabs.net> [Wed, 13 Feb 2019 21:39:10 +0800] rev 4403
evolve: unindent some lines caught by flake8
The message was: "E117 over-indented".
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Feb 2019 12:46:57 +0100] rev 4402
branching: overwrite broken merge with a correct one
Thanks goes to Anton Shestakov for spotting and fixing this.
Anton Shestakov <av6@dwimlabs.net> [Wed, 13 Feb 2019 19:18:17 +0800] rev 4401
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 12 Feb 2019 15:03:14 +0100] rev 4400
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 11 Feb 2019 21:33:02 +0800] rev 4399
obshistory: omit keyword arguments with default values in patch.diffui() calls
d4c9eebdd72d made that function not take "relroot" and "prefix" anymore, and
instead expect "pathfn". These two chunks of code in this patch simply generate
patches for obslog -p and they broke because they tried to provide default
values for "prefix" and "relroot" for no apparent reason (and also for
"changes"). Let's instead rely on defaults of patch.diffui().
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Feb 2019 17:52:49 +0100] rev 4398
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Feb 2019 10:21:09 +0100] rev 4397
test: wider another time matching in prev/next lock testing
There does not seems to be a reasons for specifically matching 4-6 seconds.
Wider matching will avoid intermittent failure.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Feb 2019 09:29:54 +0100] rev 4396
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Feb 2019 09:26:48 +0100] rev 4395
test: wider time matching in prev/next lock testing
There does not seems to be a reasons for specifically matching 4-6 seconds.
Wider matching will avoid intermittent failure.
Martijn Pieters <mj@octobus.net> [Wed, 21 Nov 2018 12:00:46 +0000] rev 4394
topic: make topics compatible with branchmap refactor
See https://phab.mercurial-scm.org/D5290
Martin von Zweigbergk <martinvonz@google.com> [Wed, 30 Jan 2019 10:03:00 -0800] rev 4393
prompts: use 1-indexing in revselectionprompt()
The consumer is generally a human, not a computer. I've made the
mistake of entering "1" instead of "0" a few times myself.
Anton Shestakov <av6@dwimlabs.net> [Thu, 07 Feb 2019 16:24:59 +0800] rev 4392
test-split: split now ignores diff.* settings
From 66399f2e92aa: "It is assumed by the author that the `[diff]` section is
primarily for *viewing* diffs, and that it is unlikely what people intend when
attempting to commit or revert."