]> git.eshelyaron.com Git - emacs.git/commitdiff
Always update VC packages from a vc-dir buffer
authorPhilip Kaludercic <philipk@posteo.net>
Fri, 26 Apr 2024 06:21:37 +0000 (08:21 +0200)
committerEshel Yaron <me@eshelyaron.com>
Mon, 29 Apr 2024 15:02:48 +0000 (17:02 +0200)
* lisp/emacs-lisp/package-vc.el (vc-dir-prepare-status-buffer):
Add a declaration.
(package-vc-upgrade): Prepare a dummy vc-dir buffer to ensure
that 'vc-pull' (or rather 'vc-deduce-fileset') can correctly
infer the VC backend to use.  (bug#70526)

(cherry picked from commit 758fe9b670e9d889f5dee541c492417af6af9f10)

lisp/emacs-lisp/package-vc.el

index ef056c7909b154d327cf0e8ecef9b30e53663b18..c86577b6b26d5607b6775c694af4f2f39201c72a 100644 (file)
@@ -774,6 +774,9 @@ conflicts with its remote repository state."
         (package-vc-upgrade pkg-desc))))
   (message "Done upgrading packages."))
 
+(declare-function vc-dir-prepare-status-buffer "vc-dir"
+                  (bname dir backend &optional create-new))
+
 ;;;###autoload
 (defun package-vc-upgrade (pkg-desc)
   "Upgrade the package described by PKG-DESC from package's VC repository.
@@ -810,7 +813,10 @@ with the remote repository state."
                   (remove-hook 'vc-post-command-functions post-upgrade))))))
     (add-hook 'vc-post-command-functions post-upgrade)
     (with-demoted-errors "Failed to fetch: %S"
-      (let ((default-directory pkg-dir))
+      (require 'vc-dir)
+      (with-current-buffer (vc-dir-prepare-status-buffer
+                            (format " *package-vc-dir: %s*" pkg-dir)
+                            pkg-dir (vc-responsible-backend pkg-dir))
         (vc-pull)))))
 
 (defun package-vc--archives-initialize ()