##// END OF EJS Templates
merge: do not delete untracked files silently (issue5962)...
merge: do not delete untracked files silently (issue5962) 37450a122128, 2a774cae3a03, and 656ac240f392 weren't enough to prevent data loss. No unknown "files" weren't deleted before 7a8a16f8ea22, "context: also consider path conflicts when clearing unknown files."

File last commit:

r39232:8c6775e8 stable
r39232:8c6775e8 stable
Show More
test-merge1.t
431 lines | 10.9 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
Augie Fackler
tests: clean up even more direct `python` calls with $PYTHON...
r33286 $ 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
Yuya Nishihara
merge: do not delete untracked files silently (issue5962)...
r39232 abort: Directory not empty: '$TESTTMP/t/b'
[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)
[255]
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
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
abort: merge.checkunknown not valid ('x' is none of 'abort', 'ignore', 'warn')
[255]
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)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
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)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
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)
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > raise error.Abort('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 ..