comparison admin/bzrmerge.el @ 112336:7e5855ddf3f2

* admin/bzrmerge.el (bzrmerge-apply): Warn the user when the tree might be in an inconsistent state.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 17 Jan 2011 16:18:00 -0500
parents 8f641c1fc9cc
children c22f11c3d8ba
comparison
equal deleted inserted replaced
112335:d3c691ea0839 112336:7e5855ddf3f2
216 (when (equal (cdr bzrmerge-already-done) (list from missing)) 216 (when (equal (cdr bzrmerge-already-done) (list from missing))
217 (setq missing (car bzrmerge-already-done))) 217 (setq missing (car bzrmerge-already-done)))
218 (setq bzrmerge-already-done nil) 218 (setq bzrmerge-already-done nil)
219 (let ((merge (car missing)) 219 (let ((merge (car missing))
220 (skip (cdr missing)) 220 (skip (cdr missing))
221 (unsafe nil)
221 beg end) 222 beg end)
222 (when (or merge skip) 223 (when (or merge skip)
223 (cond 224 (cond
224 ((and skip (or (null merge) (< (car skip) (car merge)))) 225 ((and skip (or (null merge) (< (car skip) (car merge))))
225 ;; Do a "skip" (i.e. merge the meta-data only). 226 ;; Do a "skip" (i.e. merge the meta-data only).
247 ;; metadata properly except when the checkout is clean. 248 ;; metadata properly except when the checkout is clean.
248 (call-process "bzr" nil t nil "merge" 249 (call-process "bzr" nil t nil "merge"
249 "--force" "-r" (format "%s..%s" beg end) from) 250 "--force" "-r" (format "%s..%s" beg end) from)
250 ;; The merge did not update the metadata, so force the next time 251 ;; The merge did not update the metadata, so force the next time
251 ;; around to update it (as a "skip"). 252 ;; around to update it (as a "skip").
253 (setq unsafe t)
252 (push end skip)) 254 (push end skip))
253 (pop-to-buffer (current-buffer)) 255 (pop-to-buffer (current-buffer))
254 (sit-for 1) 256 (sit-for 1)
255 ;; (debug 'after-merge) 257 ;; (debug 'after-merge)
256 ;; Check the conflicts. 258 ;; Check the conflicts.
269 (if (bzrmerge-resolve file) 271 (if (bzrmerge-resolve file)
270 (setq conflicted t))) 272 (setq conflicted t)))
271 (when conflicted 273 (when conflicted
272 (setq bzrmerge-already-done 274 (setq bzrmerge-already-done
273 (list (cons merge skip) from missing)) 275 (list (cons merge skip) from missing))
276 (if unsafe
277 ;; FIXME: Obviously, we'd rather make it right rather
278 ;; than output such a warning. But I don't know how to add
279 ;; the metadata to bzr's since the technique used in
280 ;; bzrmerge-add-metadata does not work when there
281 ;; are conflicts.
282 (display-warning 'bzrmerge "Resolve conflicts manually.
283 ¡BEWARE! Important metadata is kept in this Emacs session!
284 Do not commit without re-running `M-x bzrmerge' first!")))
274 (error "Resolve conflicts manually"))))) 285 (error "Resolve conflicts manually")))))
275 (cons merge skip))))) 286 (cons merge skip)))))
276 287
277 (defun bzrmerge (from) 288 (defun bzrmerge (from)
278 "Merge from branch FROM into `default-directory'." 289 "Merge from branch FROM into `default-directory'."