.hgignore
author maf46@burn.cl.cam.ac.uk
Mon, 04 Jul 2005 12:38:34 -0800
changeset 616 d45d1c90032e
parent 429 688d03d6997a
child 671 efa4a7e2f322
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:
51
0cbcdb855156 Ignore .orig and .rej files from patch
mpm@selenic.com
parents: 8
diff changeset
     1
.*\.orig
0cbcdb855156 Ignore .orig and .rej files from patch
mpm@selenic.com
parents: 8
diff changeset
     2
.*\.rej
1
273ce12ad8f1 Update README to discuss remote pull, rsync, and the hg repo
mpm@selenic.com
parents:
diff changeset
     3
.*~
72
4a6ab4d80dc4 Add an O(m + nlog n) patching extension
mpm@selenic.com
parents: 51
diff changeset
     4
.*\.so
3
3a6392190075 Ignore build/ and .pyc files
mpm@selenic.com
parents: 1
diff changeset
     5
.*pyc
3a6392190075 Ignore build/ and .pyc files
mpm@selenic.com
parents: 1
diff changeset
     6
build/.*
8
e5a480dadca3 Ignore MANIFEST
mpm@selenic.com
parents: 6
diff changeset
     7
dist/
e5a480dadca3 Ignore MANIFEST
mpm@selenic.com
parents: 6
diff changeset
     8
MANIFEST$
352
ca39b80cbe15 ignore files associated with quilt
mpm@selenic.com
parents: 72
diff changeset
     9
.pc/
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 352
diff changeset
    10
patches/
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 352
diff changeset
    11
mercurial/__version__.py$