##// END OF EJS Templates
narrow: fix flaky behavior described in issue6150...
narrow: fix flaky behavior described in issue6150 This has been plaguing the CI for a good while, and it doesn't appear to have an easy fix proposed yet. The solution in this change is to always do an unambiguous (but expensive) lookup in case of comparison. This should always be correct, albeit suboptimal. Differential Revision: https://phab.mercurial-scm.org/D10034

File last commit:

r47146:dc00324e default
r47280:b994db7c stable
Show More
test-merge1.t
439 lines | 11.2 KiB | text/troff | Tads3Lexer
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ cat <<EOF > merge
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > from __future__ import print_function
Pradeepkumar Gayam
tests: unify test-merge1
r11975 > import sys, os
>
> try:
> import msvcrt
> msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
> msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
> except ImportError:
> pass
>
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > print("merging for", os.path.basename(sys.argv[1]))
Pradeepkumar Gayam
tests: unify test-merge1
r11975 > EOF
Matt Harbison
py3: quote several instances of $PYTHON for Windows...
r40907 $ HGMERGE="\"$PYTHON\" ../merge"; export HGMERGE
Pradeepkumar Gayam
tests: unify test-merge1
r11975
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ cd t
$ echo This is file a1 > a
$ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #0"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file b1 > b
$ hg add b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #1"
Pradeepkumar Gayam
tests: unify test-merge1
r11975
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482
Kostia Balytskyi
update: teach hg to override untracked dir with a tracked file on update...
r29480 Test interrupted updates by having a non-empty dir with the same name as one
of the files in a commit we're updating to
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482
Kostia Balytskyi
update: teach hg to override untracked dir with a tracked file on update...
r29480 $ mkdir b && touch b/nonempty
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482 $ hg up
Matt Harbison
tests: stabilize change for handling not quoting non-empty-directory...
r39629 abort: Unlinking directory not permitted: *$TESTTMP/t/b* (glob) (windows !)
Augie Fackler
tests: handle Python 3 not quoting non-empty-directory error...
r39613 abort: Directory not empty: '?\$TESTTMP/t/b'? (re) (no-windows !)
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 [255]
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482 $ hg ci
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 abort: last update was interrupted
(use 'hg update' to get a consistent checkout)
Martin von Zweigbergk
errors: introduce StateError and use it from commands and cmdutil...
r46444 [20]
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482 $ hg sum
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 parent: 0:538afb845929
commit #0
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482 branch: default
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 commit: 1 unknown (interrupted update)
update: 1 new changesets (update)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 2 draft
Taapas Agrawal
statecheck: added support for STATES...
r42732 Detect interrupted update by hg status --verbose
$ hg status -v
? b/nonempty
# The repository is in an unfinished *update* state.
Martin von Zweigbergk
unfinishedstate: suggested `hg update .` (including `.`) to complete update...
r43315 # To continue: hg update .
Taapas Agrawal
statecheck: added support for STATES...
r42732
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 $ rm b/nonempty
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482 $ hg up
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482 $ hg sum
parent: 1:b8bb4a988f25 tip
commit #1
branch: default
commit: (clean)
update: (current)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 2 draft
Matt Mackall
update: add tracking of interrupted updates (issue3113)...
r19482
Prepare a basic merge
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file c1 > c
$ hg add c
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #2"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 created new head
$ echo This is file b1 > b
no merges expected
$ hg merge -P 1
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:b8bb4a988f25
Pradeepkumar Gayam
tests: unify test-merge1
r11975 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Pradeepkumar Gayam
tests: unify test-merge1
r11975 summary: commit #1
$ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg diff --nodates
Martin Geisler
tests: remove unneeded -d flags...
r12156 diff -r 49035e18a8e6 b
Pradeepkumar Gayam
tests: unify test-merge1
r11975 --- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+This is file b1
$ hg status
M b
$ cd ..; rm -r t
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ cd t
$ echo This is file a1 > a
$ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #0"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file b1 > b
$ hg add b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #1"
Pradeepkumar Gayam
tests: unify test-merge1
r11975
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo This is file c1 > c
$ hg add c
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #2"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 created new head
$ echo This is file b2 > b
merge should fail
$ hg merge 1
Jordi Gutiérrez Hermoso
merge: report all files in _checkunknown...
r15894 b: untracked file differs
abort: untracked files in working directory differ from files in requested revision
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Siddharth Agarwal
merge: while checking for unknown files don't follow symlinks (issue5027)...
r27571
#if symlink
symlinks to directories should be treated as regular files (issue5027)
$ rm b
$ ln -s 'This is file b2' b
$ hg merge 1
b: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
symlinks shouldn't be followed
$ rm b
$ echo This is file b1 > .hg/b
$ ln -s .hg/b b
$ hg merge 1
b: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
$ rm b
$ echo This is file b2 > b
#endif
Siddharth Agarwal
merge: add options to warn or ignore on colliding unknown files...
r27657 bad config
$ hg merge 1 --config merge.checkunknown=x
Martin von Zweigbergk
errors: raise ConfigError on failure to parse config file...
r46506 config error: merge.checkunknown not valid ('x' is none of 'abort', 'ignore', 'warn')
Martin von Zweigbergk
errors: set detailed exit code to 30 for config errors...
r46445 [30]
Siddharth Agarwal
merge: add options to warn or ignore on colliding unknown files...
r27657 this merge should fail
$ hg merge 1 --config merge.checkunknown=abort
b: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
this merge should warn
$ hg merge 1 --config merge.checkunknown=warn
b: replacing untracked file
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat b.orig
This is file b2
$ hg up --clean 2
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mv b.orig b
this merge should silently ignore
$ cat b
This is file b2
$ hg merge 1 --config merge.checkunknown=ignore
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Siddharth Agarwal
merge: split up checks for unknown and ignored files that differ...
r27742 merge.checkignored
$ hg up --clean 1
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ cat >> .hgignore << EOF
> remoteignored
> EOF
$ echo This is file localignored3 > localignored
$ echo This is file remoteignored3 > remoteignored
$ hg add .hgignore localignored remoteignored
$ hg commit -m "commit #3"
$ hg up 2
1 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ cat >> .hgignore << EOF
> localignored
> EOF
$ hg add .hgignore
$ hg commit -m "commit #4"
remote .hgignore shouldn't be used for determining whether a file is ignored
$ echo This is file remoteignored4 > remoteignored
$ hg merge 3 --config merge.checkignored=ignore --config merge.checkunknown=abort
remoteignored: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
$ hg merge 3 --config merge.checkignored=abort --config merge.checkunknown=ignore
merging .hgignore
merging for .hgignore
3 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat remoteignored
This is file remoteignored3
$ cat remoteignored.orig
This is file remoteignored4
$ rm remoteignored.orig
local .hgignore should be used for that
$ hg up --clean 4
1 files updated, 0 files merged, 3 files removed, 0 files unresolved
$ echo This is file localignored4 > localignored
also test other conflicting files to see we output the full set of warnings
$ echo This is file b2 > b
$ hg merge 3 --config merge.checkignored=abort --config merge.checkunknown=abort
b: untracked file differs
localignored: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
$ hg merge 3 --config merge.checkignored=abort --config merge.checkunknown=ignore
localignored: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
$ hg merge 3 --config merge.checkignored=warn --config merge.checkunknown=abort
b: untracked file differs
abort: untracked files in working directory differ from files in requested revision
[255]
$ hg merge 3 --config merge.checkignored=warn --config merge.checkunknown=warn
b: replacing untracked file
localignored: replacing untracked file
merging .hgignore
merging for .hgignore
3 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat localignored
This is file localignored3
$ cat localignored.orig
This is file localignored4
$ rm localignored.orig
Siddharth Agarwal
merge: add options to warn or ignore on colliding unknown files...
r27657 $ cat b.orig
This is file b2
$ hg up --clean 2
Siddharth Agarwal
merge: split up checks for unknown and ignored files that differ...
r27742 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
Siddharth Agarwal
merge: add options to warn or ignore on colliding unknown files...
r27657 $ mv b.orig b
this merge of b should work
$ cat b
This is file b2
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ hg merge -f 1
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging b
Pradeepkumar Gayam
tests: unify test-merge1
r11975 merging for b
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg diff --nodates
Martin Geisler
tests: remove unneeded -d flags...
r12156 diff -r 49035e18a8e6 b
Pradeepkumar Gayam
tests: unify test-merge1
r11975 --- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+This is file b2
$ hg status
M b
$ cd ..; rm -r t
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ cd t
$ echo This is file a1 > a
$ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #0"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file b1 > b
$ hg add b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #1"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file b22 > b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #2"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ hg update 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo This is file c1 > c
$ hg add c
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #3"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 created new head
Contents of b should be "this is file b1"
$ cat b
This is file b1
$ echo This is file b22 > b
merge fails
$ hg merge 2
Siddharth Agarwal
merge: standardize error message for dirty working dir
r19802 abort: uncommitted changes
Kevin Bullock
merge: make 'nothing to merge' aborts consistent...
r15619 (use 'hg status' to list changes)
Martin von Zweigbergk
errors: raise StateError on uncommitted changes when merge starts...
r46529 [20]
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243 merge expected!
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ hg merge -f 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg diff --nodates
Martin Geisler
tests: remove unneeded -d flags...
r12156 diff -r 85de557015a8 b
Pradeepkumar Gayam
tests: unify test-merge1
r11975 --- a/b
+++ b/b
@@ -1,1 +1,1 @@
-This is file b1
+This is file b22
$ hg status
M b
$ cd ..; rm -r t
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ cd t
$ echo This is file a1 > a
$ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #0"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file b1 > b
$ hg add b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #1"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ echo This is file b22 > b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #2"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 $ hg update 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo This is file c1 > c
$ hg add c
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m "commit #3"
Pradeepkumar Gayam
tests: unify test-merge1
r11975 created new head
$ echo This is file b33 > b
merge of b should fail
$ hg merge 2
Siddharth Agarwal
merge: standardize error message for dirty working dir
r19802 abort: uncommitted changes
Kevin Bullock
merge: make 'nothing to merge' aborts consistent...
r15619 (use 'hg status' to list changes)
Martin von Zweigbergk
errors: raise StateError on uncommitted changes when merge starts...
r46529 [20]
Pradeepkumar Gayam
tests: unify test-merge1
r11975 merge of b expected
$ hg merge -f 2
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 merging b
Pradeepkumar Gayam
tests: unify test-merge1
r11975 merging for b
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg diff --nodates
Martin Geisler
tests: remove unneeded -d flags...
r12156 diff -r 85de557015a8 b
Pradeepkumar Gayam
tests: unify test-merge1
r11975 --- a/b
+++ b/b
@@ -1,1 +1,1 @@
-This is file b1
+This is file b33
$ hg status
M b
Matt Mackall
merge: handle no file parent in backwards merge (issue2364)
r12664
Test for issue2364
$ hg up -qC .
$ hg rm b
$ hg ci -md
$ hg revert -r -2 b
$ hg up -q -- -2
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 Test that updated files are treated as "modified", when
'merge.update()' is aborted before 'merge.recordupdates()' (= parents
aren't changed), even if none of mode, size and timestamp of them
isn't changed on the filesystem (see also issue4583).
$ cat > $TESTTMP/abort.py <<EOF
Augie Fackler
tests: update test-merge1 to pass our import checker
r33970 > from __future__ import absolute_import
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 > # emulate aborting before "recordupdates()". in this case, files
> # are changed without updating dirstate
Augie Fackler
tests: update test-merge1 to pass our import checker
r33970 > from mercurial import (
> error,
> extensions,
> merge,
> )
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 > def applyupdates(orig, *args, **kwargs):
> orig(*args, **kwargs)
Martin von Zweigbergk
errors: stop passing non-strings to Abort's constructor...
r46273 > raise error.Abort(b'intentional aborting')
FUJIWARA Katsunori
context: write dirstate out explicitly after marking files as clean...
r25753 > def extsetup(ui):
> extensions.wrapfunction(merge, "applyupdates", applyupdates)
> EOF
$ cat >> .hg/hgrc <<EOF
> [fakedirstatewritetime]
> # emulate invoking dirstate.write() via repo.status()
> # at 2000-01-01 00:00
> fakenow = 200001010000
> EOF
(file gotten from other revision)
$ hg update -q -C 2
$ echo 'THIS IS FILE B5' > b
$ hg commit -m 'commit #5'
$ hg update -q -C 3
$ cat b
This is file b1
$ touch -t 200001010000 b
$ hg debugrebuildstate
$ cat >> .hg/hgrc <<EOF
> [extensions]
> fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py
> abort = $TESTTMP/abort.py
> EOF
$ hg merge 5
abort: intentional aborting
[255]
$ cat >> .hg/hgrc <<EOF
> [extensions]
> fakedirstatewritetime = !
> abort = !
> EOF
$ cat b
THIS IS FILE B5
$ touch -t 200001010000 b
$ hg status -A b
M b
(file merged from other revision)
$ hg update -q -C 3
$ echo 'this is file b6' > b
$ hg commit -m 'commit #6'
created new head
$ cat b
this is file b6
$ touch -t 200001010000 b
$ hg debugrebuildstate
$ cat >> .hg/hgrc <<EOF
> [extensions]
> fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py
> abort = $TESTTMP/abort.py
> EOF
$ hg merge --tool internal:other 5
abort: intentional aborting
[255]
$ cat >> .hg/hgrc <<EOF
> [extensions]
> fakedirstatewritetime = !
> abort = !
> EOF
$ cat b
THIS IS FILE B5
$ touch -t 200001010000 b
$ hg status -A b
M b
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..