all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dmitry@gutov.dev>
To: Michael Albinus <michael.albinus@gmx.de>, Eli Zaretskii <eliz@gnu.org>
Cc: Sean Allred <allred.sean@gmail.com>, 73320@debbugs.gnu.org
Subject: bug#73320: [PATCH] project--vc-list-files: use Git's sparse-index
Date: Sat, 5 Oct 2024 00:25:13 +0300	[thread overview]
Message-ID: <dbee6584-96a6-4225-9d92-a52465df8ac6@gutov.dev> (raw)
In-Reply-To: <878qv471ga.fsf@gmx.de>

Hi Michael, Eli,

On 04/10/2024 10:48, Michael Albinus wrote:

>> It could use some review, though. There aren't many examples of doing
>> that in Emacs code.
> In Eshell, Jim Porter makes extensive use of connection-local
> variables. He has also added some functions which are useful (not
> applied in Tramp yet).

Yep, Eshell seems to be have been the only other client of 
connection-local, until now. I was wondering whether setting a unique 
application name is the recommended pattern, though.

> However, you use with-connection-local-variables, which uses the
> application `tramp' by default. Either use
> with-connection-local-application-variables instead, or let-bind
> connection-local-default-application to `vc-git'.
> 
> I'm not sure how setq-connection-local behaves wrt to the application
> (this function was written by Jim, I've never used it). But binding
> connection-local-default-application should be good enough, I believe.
> 
>> Is the 'connection-local-set-profiles' call needed here at all or can
>> be skipped?
> It is needed. connection-local-set-profile-variables declares only the
> variables, connection-local-set-profiles activates them.

Thanks, Michael. Binding connection-local-default-application seems like 
a good approach for Emacs 27-28, but vc-git is not distributed 
separately, so might as well use the newer macro.

Here's the updated patch.

Eli, any chance this can go in Emacs 30? Could be considered a bugfix, 
since we're fixing Git version detection on remote hosts. Not a 
regression, though.

diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 05400523048..5a7ffeffc9d 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -315,11 +315,21 @@ vc-git--state-code

  (defvar vc-git--program-version nil)

+(connection-local-set-profile-variables
+ 'vc-git-connection-default-profile
+ '((vc-git--program-version . nil)))
+
+(connection-local-set-profiles
+ '(:application vc-git)
+ 'vc-git-connection-default-profile)
+
  (defun vc-git--program-version ()
-  (or vc-git--program-version
-      (let ((version-string
-             (vc-git--run-command-string nil "version")))
-        (setq vc-git--program-version
+  (with-connection-local-application-variables 'vc-git
+   (or vc-git--program-version
+       (let ((version-string
+              (vc-git--run-command-string nil "version")))
+         (setq-connection-local
+              vc-git--program-version
                (if (and version-string
                         ;; Some Git versions append additional strings
                         ;; to the numerical version string. E.g., Git
@@ -329,7 +339,7 @@ vc-git--program-version
                         (string-match "git version \\([0-9][0-9.]+\\)"
                                       version-string))
                    (string-trim-right (match-string 1 version-string) 
"\\.")
-                "0")))))
+                "0"))))))

  (defun vc-git--git-path (&optional path)
    "Resolve .git/PATH for the current working tree.






  reply	other threads:[~2024-10-04 21:25 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-17 16:55 bug#73320: [PATCH] project--vc-list-files: use Git's sparse-index Sean Allred
2024-09-17 22:54 ` Dmitry Gutov
2024-09-18  0:36   ` Sean Allred
2024-09-18 22:27     ` Dmitry Gutov
2024-09-19  4:25       ` Sean Allred
2024-09-19  9:44         ` Dmitry Gutov
2024-09-29  1:19           ` Dmitry Gutov
2024-10-03 23:57         ` Dmitry Gutov
2024-10-04  7:48           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-10-04 21:25             ` Dmitry Gutov [this message]
2024-10-05  6:48               ` Eli Zaretskii
2024-10-05 12:33                 ` Dmitry Gutov
2024-10-07 23:55                   ` Dmitry Gutov
2024-10-07  0:41               ` Jim Porter
2024-10-07 23:38                 ` Dmitry Gutov
2024-09-19  5:41       ` Eli Zaretskii
2024-09-19  9:34         ` Dmitry Gutov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dbee6584-96a6-4225-9d92-a52465df8ac6@gutov.dev \
    --to=dmitry@gutov.dev \
    --cc=73320@debbugs.gnu.org \
    --cc=allred.sean@gmail.com \
    --cc=eliz@gnu.org \
    --cc=michael.albinus@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.