]> git.eshelyaron.com Git - emacs.git/commitdiff
VC: Deprecate log-incoming and log-outgoing backend functions
authorSean Whitton <spwhitton@spwhitton.name>
Fri, 6 Jun 2025 08:53:32 +0000 (09:53 +0100)
committerEshel Yaron <me@eshelyaron.com>
Sat, 7 Jun 2025 20:01:43 +0000 (22:01 +0200)
* lisp/vc/vc-git.el (vc-git-incoming-revision):
Inline vc-git--fetch-incoming.
(vc-git--fetch-incoming, vc-git-log-incoming)
(vc-git-log-outgoing): Delete.
* lisp/vc/vc-hg.el (vc-hg-mergebase):
* lisp/vc/vc.el (vc-default-log-incoming)
(vc-default-log-outgoing): New functions.
* lisp/vc/vc.el:
* etc/NEWS: Document the deprecation.

(cherry picked from commit ac4869c71293c28f861f306420f5d0620cf3a7cc)

lisp/vc/vc-bzr.el
lisp/vc/vc-git.el
lisp/vc/vc-hg.el
lisp/vc/vc.el
test/lisp/vc/vc-tests/vc-tests.el

index f4a1978a40b7efc24f092afc81f333ad95528983..1a4db1320e573c14c553a539b84bcb3878cb9dc4 100644 (file)
@@ -816,6 +816,7 @@ If LIMIT is non-nil, show no more than this many entries."
       (indent-region (match-end 0) (point-max) 2)
       (buffer-substring (match-end 0) (point-max)))))
 
+;; FIXME: Implement `vc-bzr-mergebase' and then delete this.
 (defun vc-bzr-log-incoming (buffer remote-location)
   (apply #'vc-bzr-command "missing" buffer 'async nil
         (list "--theirs-only" (and (not (string-empty-p remote-location))
@@ -832,6 +833,7 @@ If LIMIT is non-nil, show no more than this many entries."
     (and (re-search-forward "^revision-id: " nil t)
          (buffer-substring (point) (pos-eol)))))
 
+;; FIXME: Implement `vc-bzr-mergebase' and then delete this.
 (defun vc-bzr-log-outgoing (buffer remote-location)
   (apply #'vc-bzr-command "missing" buffer 'async nil
         (list "--mine-only" (and (not (string-empty-p remote-location))
index c6e95ccd97351559bf4fee7f59ae7710b74497a7..4409af630416c8577f2d1b19925c118c84e22dff 100644 (file)
@@ -70,8 +70,7 @@
 ;; - get-change-comment (files rev)                OK
 ;; HISTORY FUNCTIONS
 ;; * print-log (files buffer &optional shortlog start-revision limit)   OK
-;; * log-outgoing (buffer remote-location)         OK
-;; * log-incoming (buffer remote-location)         OK
+;; * incoming-revision (remote-location)           OK
 ;; - log-search (buffer pattern)                   OK
 ;; - log-view-mode ()                              OK
 ;; - show-log-entry (revision)                     OK
@@ -1577,41 +1576,12 @@ If LIMIT is a revision string, use it as an end-revision."
                   (list "-p"))
                '("--")))))))
 
-(defun vc-git-log-outgoing (buffer remote-location)
-  (vc-setup-buffer buffer)
-  (apply #'vc-git-command buffer 'async nil
-         `("log"
-           "--no-color" "--graph" "--decorate" "--date=short"
-           ,(format "--pretty=tformat:%s" (car vc-git-root-log-format))
-           "--abbrev-commit"
-           ,@(ensure-list vc-git-shortlog-switches)
-           ,(concat (if (string-empty-p remote-location)
-                       "@{upstream}"
-                     remote-location)
-                   "..HEAD"))))
-
-(defun vc-git--fetch-incoming (remote-location)
+(defun vc-git-incoming-revision (remote-location)
   (vc-git-command nil 0 nil "fetch"
                   (and (not (string-empty-p remote-location))
                        ;; Extract remote from "remote/branch".
                        (replace-regexp-in-string "/.*" ""
-                                                 remote-location))))
-
-(defun vc-git-log-incoming (buffer remote-location)
-  (vc-setup-buffer buffer)
-  (vc-git--fetch-incoming remote-location)
-  (apply #'vc-git-command buffer 'async nil
-         `("log"
-           "--no-color" "--graph" "--decorate" "--date=short"
-           ,(format "--pretty=tformat:%s" (car vc-git-root-log-format))
-           "--abbrev-commit"
-           ,@(ensure-list vc-git-shortlog-switches)
-           ,(concat "HEAD.." (if (string-empty-p remote-location)
-                                "@{upstream}"
-                              remote-location)))))
-
-(defun vc-git-incoming-revision (remote-location)
-  (vc-git--fetch-incoming remote-location)
+                                                 remote-location)))
   (ignore-errors              ; in order to return nil if no such branch
     (with-output-to-string
       (vc-git-command standard-output 0 nil
index e1527935861b109d896b0704f2fd3e4d5766a018..04a85fadd92f2cf19723893c24090b131a7915c2 100644 (file)
@@ -1458,6 +1458,7 @@ This runs the command \"hg summary\"."
          (nreverse result))
        "\n"))))
 
