aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorGlenn Morris2017-12-01 22:06:40 -0500
committerGlenn Morris2017-12-01 22:06:40 -0500
commit0b6f4f2c6086a04b27d87d4f06b71334da3933d5 (patch)
treeab909b893a16db55aa407c0f764c250905a9fec5 /admin
parent7c95819de0bb351e77449877cb6899444a99d0c1 (diff)
downloademacs-0b6f4f2c6086a04b27d87d4f06b71334da3933d5.tar.gz
emacs-0b6f4f2c6086a04b27d87d4f06b71334da3933d5.zip
* admin/gitmerge.el (gitmerge-resolve): Handle NEWS. (Bug#29366)
Diffstat (limited to 'admin')
-rw-r--r--admin/gitmerge.el60
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))))))))