119 # are files different? |
123 # are files different? |
120 if n != m2[f]: |
124 if n != m2[f]: |
121 a = ma.get(f, nullid) |
125 a = ma.get(f, nullid) |
122 # are both different from the ancestor? |
126 # are both different from the ancestor? |
123 if not overwrite and n != a and m2[f] != a: |
127 if not overwrite and n != a and m2[f] != a: |
124 ui.debug(_(" %s versions differ, resolve\n") % f) |
128 act("versions differ", f, "m", fmerge(f), n[:20], m2[f]) |
125 action.append((f, "m", fmerge(f), n[:20], m2[f])) |
|
126 # are we clobbering? |
129 # are we clobbering? |
127 # is remote's version newer? |
130 # is remote's version newer? |
128 # or are we going back in time and clean? |
131 # or are we going back in time and clean? |
129 elif overwrite or m2[f] != a or (backwards and not n[20:]): |
132 elif overwrite or m2[f] != a or (backwards and not n[20:]): |
130 ui.debug(_(" remote %s is newer, get\n") % f) |
133 act("remote is newer", f, "g", m2.execf(f), m2[f]) |
131 action.append((f, "g", m2.execf(f), m2[f])) |
|
132 # local is newer, not overwrite, check mode bits |
134 # local is newer, not overwrite, check mode bits |
133 elif fmerge(f) != m1.execf(f): |
135 elif fmerge(f) != m1.execf(f): |
134 ui.debug(_(" updating permissions for %s\n") % f) |
136 act("update permissions", f, "e", m2.execf(f)) |
135 action.append((f, "e", m2.execf(f))) |
|
136 # contents same, check mode bits |
137 # contents same, check mode bits |
137 elif m1.execf(f) != m2.execf(f): |
138 elif m1.execf(f) != m2.execf(f): |
138 if overwrite or fmerge(f) != m1.execf(f): |
139 if overwrite or fmerge(f) != m1.execf(f): |
139 ui.debug(_(" updating permissions for %s\n") % f) |
140 act("update permissions", f, "e", m2.execf(f)) |
140 action.append((f, "e", m2.execf(f))) |
|
141 del m2[f] |
141 del m2[f] |
142 elif f in ma: |
142 elif f in ma: |
143 if n != ma[f] and not overwrite: |
143 if n != ma[f] and not overwrite: |
144 if ui.prompt( |
144 if ui.prompt( |
145 (_(" local changed %s which remote deleted\n") % f) + |
145 (_(" local changed %s which remote deleted\n") % f) + |
146 _("(k)eep or (d)elete?"), _("[kd]"), _("k")) == _("d"): |
146 _("(k)eep or (d)elete?"), _("[kd]"), _("k")) == _("d"): |
147 action.append((f, "r")) |
147 act("prompt delete", f, "r") |
148 else: |
148 else: |
149 ui.debug(_("other deleted %s\n") % f) |
149 act("other deleted", f, "r") |
150 action.append((f, "r")) |
|
151 else: |
150 else: |
152 # file is created on branch or in working directory |
151 # file is created on branch or in working directory |
153 if (overwrite and n[20:] != "u") or (backwards and not n[20:]): |
152 if (overwrite and n[20:] != "u") or (backwards and not n[20:]): |
154 ui.debug(_("remote deleted %s, clobbering\n") % f) |
153 act("remote deleted", f, "r") |
155 action.append((f, "r")) |
|
156 else: |
|
157 ui.debug(_("local created %s, keeping\n") % f) |
|
158 |
154 |
159 for f, n in m2.iteritems(): |
155 for f, n in m2.iteritems(): |
160 if f in ma: |
156 if f in ma: |
161 if overwrite or backwards: |
157 if overwrite or backwards: |
162 ui.debug(_("local deleted %s, recreating\n") % f) |
158 act("recreating", f, "g", m2.execf(f), n) |
163 action.append((f, "g", m2.execf(f), n)) |
|
164 elif n != ma[f]: |
159 elif n != ma[f]: |
165 if ui.prompt( |
160 if ui.prompt( |
166 (_("remote changed %s which local deleted\n") % f) + |
161 (_("remote changed %s which local deleted\n") % f) + |
167 _("(k)eep or (d)elete?"), _("[kd]"), _("k")) == _("k"): |
162 _("(k)eep or (d)elete?"), _("[kd]"), _("k")) == _("k"): |
168 action.append((f, "g", m2.execf(f), n)) |
163 act("prompt recreating", f, "g", m2.execf(f), n) |
169 else: |
|
170 ui.debug(_("local deleted %s\n") % f) |
|
171 else: |
164 else: |
172 ui.debug(_("remote created %s\n") % f) |
165 act("remote created", f, "g", m2.execf(f), n) |
173 action.append((f, "g", m2.execf(f), n)) |
|
174 |
166 |
175 return action |
167 return action |
176 |
168 |
177 def applyupdates(repo, action, xp1, xp2): |
169 def applyupdates(repo, action, xp1, xp2): |
178 updated, merged, removed, unresolved = 0, 0, 0, 0 |
170 updated, merged, removed, unresolved = 0, 0, 0, 0 |