+;; FIXME: Resolve issue with `vc-hg-mergebase' and then delete this.
 (defun vc-hg-log-incoming (buffer remote-location)
   (vc-setup-buffer buffer)
   (vc-hg-command buffer 1 nil "incoming" "-n"
@@ -1475,12 +1476,23 @@ This runs the command \"hg summary\"."
     (and (not (string-empty-p output))
          output)))
 
+;; FIXME: Resolve issue with `vc-hg-mergebase' and then delete this.
 (defun vc-hg-log-outgoing (buffer remote-location)
   (vc-setup-buffer buffer)
   (vc-hg-command buffer 1 nil "outgoing" "-n"
                  (and (not (string-empty-p remote-location))
                      remote-location)))
 
+;; FIXME: This works only when both rev1 and rev2 have already been pulled.
+;;        That means it can't do the work
+;;        `vc-default-log-incoming' and `vc-default-log-outgoing' need it to do.
+(defun vc-hg-mergebase (rev1 &optional rev2)
+  (or (vc-hg--run-log "{node}"
+                      (format "last(ancestors(%s) and ancestors(%s))"
+                              rev1 (or rev2 "tip"))
+                      nil)
+      (error "No common ancestor for merge base")))
+
 (defvar vc-hg-error-regexp-alist
   '(("^M \\(.+\\)" 1 nil nil 0))
   "Value of `compilation-error-regexp-alist' in *vc-hg* buffers.")
index 44b309e784c4bae56daeb043098b4a291a216154..c55b268867d3b63f2d65f6ddec843f8b8058394a 100644 (file)
 ;;   revision shown, rather than the working revision, which is normally
 ;;   the case).  Not all backends support this.
 ;;
-;; * log-outgoing (buffer remote-location)
+;; - log-outgoing (buffer remote-location) (DEPRECATED)
 ;;
 ;;   Insert in BUFFER the revision log for the changes that will be
 ;;   sent when performing a push operation to REMOTE-LOCATION.
+;;   Deprecated: implement incoming-revision and mergebase instead.
 ;;
-;; * log-incoming (buffer remote-location)
+;; - log-incoming (buffer remote-location) (DEPRECATED)
 ;;
 ;;   Insert in BUFFER the revision log for the changes that will be
 ;;   received when performing a pull operation from REMOTE-LOCATION.
+;;   Deprecated: implement incoming-revision and mergebase instead.
 ;;
 ;; * incoming-revision (remote-location)
 ;;
@@ -3247,6 +3249,16 @@ In some version control systems REMOTE-LOCATION can be a remote branch name."
     (vc-incoming-outgoing-internal backend (or remote-location "")
                                    "*vc-incoming*" 'log-incoming)))
 
+(defun vc-default-log-incoming (_backend buffer remote-location)
+  (vc--with-backend-in-rootdir ""
+    (let ((incoming (or (vc-call-backend backend
+                                         'incoming-revision
+                                         remote-location)
+                        (user-error "No incoming revision -- local-only branch?"))))
+      (vc-call-backend backend 'print-log (list rootdir) buffer t
+                       (vc-call-backend backend 'mergebase incoming)
+                       incoming))))
+
 ;;;###autoload
 (defun vc-log-outgoing (&optional remote-location)
   "Show log of changes that will be sent with a push operation to REMOTE-LOCATION.
@@ -3259,6 +3271,16 @@ In some version control systems REMOTE-LOCATION can be a remote branch name."
     (vc-incoming-outgoing-internal backend (or remote-location "")
                                    "*vc-outgoing*" 'log-outgoing)))
 
+(defun vc-default-log-outgoing (_backend buffer remote-location)
+  (vc--with-backend-in-rootdir ""
+    (let ((incoming (or (vc-call-backend backend
+                                         'incoming-revision
+                                         remote-location)
+                        (user-error "No incoming revision -- local-only branch?"))))
+      (vc-call-backend backend 'print-log (list rootdir) buffer t
+                       (vc-call-backend backend 'mergebase incoming)
+                       ""))))
+
 ;;;###autoload
 (defun vc-log-search (pattern)
   "Search the VC log of changes for PATTERN and show log of matching changes.
index 632a6a792bd0e75571867d6a94f977cc62bf0df0..e8aaa0700185ec07a5dbedf72ffa3c62f9dcec6d 100644 (file)
@@ -69,8 +69,8 @@
 ;; HISTORY FUNCTIONS
 ;;
 ;; * print-log (files buffer &optional shortlog start-revision limit)
-;; * log-outgoing (backend remote-location)
-;; * log-incoming (backend remote-location)
+;; - log-outgoing (backend remote-location)
+;; - log-incoming (backend remote-location)
 ;; - log-view-mode ()
 ;; - show-log-entry (revision)
 ;; - comment-history (file)