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.
next prev parent 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.