diff options
| author | Glenn Morris | 2017-12-01 22:06:40 -0500 |
|---|---|---|
| committer | Glenn Morris | 2017-12-01 22:06:40 -0500 |
| commit | 0b6f4f2c6086a04b27d87d4f06b71334da3933d5 (patch) | |
| tree | ab909b893a16db55aa407c0f764c250905a9fec5 /admin | |
| parent | 7c95819de0bb351e77449877cb6899444a99d0c1 (diff) | |
| download | emacs-0b6f4f2c6086a04b27d87d4f06b71334da3933d5.tar.gz emacs-0b6f4f2c6086a04b27d87d4f06b71334da3933d5.zip | |
* admin/gitmerge.el (gitmerge-resolve): Handle NEWS. (Bug#29366)
Diffstat (limited to 'admin')
| -rw-r--r-- | admin/gitmerge.el | 60 |
1 files changed, 41 insertions, 19 deletions
diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 3c65b0e6951..69f48b877af 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el | |||
| @@ -307,25 +307,47 @@ Returns non-nil if conflicts remain." | |||
| 307 | ;; (pop-to-buffer (current-buffer)) (debug 'before-resolve) | 307 | ;; (pop-to-buffer (current-buffer)) (debug 'before-resolve) |
| 308 | )) | 308 | )) |
| 309 | ;; Try to resolve the conflicts. | 309 | ;; Try to resolve the conflicts. |
| 310 | (cond | 310 | (let (temp) |
| 311 | ;; Generated files. | 311 | (cond |
| 312 | ((member file '("lisp/ldefs-boot.el")) | 312 | ((and (equal file "etc/NEWS") |
| 313 | ;; We are in the file's buffer, so names are relative. | 313 | (ignore-errors |
| 314 | (call-process "git" nil t nil "reset" "--" | 314 | (setq temp |
| 315 | (file-name-nondirectory file)) | 315 | (format "NEWS.%s" |
| 316 | (call-process "git" nil t nil "checkout" "--" | 316 | (gitmerge-emacs-version gitmerge--from)))) |
| 317 | (file-name-nondirectory file)) | 317 | (file-exists-p temp) |
| 318 | (revert-buffer nil 'noconfirm)) | 318 | (or noninteractive |
| 319 | (t | 319 | (y-or-n-p "Try to fix NEWS conflict? "))) |
| 320 | (goto-char (point-max)) | 320 | (let ((relfile (file-name-nondirectory file)) |
| 321 | (while (re-search-backward smerge-begin-re nil t) | 321 | (tempfile (make-temp-file "gitmerge"))) |
| 322 | (save-excursion | 322 | (unwind-protect |
| 323 | (ignore-errors | 323 | (progn |
| 324 | (smerge-match-conflict) | 324 | (call-process "git" nil `(:file ,tempfile) nil "diff" |
| 325 | (smerge-resolve)))) | 325 | (format ":1:%s" file) |
| 326 | ;; (when (derived-mode-p 'change-log-mode) | 326 | (format ":3:%s" file)) |
| 327 | ;; (pop-to-buffer (current-buffer)) (debug 'after-resolve)) | 327 | (call-process "git" nil t nil "reset" "--" relfile) |
| 328 | (save-buffer))) | 328 | (call-process "git" nil t nil "checkout" "--" relfile) |
| 329 | (revert-buffer nil 'noconfirm) | ||
| 330 | (call-process "patch" tempfile nil nil temp) | ||
| 331 | (call-process "git" nil t nil "add" "--" temp)) | ||
| 332 | (delete-file tempfile)))) | ||
| 333 | ;; Generated files. | ||
| 334 | ((member file '("lisp/ldefs-boot.el")) | ||
| 335 | ;; We are in the file's buffer, so names are relative. | ||
| 336 | (call-process "git" nil t nil "reset" "--" | ||
| 337 | (file-name-nondirectory file)) | ||
| 338 | (call-process "git" nil t nil "checkout" "--" | ||
| 339 | (file-name-nondirectory file)) | ||
| 340 | (revert-buffer nil 'noconfirm)) | ||
| 341 | (t | ||
| 342 | (goto-char (point-max)) | ||
| 343 | (while (re-search-backward smerge-begin-re nil t) | ||
| 344 | (save-excursion | ||
| 345 | (ignore-errors | ||
| 346 | (smerge-match-conflict) | ||
| 347 | (smerge-resolve)))) | ||
| 348 | ;; (when (derived-mode-p 'change-log-mode) | ||
| 349 | ;; (pop-to-buffer (current-buffer)) (debug 'after-resolve)) | ||
| 350 | (save-buffer)))) | ||
| 329 | (goto-char (point-min)) | 351 | (goto-char (point-min)) |
| 330 | (prog1 (re-search-forward smerge-begin-re nil t) | 352 | (prog1 (re-search-forward smerge-begin-re nil t) |
| 331 | (unless exists (kill-buffer)))))))) | 353 | (unless exists (kill-buffer)))))))) |