Fix file-changed-to-dir and dir-to-file commits (issue660).
Allow adding to dirstate files that clash with previously existing
but marked for removal. Protect from reintroducing clashes by revert.
This change doesn't address related issues with update. Current
workaround is to do "clean" update by manually removing conflicting
files/dirs from working directory.
% init
% commit
adding a
% annotate -c
8435f90966e4: a
% annotate -cl
8435f90966e4:1: a
% annotate -d
Thu Jan 01 00:00:01 1970 +0000: a
% annotate -n
0: a
% annotate -nl
0:1: a
% annotate -u
nobody: a
% annotate -cdnu
nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000: a
% annotate -cdnul
nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000:1: a
% annotate -n b
2: a
2: a
2: a
3: b4
3: b5
3: b6
% annotate -nl b
2:1: a
2:2: a
2:3: a
3:4: b4
3:5: b5
3:6: b6
% annotate -nf b
0 a: a
1 a: a
1 a: a
3 b: b4
3 b: b5
3 b: b6
% annotate -nlf b
0 a:1: a
1 a:2: a
1 a:3: a
3 b:4: b4
3 b:5: b5
3 b:6: b6
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
merging b
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% annotate after merge
0 a: a
1 a: a
1 a: a
3 b: b4
4 b: c
3 b: b5
% annotate after merge with -l
0 a:1: a
1 a:2: a
1 a:3: a
3 b:4: b4
4 b:5: c
3 b:5: b5
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging b
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% annotate after rename merge
0 a: a
6 b: z
1 a: a
3 b: b4
4 b: c
3 b: b5
7 b: d
% annotate after rename merge with -l
0 a:1: a
6 b:2: z
1 a:3: a
3 b:4: b4
4 b:5: c
3 b:5: b5
7 b:7: d
% linkrev vs rev
0: a
1: a
1: a
% linkrev vs rev with -l
0:1: a
1:2: a
1:3: a
% generate ABA rename configuration
% annotate after ABA with follow
foo: foo