Mercurial > emacs
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'." |