Mercurial > hg
annotate tests/test-strict.t @ 42595:819712deac69
copies: follow copies across merge base without source file (issue6163)
As in the previous patch, consider these two histories:
@ 4 'rename x to y'
|
o 3 'add x again'
|
o 2 'remove x'
|
| o 1 'modify x'
|/
o 0 'add x'
@ 4 'rename x to y'
|
o 3 'add x again'
|
| o 2 'modify x'
| |
| o 1 'add x'
|/
o 0 'base'
We trace copies from the 'modify x' commit to commit 4 by going via
the merge base (commit 0). When tracing file 'y' (_tracefile()) in the
first case, we immediately find the rename from 'x'. We check to see
if 'x' exists in the merge base, which it does, so we consider it a
valid copy. In the second case, 'x' does not exist in the merge base,
so it's not considered a valid copy. As a workaround, this patch makes
it so we also attempt the check in mergecopies's base commit (commit 1
in the second case). That feels pretty ugly to me, but I don't have
any better ideas.
Note that we actually also check not only that the filename matches,
but also that the file's nodeid matches. I don't know why we do that,
but it was like that already before I rewrote mergecopies(). That
means that the rebase will still fail in cases like this (again, it
already failed before my rewrite):
@ 4 'rename x to y'
|
o 3 'add x again with content X2'
|
o 2 'remove x'
|
| o 1 'modify x to content X2'
|/
o 1 'modify x to content X1'
|
o 0 'add x with content X0'
Differential Revision: https://phab.mercurial-scm.org/D6604
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 28 Jun 2019 12:59:21 -0700 |
parents | 5199c5b6fd29 |
children | 9c9e0b4b2ca7 |
rev | line source |
---|---|
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
1 $ hg init |
2988
63c3a1921a67
Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
2 |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
3 $ echo a > a |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
4 $ hg ci -Ama |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
5 adding a |
2988
63c3a1921a67
Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
6 |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
7 $ hg an a |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
8 0: a |
2988
63c3a1921a67
Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
9 |
16591
46e9ed223d2c
commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents:
15862
diff
changeset
|
10 $ hg --config ui.strict=False an a |
46e9ed223d2c
commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents:
15862
diff
changeset
|
11 0: a |
46e9ed223d2c
commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents:
15862
diff
changeset
|
12 |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
13 $ echo "[ui]" >> $HGRCPATH |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
14 $ echo "strict=True" >> $HGRCPATH |
2988
63c3a1921a67
Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
15 |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
16 $ hg an a |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
17 hg: unknown command 'an' |
38787
5199c5b6fd29
dispatch: don't show list of commands on bogus command
Martin von Zweigbergk <martinvonz@google.com>
parents:
29974
diff
changeset
|
18 (use 'hg help' for a list of commands) |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12097
diff
changeset
|
19 [255] |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
20 $ hg annotate a |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
21 0: a |
2988
63c3a1921a67
Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
22 |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
23 should succeed - up is an alias, not an abbreviation |
2988
63c3a1921a67
Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
24 |
12097
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
25 $ hg up |
389c215885c5
tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
26 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |