annotate tests/test-mq-symlinks.t @ 18338:384df4db6520

merge: merge file flags together with file content The 'x' flag and the 'l' flag are very different. It is usually not a problem to change the 'x' flag of a normal file independent of the content, but one does not simply change the type of a file to 'l' independent of the content. This removes the fmerge function that merged both 'x' and 'l' independent of content early in the merge process. This correctly introduces some conflicts instead of silent incorrect merges. 3-way flag merge will now be done in the resolve process, right next to file content merge. Conflicts can thus be resolved with (slightly inconvenient) resolve commands like 'resolve f --tool internal:other'. It thus brings us closer to be able to re-solve manifest merge after the merge and avoid prompts during merge. This also removes the "conflicting flags for a - (n)one, e(x)ec or sym(l)ink?" prompt that nobody could answer and that made it easy to mix symlink targets and file contents up. Instead it will give a file merge where a sufficiently clever merge tool can help resolving the issue.
author Mads Kiilerich <mads@kiilerich.com>
date Wed, 09 Jan 2013 02:02:45 +0100
parents 4f795f5fbb0b
children 5010448197bc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
1 $ "$TESTDIR/hghave" symlink || exit 80
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
2
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
3 $ echo "[extensions]" >> $HGRCPATH
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
4 $ echo "mq=" >> $HGRCPATH
5157
f6c520fd70cf mq: teach qpop about symlinks
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
5
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
6 $ hg init
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
7 $ hg qinit
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
8 $ hg qnew base.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
9 $ echo aaa > a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
10 $ echo bbb > b
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
11 $ echo ccc > c
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
12 $ hg add a b c
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
13 $ hg qrefresh
16350
4f795f5fbb0b tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14453
diff changeset
14 $ "$TESTDIR/readlink.py" a
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
15 a -> a not a symlink
6360
95413879bac9 test-mq-symlinks: skip if symlinks are not supported
Patrick Mezard <pmezard@gmail.com>
parents: 5683
diff changeset
16
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
17
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
18 test replacing a file with a symlink
5157
f6c520fd70cf mq: teach qpop about symlinks
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
19
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
20 $ hg qnew symlink.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
21 $ rm a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
22 $ ln -s b a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
23 $ hg qrefresh --git
16350
4f795f5fbb0b tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14453
diff changeset
24 $ "$TESTDIR/readlink.py" a
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
25 a -> b
5157
f6c520fd70cf mq: teach qpop about symlinks
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
26
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
27 $ hg qpop
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
28 popping symlink.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
29 now at: base.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
30 $ hg qpush
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
31 applying symlink.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
32 now at: symlink.patch
16350
4f795f5fbb0b tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14453
diff changeset
33 $ "$TESTDIR/readlink.py" a
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
34 a -> b
5157
f6c520fd70cf mq: teach qpop about symlinks
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
35
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
36
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
37 test updating a symlink
7517
49f34b43cf90 patch: handle git patches that remove symlinks (issue1438)
Brendan Cully <brendan@kublai.com>
parents: 6360
diff changeset
38
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
39 $ rm a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
40 $ ln -s c a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
41 $ hg qnew --git -f updatelink
16350
4f795f5fbb0b tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14453
diff changeset
42 $ "$TESTDIR/readlink.py" a
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
43 a -> c
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
44 $ hg qpop
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
45 popping updatelink
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
46 now at: symlink.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
47 $ hg qpush --debug
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
48 applying updatelink
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
49 patching file a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
50 a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
51 now at: updatelink
16350
4f795f5fbb0b tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14453
diff changeset
52 $ "$TESTDIR/readlink.py" a
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
53 a -> c
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
54 $ hg st
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
55
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
56
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
57 test replacing a symlink with a file
9586
d08099e74b81 patch: handle symlink updates/replacements (issue1785)
Patrick Mezard <pmezard@gmail.com>
parents: 9585
diff changeset
58
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
59 $ ln -s c s
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
60 $ hg add s
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
61 $ hg qnew --git -f addlink
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
62 $ rm s
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
63 $ echo sss > s
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
64 $ hg qnew --git -f replacelinkwithfile
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
65 $ hg qpop
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
66 popping replacelinkwithfile
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
67 now at: addlink
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
68 $ hg qpush
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
69 applying replacelinkwithfile
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
70 now at: replacelinkwithfile
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
71 $ cat s
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
72 sss
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
73 $ hg st
9586
d08099e74b81 patch: handle symlink updates/replacements (issue1785)
Patrick Mezard <pmezard@gmail.com>
parents: 9585
diff changeset
74
11908
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
75
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
76 test symlink removal
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
77
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
78 $ hg qnew removesl.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
79 $ hg rm a
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
80 $ hg qrefresh --git
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
81 $ hg qpop
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
82 popping removesl.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
83 now at: replacelinkwithfile
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
84 $ hg qpush
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
85 applying removesl.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
86 now at: removesl.patch
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
87 $ hg st -c
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
88 C b
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
89 C c
7f48f0b188c6 tests: unify test-mq-symlinks
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10397
diff changeset
90 C s
12345
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
91
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
92 replace broken symlink with another broken symlink
12340
b0bb72460c44 patch: fix target when patching broken symlinks (issue2368)
Patrick Mezard <pmezard@gmail.com>
parents: 10397
diff changeset
93
12345
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
94 $ ln -s linka linka
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
95 $ hg add linka
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
96 $ hg qnew link
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
97 $ hg mv linka linkb
12398
2bc926ad65c2 merge with stable
Mads Kiilerich <mads@kiilerich.com>
parents: 12396 12345
diff changeset
98 $ rm linkb
2bc926ad65c2 merge with stable
Mads Kiilerich <mads@kiilerich.com>
parents: 12396 12345
diff changeset
99 $ ln -s linkb linkb
12345
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
100 $ hg qnew movelink
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
101 $ hg qpop
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
102 popping movelink
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
103 now at: link
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
104 $ hg qpush
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
105 applying movelink
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
106 now at: movelink
16350
4f795f5fbb0b tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14453
diff changeset
107 $ "$TESTDIR/readlink.py" linkb
12345
e0ee3e822a9a Merge with stable
Patrick Mezard <pmezard@gmail.com>
parents: 12341 11908
diff changeset
108 linkb -> linkb