Mercurial > hg
comparison mercurial/merge.py @ 8753:af5f099d932b
merge: refactor manifestmerge init to better report effective ancestor
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 08 Jun 2009 18:14:44 -0500 |
parents | f177bdab261b |
children | ab668c92a036 |
comparison
equal
deleted
inserted
replaced
8752:f177bdab261b | 8753:af5f099d932b |
---|---|
123 | 123 |
124 overwrite = whether we clobber working files | 124 overwrite = whether we clobber working files |
125 partial = function to filter file lists | 125 partial = function to filter file lists |
126 """ | 126 """ |
127 | 127 |
128 repo.ui.note(_("resolving manifests\n")) | |
129 repo.ui.debug(_(" overwrite %s partial %s\n") % (overwrite, bool(partial))) | |
130 repo.ui.debug(_(" ancestor %s local %s remote %s\n") % (pa, p1, p2)) | |
131 | |
132 action = [] | |
133 copy, copied = {}, {} | |
134 m1 = p1.manifest() | |
135 m2 = p2.manifest() | |
136 | |
137 def fmerge(f, f2, fa): | 128 def fmerge(f, f2, fa): |
138 """merge flags""" | 129 """merge flags""" |
139 a, m, n = ma.flags(fa), m1.flags(f), m2.flags(f2) | 130 a, m, n = ma.flags(fa), m1.flags(f), m2.flags(f2) |
140 if m == n: # flags agree | 131 if m == n: # flags agree |
141 return m # unchanged | 132 return m # unchanged |
153 | 144 |
154 def act(msg, m, f, *args): | 145 def act(msg, m, f, *args): |
155 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m)) | 146 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m)) |
156 action.append((f, m) + args) | 147 action.append((f, m) + args) |
157 | 148 |
149 action, copy = [], {} | |
150 | |
158 if overwrite: | 151 if overwrite: |
159 ma = m1 | 152 pa = p1 |
160 elif p2 == pa: # backwards | 153 elif pa == p2: # backwards |
161 ma = p1.p1().manifest() | 154 pa = p1.p1() |
162 else: | 155 elif pa and repo.ui.configbool("merge", "followcopies", True): |
163 ma = pa.manifest() | 156 dirs = repo.ui.configbool("merge", "followdirs", True) |
164 if pa and repo.ui.configbool("merge", "followcopies", True): | 157 copy, diverge = copies.copies(repo, p1, p2, pa, dirs) |
165 dirs = repo.ui.configbool("merge", "followdirs", True) | 158 for of, fl in diverge.iteritems(): |
166 copy, diverge = copies.copies(repo, p1, p2, pa, dirs) | 159 act("divergent renames", "dr", of, fl) |
167 for of, fl in diverge.iteritems(): | 160 |
168 act("divergent renames", "dr", of, fl) | 161 repo.ui.note(_("resolving manifests\n")) |
169 copied = set(copy.values()) | 162 repo.ui.debug(_(" overwrite %s partial %s\n") % (overwrite, bool(partial))) |
163 repo.ui.debug(_(" ancestor %s local %s remote %s\n") % (pa, p1, p2)) | |
164 | |
165 m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest() | |
166 copied = set(copy.values()) | |
170 | 167 |
171 # Compare manifests | 168 # Compare manifests |
172 for f, n in m1.iteritems(): | 169 for f, n in m1.iteritems(): |
173 if partial and not partial(f): | 170 if partial and not partial(f): |
174 continue | 171 continue |