Mercurial > hg
annotate tests/test-log-exthook.t @ 42050:03f6480bfdda
unshelve: disable unshelve during merge (issue5123)
As stated in the issue5123, unshelve can destroy the second parent of
the context when tried to unshelve with an uncommitted merge. This
patch makes unshelve to abort when called with an uncommitted merge.
See how shelve.mergefiles works. Commit structure looks like this:
```
... -> pctx -> tmpwctx -> shelvectx
/
/
second
merge parent
pctx = parent before merging working context(first merge parent)
tmpwctx = commited working directory after merge(with two parents)
shelvectx = shelved context
```
shelve.mergefiles first updates to pctx then it reverts shelvectx to pctx with:
```
cmdutil.revert(ui, repo, shelvectx, repo.dirstate.parents(),
*pathtofiles(repo, files),
**{'no_backup': True})
```
Reverting tmpwctx files that were merged from second parent to pctx makes them
added because they are not in pctx.
Changing this revert operation is crucial to restore parents after unshelve.
This is a complicated issue as this is not fixing a regression. Thus, for the
time being, unshelve during an uncommitted merge can be aborted.
(Details taken from http://mercurial.808500.n3.nabble.com/PATCH-V3-shelve-restore-parents-after-unshelve-issue5123-tt4036858.html#a4037408)
Differential Revision: https://phab.mercurial-scm.org/D6169
author | Navaneeth Suresh <navaneeths1998@gmail.com> |
---|---|
date | Mon, 25 Mar 2019 12:33:41 +0530 |
parents | 005bc856e919 |
children | 42d2b31cee0b |
rev | line source |
---|---|
33154
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
1 Test hg log changeset printer external hook |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
2 ------------------------------------------- |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
3 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
4 $ cat > $TESTTMP/logexthook.py <<EOF |
33964
bfafd189edd9
tests: update test-log-exthook to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33154
diff
changeset
|
5 > from __future__ import absolute_import |
39657
2b9f315a4217
py3: use codecs.encode() to encode in rot-13 encoding
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
35888
diff
changeset
|
6 > import codecs |
33964
bfafd189edd9
tests: update test-log-exthook to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33154
diff
changeset
|
7 > from mercurial import ( |
bfafd189edd9
tests: update test-log-exthook to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33154
diff
changeset
|
8 > commands, |
35888
c8e2d6ed1f9e
cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents:
33964
diff
changeset
|
9 > logcmdutil, |
33964
bfafd189edd9
tests: update test-log-exthook to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33154
diff
changeset
|
10 > repair, |
bfafd189edd9
tests: update test-log-exthook to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33154
diff
changeset
|
11 > ) |
40441
005bc856e919
py3: port test-log-exthook.t to Python 3
Augie Fackler <augie@google.com>
parents:
39657
diff
changeset
|
12 > def brot13(b): |
005bc856e919
py3: port test-log-exthook.t to Python 3
Augie Fackler <augie@google.com>
parents:
39657
diff
changeset
|
13 > return codecs.encode(b.decode('utf8'), 'rot-13').encode('utf8') |
33154
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
14 > def rot13description(self, ctx): |
40441
005bc856e919
py3: port test-log-exthook.t to Python 3
Augie Fackler <augie@google.com>
parents:
39657
diff
changeset
|
15 > description = ctx.description().strip().splitlines()[0] |
005bc856e919
py3: port test-log-exthook.t to Python 3
Augie Fackler <augie@google.com>
parents:
39657
diff
changeset
|
16 > self.ui.write(b"%s: %s\n" % (brot13(b"summary"), |
005bc856e919
py3: port test-log-exthook.t to Python 3
Augie Fackler <augie@google.com>
parents:
39657
diff
changeset
|
17 > brot13(description))) |
33154
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
18 > def reposetup(ui, repo): |
35888
c8e2d6ed1f9e
cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents:
33964
diff
changeset
|
19 > logcmdutil.changesetprinter._exthook = rot13description |
33154
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
20 > EOF |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
21 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
22 Prepare the repository |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
23 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
24 $ hg init empty |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
25 $ cd empty |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
26 $ touch ROOT |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
27 $ hg commit -A -m "Root" ROOT |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
28 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
29 $ touch a b c |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
30 $ hg commit -A -m "Add A, B, C" a b c |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
31 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
32 Check the log |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
33 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
34 $ hg log --config extensions.t=$TESTTMP/logexthook.py |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
35 changeset: 1:70fc82b23320 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
36 tag: tip |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
37 user: test |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
38 date: Thu Jan 01 00:00:00 1970 +0000 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
39 fhzznel: Nqq N, O, P |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
40 summary: Add A, B, C |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
41 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
42 changeset: 0:b00443a54871 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
43 user: test |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
44 date: Thu Jan 01 00:00:00 1970 +0000 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
45 fhzznel: Ebbg |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
46 summary: Root |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
47 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
48 Check that exthook is working with graph log too |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
49 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
50 $ hg log -G --config extensions.t=$TESTTMP/logexthook.py |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
51 @ changeset: 1:70fc82b23320 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
52 | tag: tip |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
53 | user: test |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
54 | date: Thu Jan 01 00:00:00 1970 +0000 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
55 | fhzznel: Nqq N, O, P |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
56 | summary: Add A, B, C |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
57 | |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
58 o changeset: 0:b00443a54871 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
59 user: test |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
60 date: Thu Jan 01 00:00:00 1970 +0000 |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
61 fhzznel: Ebbg |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
62 summary: Root |
4ecc6047d45f
log: add an extension hook-point in changeset_printer
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
63 |