##// END OF EJS Templates
mergestate: merge `preresolve()` into `resolve()`...
mergestate: merge `preresolve()` into `resolve()` The separation between `preresolve()` and `resolve()` was something added for the "merge driver" feature. Since we removed that in 32ce4cbaec4b (mergedriver: delete it, 2020-09-17), we don't need the separation anymore. More cleanups will follow. Differential Revision: https://phab.mercurial-scm.org/D11855

File last commit:

r49256:38941a28 default
r49256:38941a28 default
Show More
test-merge-halt.t
215 lines | 4.7 KiB | text/troff | Tads3Lexer
/ tests / test-merge-halt.t
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680 $ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
> [phases]
> publish=False
> [merge]
> EOF
$ hg init repo
$ cd repo
$ echo a > a
$ echo b > b
$ hg commit -qAm ab
$ echo c >> a
$ echo c >> b
$ hg commit -qAm c
$ hg up -q ".^"
$ echo d >> a
$ echo d >> b
$ hg commit -qAm d
Testing on-failure=continue
$ echo on-failure=continue >> $HGRCPATH
$ hg rebase -s 1 -d 2 --tool false
rebasing 1:1f28a51c3c9b "c"
merging a
Martin von Zweigbergk
mergestate: merge `preresolve()` into `resolve()`...
r49256 merging a failed!
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680 merging b
merging b failed!
Daniel Ploch
error: unify the error message formats for 'rebase' and 'unshelve'...
r45710 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680
$ hg resolve --list
U a
U b
$ hg rebase --abort
rebase aborted
Testing on-failure=halt
$ echo on-failure=halt >> $HGRCPATH
$ hg rebase -s 1 -d 2 --tool false
rebasing 1:1f28a51c3c9b "c"
merging a
merging a failed!
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680
$ hg resolve --list
U a
U b
$ hg rebase --abort
rebase aborted
Testing on-failure=prompt
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885 $ cat <<EOS >> $HGRCPATH
> [merge]
> on-failure=prompt
> [ui]
> interactive=1
> EOS
$ cat <<EOS | hg rebase -s 1 -d 2 --tool false
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680 > y
> n
> EOS
rebasing 1:1f28a51c3c9b "c"
merging a
merging a failed!
Ryan McElroy
merge: allow user to halt merge on merge-tool failures...
r34798 continue merge operation (yn)? y
Martin von Zweigbergk
mergestate: merge `preresolve()` into `resolve()`...
r49256 merging b
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680 merging b failed!
Ryan McElroy
merge: allow user to halt merge on merge-tool failures...
r34798 continue merge operation (yn)? n
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Ryan McElroy
merge: add tests to show current behavior on failed filemerges...
r34680
$ hg resolve --list
U a
U b
$ hg rebase --abort
rebase aborted
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885 Check that successful tool with failed post-check halts the merge
$ cat <<EOS >> $HGRCPATH
> [merge-tools]
> true.check=changed
> EOS
$ cat <<EOS | hg rebase -s 1 -d 2 --tool true
> y
> n
> n
> EOS
rebasing 1:1f28a51c3c9b "c"
merging a
output file a appears unchanged
was merge successful (yn)? y
Martin von Zweigbergk
mergestate: merge `preresolve()` into `resolve()`...
r49256 merging b
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885 output file b appears unchanged
was merge successful (yn)? n
merging b failed!
continue merge operation (yn)? n
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885
$ hg resolve --list
R a
U b
$ hg rebase --abort
rebase aborted
Check that conflicts with conflict check also halts the merge
$ cat <<EOS >> $HGRCPATH
> [merge-tools]
> true.check=conflicts
> true.premerge=keep
> [merge]
> on-failure=halt
> EOS
$ hg rebase -s 1 -d 2 --tool true
rebasing 1:1f28a51c3c9b "c"
merging a
merging a failed!
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885
$ hg resolve --list
U a
U b
$ hg rebase --abort
rebase aborted
Check that always-prompt also can halt the merge
$ cat <<EOS | hg rebase -s 1 -d 2 --tool true --config merge-tools.true.check=prompt
> y
> n
> EOS
rebasing 1:1f28a51c3c9b "c"
merging a
Martin von Zweigbergk
mergestate: merge `preresolve()` into `resolve()`...
r49256 was merge of 'a' successful (yn)? y
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885 merging b
was merge of 'b' successful (yn)? n
merging b failed!
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885
$ hg resolve --list
R a
U b
$ hg rebase --abort
rebase aborted
Check that successful tool otherwise allows the merge to continue
$ hg rebase -s 1 -d 2 --tool echo --keep --config merge-tools.echo.premerge=keep
rebasing 1:1f28a51c3c9b "c"
merging a
Martin von Zweigbergk
mergestate: merge `preresolve()` into `resolve()`...
r49256 $TESTTMP/repo/a *a~base* *a~other* (glob)
Ryan McElroy
merge: additional test cases to show merge-halting behavior...
r34885 merging b
$TESTTMP/repo/b *b~base* *b~other* (glob)
Kyle Lippincott
merge-halt: demonstrate unshelve issue with merge.on-failure=halt...
r49091
Check that unshelve isn't broken by halting the merge
$ cat <<EOS >> $HGRCPATH
> [extensions]
> shelve =
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 > [merge-tools]
> false.check=conflicts
> false.premerge=false
Kyle Lippincott
merge-halt: demonstrate unshelve issue with merge.on-failure=halt...
r49091 > EOS
$ echo foo > shelve_file1
$ echo foo > shelve_file2
$ hg ci -qAm foo
$ echo bar >> shelve_file1
$ echo bar >> shelve_file2
$ hg shelve --list
$ hg shelve
shelved as default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo baz >> shelve_file1
$ echo baz >> shelve_file2
$ hg ci -m baz
$ hg unshelve --tool false --config merge-tools.false.premerge=keep
unshelving change 'default'
rebasing shelved changes
merging shelve_file1
merging shelve_file1 failed!
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
Kyle Lippincott
merge-halt: demonstrate unshelve issue with merge.on-failure=halt...
r49091 [240]
$ hg status --config commands.status.verbose=True
M shelve_file1
M shelve_file2
? shelve_file1.orig
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 # The repository is in an unfinished *unshelve* state.
Kyle Lippincott
merge-halt: demonstrate unshelve issue with merge.on-failure=halt...
r49091
# Unresolved merge conflicts:
#
# shelve_file1
# shelve_file2
#
# To mark files as resolved: hg resolve --mark FILE
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 # To continue: hg unshelve --continue
# To abort: hg unshelve --abort
Kyle Lippincott
merge-halt: demonstrate unshelve issue with merge.on-failure=halt...
r49091
$ hg resolve --tool false --all --re-merge
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 merging shelve_file1
merging shelve_file1 failed!
merge halted after failed merge (see hg resolve)
[240]
Kyle Lippincott
merge-halt: demonstrate unshelve issue with merge.on-failure=halt...
r49091 $ hg shelve --list
default (* ago) changes to: foo (glob)
$ hg unshelve --abort
Kyle Lippincott
merge-halt: fix issue with merge.on-failure=halt breaking unshelve...
r49092 unshelve of 'default' aborted