##// END OF EJS Templates
filemerge: add internal merge tool to dump files forcibly...
filemerge: add internal merge tool to dump files forcibly Internal merge tool :dump implies premerge. Therefore, files aren't dumped, if premerge runs successfully. This undocumented behavior might confuse users, if they want to always dump files. But just making :dump omit premerge might cause backward compatibility issue for existing automation. This patch adds new internal merge tool :forcedump, which works as same as :dump, but omits premerge always. Internal tools annotated with "nomerge" should merge "change and delete" correctly, but _forcedump() can't. Therefore, it is annotated with "mergeonly" to always omit premerge, even though it doesn't merge files actually. This patch also adds explanation about premerge to :dump, to clarify how :dump actually works. BTW, this patch specifies internal tools with "internal:" prefix in newly added test scenario in test-merge-tools.t, even though this prefix is already deprecated. This is only for similarity to other tests in test-merge-tools.t.

File last commit:

r27024:ceef5fb1 default
r32255:7e35d31b default
Show More
test-fileset-generated.t
197 lines | 6.3 KiB | text/troff | Tads3Lexer
/ tests / test-fileset-generated.t
$ hg init
Set up history and working copy
$ python $TESTDIR/generate-working-copy-states.py state 2 1
$ hg addremove -q --similarity 0
$ hg commit -m first
$ python $TESTDIR/generate-working-copy-states.py state 2 2
$ hg addremove -q --similarity 0
$ hg commit -m second
$ python $TESTDIR/generate-working-copy-states.py state 2 wc
$ hg addremove -q --similarity 0
$ hg forget *_*_*-untracked
$ rm *_*_missing-*
Test status
$ hg st -A 'set:modified()'
M content1_content1_content3-tracked
M content1_content2_content1-tracked
M content1_content2_content3-tracked
M missing_content2_content3-tracked
$ hg st -A 'set:added()'
A content1_missing_content1-tracked
A content1_missing_content3-tracked
A missing_missing_content3-tracked
$ hg st -A 'set:removed()'
R content1_content1_content1-untracked
R content1_content1_content3-untracked
R content1_content1_missing-untracked
R content1_content2_content1-untracked
R content1_content2_content2-untracked
R content1_content2_content3-untracked
R content1_content2_missing-untracked
R missing_content2_content2-untracked
R missing_content2_content3-untracked
R missing_content2_missing-untracked
$ hg st -A 'set:deleted()'
! content1_content1_missing-tracked
! content1_content2_missing-tracked
! content1_missing_missing-tracked
! missing_content2_missing-tracked
! missing_missing_missing-tracked
$ hg st -A 'set:missing()'
! content1_content1_missing-tracked
! content1_content2_missing-tracked
! content1_missing_missing-tracked
! missing_content2_missing-tracked
! missing_missing_missing-tracked
$ hg st -A 'set:unknown()'
? content1_missing_content1-untracked
? content1_missing_content3-untracked
? missing_missing_content3-untracked
$ hg st -A 'set:clean()'
C content1_content1_content1-tracked
C content1_content2_content2-tracked
C missing_content2_content2-tracked
Test log
$ hg log -T '{rev}\n' --stat 'set:modified()'
1
content1_content2_content1-tracked | 2 +-
content1_content2_content3-tracked | 2 +-
missing_content2_content3-tracked | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
0
content1_content1_content3-tracked | 1 +
content1_content2_content1-tracked | 1 +
content1_content2_content3-tracked | 1 +
3 files changed, 3 insertions(+), 0 deletions(-)
Largefiles doesn't crash
$ hg log -T '{rev}\n' --stat 'set:modified()' --config extensions.largefiles=
1
content1_content2_content1-tracked | 2 +-
content1_content2_content3-tracked | 2 +-
missing_content2_content3-tracked | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
0
content1_content1_content3-tracked | 1 +
content1_content2_content1-tracked | 1 +
content1_content2_content3-tracked | 1 +
3 files changed, 3 insertions(+), 0 deletions(-)
$ hg log -T '{rev}\n' --stat 'set:added()'
1
content1_missing_content1-tracked | 1 -
content1_missing_content3-tracked | 1 -
2 files changed, 0 insertions(+), 2 deletions(-)
0
content1_missing_content1-tracked | 1 +
content1_missing_content3-tracked | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
$ hg log -T '{rev}\n' --stat 'set:removed()'
1
content1_content2_content1-untracked | 2 +-
content1_content2_content2-untracked | 2 +-
content1_content2_content3-untracked | 2 +-
content1_content2_missing-untracked | 2 +-
missing_content2_content2-untracked | 1 +
missing_content2_content3-untracked | 1 +
missing_content2_missing-untracked | 1 +
7 files changed, 7 insertions(+), 4 deletions(-)
0
content1_content1_content1-untracked | 1 +
content1_content1_content3-untracked | 1 +
content1_content1_missing-untracked | 1 +
content1_content2_content1-untracked | 1 +
content1_content2_content2-untracked | 1 +
content1_content2_content3-untracked | 1 +
content1_content2_missing-untracked | 1 +
7 files changed, 7 insertions(+), 0 deletions(-)
$ hg log -T '{rev}\n' --stat 'set:deleted()'
1
content1_content2_missing-tracked | 2 +-
content1_missing_missing-tracked | 1 -
missing_content2_missing-tracked | 1 +
3 files changed, 2 insertions(+), 2 deletions(-)
0
content1_content1_missing-tracked | 1 +
content1_content2_missing-tracked | 1 +
content1_missing_missing-tracked | 1 +
3 files changed, 3 insertions(+), 0 deletions(-)
$ hg log -T '{rev}\n' --stat 'set:unknown()'
1
content1_missing_content1-untracked | 1 -
content1_missing_content3-untracked | 1 -
2 files changed, 0 insertions(+), 2 deletions(-)
0
content1_missing_content1-untracked | 1 +
content1_missing_content3-untracked | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
$ hg log -T '{rev}\n' --stat 'set:clean()'
1
content1_content2_content2-tracked | 2 +-
missing_content2_content2-tracked | 1 +
2 files changed, 2 insertions(+), 1 deletions(-)
0
content1_content1_content1-tracked | 1 +
content1_content2_content2-tracked | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
Test revert
$ hg revert 'set:modified()'
reverting content1_content1_content3-tracked
reverting content1_content2_content1-tracked
reverting content1_content2_content3-tracked
reverting missing_content2_content3-tracked
$ hg revert 'set:added()'
forgetting content1_missing_content1-tracked
forgetting content1_missing_content3-tracked
forgetting missing_missing_content3-tracked
$ hg revert 'set:removed()'
undeleting content1_content1_content1-untracked
undeleting content1_content1_content3-untracked
undeleting content1_content1_missing-untracked
undeleting content1_content2_content1-untracked
undeleting content1_content2_content2-untracked
undeleting content1_content2_content3-untracked
undeleting content1_content2_missing-untracked
undeleting missing_content2_content2-untracked
undeleting missing_content2_content3-untracked
undeleting missing_content2_missing-untracked
$ hg revert 'set:deleted()'
reverting content1_content1_missing-tracked
reverting content1_content2_missing-tracked
forgetting content1_missing_missing-tracked
reverting missing_content2_missing-tracked
forgetting missing_missing_missing-tracked
$ hg revert 'set:unknown()'
$ hg revert 'set:clean()'