1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-05 22:20:24 -08:00

Compare commits

...

2 commits

Author SHA1 Message Date
Sean Whitton
df4d8c1475 * lisp/vc/vc.el (vc-push): Delay clearing incoming revisions cache. 2025-12-02 11:55:14 +00:00
Sean Whitton
7780ac923c * lisp/vc/vc.el (vc--incoming-revision): Do store 'nil'. 2025-12-02 11:43:54 +00:00

View file

@ -4026,18 +4026,23 @@ The command prompts for the branch whose change log to show."
;; incoming revision is fine except for the rare case in which someone
;; else cherry-picks the very same commits that you have outstanding,
;; and pushes them. Given this, we implement our own caching.
(or (and (not refresh)
(cdr (assoc upstream-location
(vc--repo-getprop 'vc-incoming-revision))))
(and-let* ((res (vc-call-backend backend 'incoming-revision
upstream-location refresh)))
(if-let* ((alist (vc--repo-getprop 'vc-incoming-revision)))
(setf (alist-get upstream-location alist nil nil #'equal)
res)
(vc--repo-setprop 'vc-incoming-revision
`((,upstream-location . ,res))))
res)
(user-error "No incoming revision -- local-only branch?")))
;;
;; Do store `nil', before signalling an error, if there is no incoming
;; revision, because that's also something that can be slow to
;; determine and so should be remembered.
(if-let* ((_ (not refresh))
(record (assoc upstream-location
(vc--repo-getprop 'vc-incoming-revision))))
(cdr record)
(let ((res (vc-call-backend backend 'incoming-revision
upstream-location refresh)))
(if-let* ((alist (vc--repo-getprop 'vc-incoming-revision)))
(setf (alist-get upstream-location alist nil nil #'equal)
res)
(vc--repo-setprop 'vc-incoming-revision
`((,upstream-location . ,res))))
(or res
(user-error "No incoming revision -- local-only branch?")))))
;;;###autoload
(defun vc-log-incoming (&optional upstream-location)
@ -4272,7 +4277,8 @@ It also signals an error in a Bazaar bound branch."
(progn (vc-call-backend backend 'push arg)
;; FIXME: Ideally we would only clear out the
;; REMOTE-LOCATION to which we are pushing.
(vc--repo-setprop 'vc-incoming-revision nil))
(vc-run-delayed
(vc--repo-setprop 'vc-incoming-revision nil)))
(user-error "VC push is unsupported for `%s'" backend))))
;;;###autoload