tests/test-flags.out
author maf46@burn.cl.cam.ac.uk
Mon, 04 Jul 2005 12:38:34 -0800
changeset 616 d45d1c90032e
parent 591 eb46971fc57f
child 619 d96c1153b25d
permissions -rw-r--r--
Fix zombie files in merge # HG changeset patch # User maf46@burn.cl.cam.ac.uk # Node ID 57667c9b93a5a743e4629d15a0e6bd76699130c3 # Parent d2994b5298fb20f87dc1d4747635b280db3c0526 Fix zombie files in merge Keir Fraser observed the following: > I made a small test case that illustrates the bug in merging changesets > with 'hg remove's in them: > > 1. Create a repository A containing files foo & bar. > 2. Create clone called B. > 3. A removes file bar, and commits this removal. > 4. B edits file foo, and commits this edit. > > Now, if B: > # hg pull ../A; hg update -m; hg commit > Then bar remains deleted. > > If A: > # hg pull ../B; hg update -m; hg commit > Then bar is resurrected! > > It looks as though, when you merge across a branch, any deletions in > your own branch are forgotten. > ... > Fixing this is a must, as zombie files are a real pain. :-) Keir later patched our local copy of hg as shown below, which fixes the problem. I've also enclosed a test which captures the test Keir outlined... Files deleted on a branch should not automatically reappear in a merge Patch notes: 1. The first chunk does not change behaviour, but cleans up the code to more closely match check of 'force' in the second chunk. I think it makes the code clearer. 2. The second chunk fixes two bugs -- i. If we choose to keep a remotely-changed locally-deleted file, then we need to 'get' that file. If we choose to delete it then no action need be taken (it is already deleted in the working manifest). Without this fix, choosing to delete would get a Python traceback. ii. The test for whether the file was remotely-created is insufficient. It is only true if f is not in the common ancestor. Otherwise the file was deleted locally, and should remain deleted. (this is the most important fix!) Index: hg/tests/test-merge6 ===================================================================
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
491
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     1
+ umask 027
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     2
+ mkdir test1
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     3
+ cd test1
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     4
+ hg init
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     5
+ touch a b
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     6
+ hg add a b
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     7
+ hg ci -t 'added a b' -u test -d '0 0'
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     8
+ cd ..
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
     9
+ mkdir test2
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    10
+ cd test2
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    11
+ hg init
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    12
+ hg pull ../test1
412
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    13
pulling from ../test1
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    14
requesting all changes
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    15
adding changesets
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    16
adding manifests
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    17
adding file revisions
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    18
modified 2 files, added 1 changesets and 2 new revisions
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    19
(run 'hg update' to get a working copy)
491
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    20
+ hg co
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    21
+ chmod +x a
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    22
+ hg ci -t 'chmod +x a' -u test -d '0 0'
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    23
+ cd ../test1
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    24
+ echo 123
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    25
+ hg ci -t 'a updated' -u test -d '0 0'
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    26
+ hg pull ../test2
412
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    27
pulling from ../test2
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    28
searching for changes
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    29
adding changesets
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    30
adding manifests
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    31
adding file revisions
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    32
modified 1 files, added 1 changesets and 1 new revisions
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    33
(run 'hg update' to get a working copy)
491
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    34
+ hg heads
412
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    35
changeset:   2:3ef54330565526bebf37a0d9bf540c283fd133a1
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    36
tag:         tip
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    37
parent:      0:22a449e20da501ca558394c083ca470e9c81b9f7
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    38
user:        test
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    39
date:        Thu Jan  1 00:00:00 1970
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    40
summary:     chmod +x a
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    41
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    42
changeset:   1:c6ecefc45368ed556d965f1c1086c6561a8b2ac5
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    43
user:        test
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    44
date:        Thu Jan  1 00:00:00 1970
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    45
summary:     a updated
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    46
491
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    47
+ hg history
412
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    48
changeset:   2:3ef54330565526bebf37a0d9bf540c283fd133a1
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    49
tag:         tip
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    50
parent:      0:22a449e20da501ca558394c083ca470e9c81b9f7
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    51
user:        test
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    52
date:        Thu Jan  1 00:00:00 1970
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    53
summary:     chmod +x a
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    54
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    55
changeset:   1:c6ecefc45368ed556d965f1c1086c6561a8b2ac5
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    56
user:        test
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    57
date:        Thu Jan  1 00:00:00 1970
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    58
summary:     a updated
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    59
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    60
changeset:   0:22a449e20da501ca558394c083ca470e9c81b9f7
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    61
user:        test
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    62
date:        Thu Jan  1 00:00:00 1970
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    63
summary:     added a b
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    64
591
eb46971fc57f options: kill -d for debug
mpm@selenic.com
parents: 495
diff changeset
    65
+ hg -v co -m
412
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    66
resolving manifests
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    67
merging a
40cfa2d0c088 [PATCH]: Typo in localrepository.update
mpm@selenic.com
parents:
diff changeset
    68
resolving a
491
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    69
+ ls -l ../test1/a ../test2/a
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    70
+ cut -b 0-10
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    71
-rwxr-x---
66eb9905d0a2 Fixed test-flags and .out for arbitrary umask settings. Use -ex shell flags.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 414
diff changeset
    72
-rwxr-x---