author | Martin von Zweigbergk <martinvonz@google.com> |
Fri, 09 Oct 2020 09:17:47 -0700 | |
changeset 45688 | ed0ded64a8a9 |
parent 42739 | 302dbc9d52be |
child 46265 | 8045e4aa366b |
permissions | -rw-r--r-- |
42619
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
1 |
This file shows what hg says are "modified" files for a merge commit |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
2 |
(hg log -T {files}), somewhat exhaustively. |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
3 |
It shows merges that involves files contents changing, and merges that |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
4 |
involve executable bit changing, but not merges with multiple or zero |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
5 |
merge ancestors, nor copies/renames, and nor identical file contents |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
6 |
with different filelog revisions. |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
7 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
8 |
genmerges is the workhorse. Given: |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
9 |
- a range function describing the possible values for file a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
10 |
- a isgood function to filter out uninteresting combination |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
11 |
- a createfile function to actually write the values for file a on the |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
12 |
filesystem |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
13 |
it print a series of lines that look like: abcd C: output of -T {files} |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
14 |
describing the file a at respectively the base, p2, p1, merge |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
15 |
revision. "C" indicates that hg merge had conflicts. |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
16 |
$ genmerges () { |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
17 |
> for base in `range` -; do |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
18 |
> for r1 in `range $base` -; do |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
19 |
> for r2 in `range $base $r1` -; do |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
20 |
> for m in `range $base $r1 $r2` -; do |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
21 |
> line="$base$r1$r2$m" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
22 |
> isgood $line || continue |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
23 |
> hg init repo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
24 |
> cd repo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
25 |
> make_commit () { |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
26 |
> v=$1; msg=$2; file=$3; |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
27 |
> if [ $v != - ]; then |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
28 |
> createfile $v |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
29 |
> else |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
30 |
> if [ -f a ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
31 |
> then rm a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
32 |
> else touch $file |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
33 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
34 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
35 |
> hg commit -q -Am $msg || exit 123 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
36 |
> } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
37 |
> echo foo > foo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
38 |
> make_commit $base base b |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
39 |
> make_commit $r1 r1 c |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
40 |
> hg up -r 0 -q |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
41 |
> make_commit $r2 r2 d |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
42 |
> hg merge -q -r 1 > ../output 2>&1 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
43 |
> if [ $? -ne 0 ]; then rm -f *.orig; hg resolve -m --all -q; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
44 |
> if [ -s ../output ]; then conflicts=" C"; else conflicts=" "; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
45 |
> make_commit $m m e |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
46 |
> if [ $m = $r1 ] && [ $m = $r2 ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
47 |
> then expected= |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
48 |
> elif [ $m = $r1 ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
49 |
> then if [ $base = $r2 ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
50 |
> then expected= |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
51 |
> else expected=a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
52 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
53 |
> elif [ $m = $r2 ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
54 |
> then if [ $base = $r1 ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
55 |
> then expected= |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
56 |
> else expected=a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
57 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
58 |
> else expected=a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
59 |
> fi |
42739
302dbc9d52be
tests: use `tr -d` and not `tr --delete` as the latter is absent on BSD tr(1)
Augie Fackler <augie@google.com>
parents:
42621
diff
changeset
|
60 |
> got=`hg log -r 3 --template '{files}\n' | tr -d 'e '` |
42619
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
61 |
> if [ "$got" = "$expected" ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
62 |
> then echo "$line$conflicts: agree on \"$got\"" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
63 |
> else echo "$line$conflicts: hg said \"$got\", expected \"$expected\"" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
64 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
65 |
> cd ../ |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
66 |
> rm -rf repo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
67 |
> done |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
68 |
> done |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
69 |
> done |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
70 |
> done |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
71 |
> } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
72 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
73 |
All the merges of various file contents. |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
74 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
75 |
$ range () { |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
76 |
> max=0 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
77 |
> for i in $@; do |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
78 |
> if [ $i = - ]; then continue; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
79 |
> if [ $i -gt $max ]; then max=$i; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
80 |
> done |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
81 |
> $TESTDIR/seq.py `expr $max + 1` |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
82 |
> } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
83 |
$ isgood () { true; } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
84 |
$ createfile () { |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
85 |
> if [ -f a ] && [ "`cat a`" = $1 ] |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
86 |
> then touch $file |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
87 |
> else echo $v > a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
88 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
89 |
> } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
90 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
91 |
$ genmerges |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
92 |
1111 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
93 |
1112 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
94 |
111- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
95 |
1121 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
96 |
1122 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
97 |
1123 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
98 |
112- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
99 |
11-1 : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
100 |
11-2 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
101 |
11-- : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
102 |
1211 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
103 |
1212 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
104 |
1213 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
105 |
121- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
106 |
1221 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
107 |
1222 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
108 |
1223 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
109 |
122- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
110 |
1231 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
111 |
1232 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
112 |
1233 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
113 |
1234 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
114 |
123- C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
115 |
12-1 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
116 |
12-2 C: hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
117 |
12-3 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
118 |
12-- C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
119 |
1-11 : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
120 |
1-12 : agree on "a" |
42621
99ebde4fec99
commit: improve the files field of changelog for merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
42619
diff
changeset
|
121 |
1-1- : agree on "" |
42619
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
122 |
1-21 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
123 |
1-22 C: hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
124 |
1-23 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
125 |
1-2- C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
126 |
1--1 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
127 |
1--2 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
128 |
1--- : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
129 |
-111 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
130 |
-112 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
131 |
-11- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
132 |
-121 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
133 |
-122 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
134 |
-123 C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
135 |
-12- C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
136 |
-1-1 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
137 |
-1-2 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
138 |
-1-- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
139 |
--11 : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
140 |
--12 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
141 |
--1- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
142 |
---1 : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
143 |
---- : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
144 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
145 |
All the merges of executable bit. |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
146 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
147 |
$ range () { |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
148 |
> max=a |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
149 |
> for i in $@; do |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
150 |
> if [ $i = - ]; then continue; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
151 |
> if [ $i > $max ]; then max=$i; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
152 |
> done |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
153 |
> if [ $max = a ]; then echo f; else echo f x; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
154 |
> } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
155 |
$ isgood () { case $line in *f*x*) true;; *) false;; esac; } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
156 |
$ createfile () { |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
157 |
> if [ -f a ] && (([ -x a ] && [ $v = x ]) || (! [ -x a ] && [ $v != x ])) |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
158 |
> then touch $file |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
159 |
> else touch a; if [ $v = x ]; then chmod +x a; else chmod -x a; fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
160 |
> fi |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
161 |
> } |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
162 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
163 |
#if execbit |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
164 |
$ genmerges |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
165 |
fffx : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
166 |
ffxf : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
167 |
ffxx : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
168 |
ffx- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
169 |
ff-x : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
170 |
fxff : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
171 |
fxfx : hg said "a", expected "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
172 |
fxf- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
173 |
fxxf : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
174 |
fxxx : agree on "" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
175 |
fxx- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
176 |
fx-f : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
177 |
fx-x : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
178 |
fx-- : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
179 |
f-fx : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
180 |
f-xf : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
181 |
f-xx : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
182 |
f-x- : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
183 |
f--x : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
184 |
-ffx : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
185 |
-fxf C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
186 |
-fxx C: hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
187 |
-fx- C: agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
188 |
-f-x : hg said "", expected "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
189 |
--fx : agree on "a" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
190 |
#endif |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
191 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
192 |
Files modified or cleanly merged, with no greatest common ancestors: |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
193 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
194 |
$ hg init repo; cd repo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
195 |
$ touch a0 b0; hg commit -qAm 0 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
196 |
$ hg up -qr null; touch a1 b1; hg commit -qAm 1 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
197 |
$ hg merge -qr 0; rm b*; hg commit -qAm 2 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
198 |
$ hg log -r . -T '{files}\n' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
199 |
b0 b1 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
200 |
$ cd ../ |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
201 |
$ rm -rf repo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
202 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
203 |
A few cases of criss-cross merges involving deletions (listing all |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
204 |
such merges is probably too much). Both gcas contain $files, so we |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
205 |
expect the final merge to behave like a merge with a single gca |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
206 |
containing $files. |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
207 |
|
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
208 |
$ hg init repo; cd repo |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
209 |
$ files="c1 u1 c2 u2" |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
210 |
$ touch $files; hg commit -qAm '0 root' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
211 |
$ for f in $files; do echo f > $f; done; hg commit -qAm '1 gca1' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
212 |
$ hg up -qr0; hg revert -qr 1 --all; hg commit -qAm '2 gca2' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
213 |
$ hg up -qr 1; hg merge -qr 2; rm *1; hg commit -qAm '3 p1' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
214 |
$ hg up -qr 2; hg merge -qr 1; rm *2; hg commit -qAm '4 p2' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
215 |
$ hg merge -qr 3; echo f > u1; echo f > u2; rm -f c1 c2 |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
216 |
$ hg commit -qAm '5 merge with two gcas' |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
217 |
$ hg log -r . -T '{files}\n' # expecting u1 u2 |
42621
99ebde4fec99
commit: improve the files field of changelog for merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
42619
diff
changeset
|
218 |
|
42619
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
219 |
$ cd ../ |
20d0e59be79b
tests: show the files fields of changelogs for many merges
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
diff
changeset
|
220 |
$ rm -rf repo |