Show More
@@ -0,0 +1,31 b'' | |||
|
1 | #!/bin/sh | |
|
2 | ||
|
3 | # In the merge below, the file "foo" has the same contents in both | |
|
4 | # parents, but if we look at the file-level history, we'll notice that | |
|
5 | # the version in p1 is an ancestor of the version in p2. This test | |
|
6 | # makes sure that we'll use the version from p2 in the manifest of the | |
|
7 | # merge revision. | |
|
8 | ||
|
9 | hg init repo | |
|
10 | cd repo | |
|
11 | ||
|
12 | echo foo > foo | |
|
13 | hg ci -d '0 0' -qAm 'add foo' | |
|
14 | ||
|
15 | echo bar >> foo | |
|
16 | hg ci -d '0 0' -m 'change foo' | |
|
17 | ||
|
18 | hg backout -d '0 0' -r tip -m 'backout changed foo' | |
|
19 | ||
|
20 | hg up -C 0 | |
|
21 | touch bar | |
|
22 | hg ci -d '0 0' -qAm 'add bar' | |
|
23 | ||
|
24 | hg merge --debug | |
|
25 | hg debugstate | grep foo | |
|
26 | hg st -A foo | |
|
27 | hg ci -d '0 0' -m 'merge' | |
|
28 | ||
|
29 | hg manifest --debug | grep foo | |
|
30 | hg debugindex .hg/store/data/foo.i | |
|
31 |
@@ -0,0 +1,17 b'' | |||
|
1 | reverting foo | |
|
2 | changeset 2:4d9e78aaceee backs out changeset 1:b515023e500e | |
|
3 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
4 | resolving manifests | |
|
5 | overwrite None partial False | |
|
6 | ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee | |
|
7 | foo: remote is newer -> g | |
|
8 | getting foo | |
|
9 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
10 | (branch merge, don't forget to commit) | |
|
11 | n 0 -2 unset foo | |
|
12 | M foo | |
|
13 | c6fc755d7e68f49f880599da29f15add41f42f5a 644 foo | |
|
14 | rev offset length base linkrev nodeid p1 p2 | |
|
15 | 0 0 5 0 0 2ed2a3912a0b 000000000000 000000000000 | |
|
16 | 1 5 9 1 1 6f4310b00b9a 2ed2a3912a0b 000000000000 | |
|
17 | 2 14 5 2 2 c6fc755d7e68 6f4310b00b9a 000000000000 |
@@ -1050,7 +1050,7 b' class queue:' | |||
|
1050 | 1050 | for f in m: |
|
1051 | 1051 | repo.dirstate.normal(f) |
|
1052 | 1052 | for f in mm: |
|
1053 |
repo.dirstate.normal |
|
|
1053 | repo.dirstate.normallookup(f) | |
|
1054 | 1054 | for f in forget: |
|
1055 | 1055 | repo.dirstate.forget(f) |
|
1056 | 1056 |
@@ -202,18 +202,24 b' class dirstate(object):' | |||
|
202 | 202 | self._incpath(f) |
|
203 | 203 | |
|
204 | 204 | def normal(self, f): |
|
205 | 'mark a file normal' | |
|
205 | 'mark a file normal and clean' | |
|
206 | 206 | self._dirty = True |
|
207 | 207 | s = os.lstat(self._join(f)) |
|
208 | 208 | self._map[f] = ('n', s.st_mode, s.st_size, s.st_mtime) |
|
209 | 209 | if self._copymap.has_key(f): |
|
210 | 210 | del self._copymap[f] |
|
211 | 211 | |
|
212 |
def normal |
|
|
212 | def normallookup(self, f): | |
|
213 | 213 | 'mark a file normal, but possibly dirty' |
|
214 | 214 | self._dirty = True |
|
215 | s = os.lstat(self._join(f)) | |
|
216 | self._map[f] = ('n', s.st_mode, -1, -1) | |
|
215 | self._map[f] = ('n', 0, -1, -1) | |
|
216 | if f in self._copymap: | |
|
217 | del self._copymap[f] | |
|
218 | ||
|
219 | def normaldirty(self, f): | |
|
220 | 'mark a file normal, but dirty' | |
|
221 | self._dirty = True | |
|
222 | self._map[f] = ('n', 0, -2, -1) | |
|
217 | 223 | if f in self._copymap: |
|
218 | 224 | del self._copymap[f] |
|
219 | 225 | |
@@ -523,6 +529,7 b' class dirstate(object):' | |||
|
523 | 529 | st = lstat(_join(fn)) |
|
524 | 530 | if (size >= 0 and (size != st.st_size |
|
525 | 531 | or (mode ^ st.st_mode) & 0100) |
|
532 | or size == -2 | |
|
526 | 533 | or fn in self._copymap): |
|
527 | 534 | madd(fn) |
|
528 | 535 | elif time != int(st.st_mtime): |
@@ -998,7 +998,7 b' class localrepository(repo.repository):' | |||
|
998 | 998 | elif self.dirstate[f] in 'amn': |
|
999 | 999 | self.ui.warn(_("%s already tracked!\n") % f) |
|
1000 | 1000 | elif self.dirstate[f] == 'r': |
|
1001 |
self.dirstate.normal |
|
|
1001 | self.dirstate.normallookup(f) | |
|
1002 | 1002 | else: |
|
1003 | 1003 | self.dirstate.add(f) |
|
1004 | 1004 | finally: |
@@ -543,7 +543,7 b' def recordupdates(repo, action, branchme' | |||
|
543 | 543 | # of that file some time in the past. Thus our |
|
544 | 544 | # merge will appear as a normal local file |
|
545 | 545 | # modification. |
|
546 |
repo.dirstate.normal |
|
|
546 | repo.dirstate.normallookup(fd) | |
|
547 | 547 | if move: |
|
548 | 548 | repo.dirstate.forget(f) |
|
549 | 549 | elif m == "d": # directory rename |
General Comments 0
You need to be logged in to leave comments.
Login now