Subject: Re: bug#38688: 27.0.50; vc-dir + tramp hangs when there are stashes

From: Robert Pluim <[email-masked]>
Date: Fri, 10 Jan 2020 16:40:16 +0100

>>>>> On Fri, 20 Dec 2019 17:50:50 +0200, Dmitry Gutov <[email-masked]> said:

    Dmitry> On 20.12.2019 16:53, Robert Pluim wrote:
    >> When visiting a remote git repo using tramp, if you subsequently run
    >> 'vc-dir', then emacs will hang forever if the remote repo has
    >> stashes. This turned out to be to me having
    >> pager = less -FRXI
    >> in my remote .gitconfig. Unsetting that fixes it, but vc-git should
    >> perhaps take care to run git with '--no-pager' (it already does
    >> something similar in 'vc-git-command').

    Dmitry> Thanks for the report.

    Dmitry> We can probably remove the "PAGER=" variable binding from that fuction
    Dmitry> as well.

True. The attached works for me. emacs-27 or master?

>From 09d1602de858ad1ce46a993fca20e1b573599fa9 Mon Sep 17 00:00:00 2001
From: Robert Pluim <[email-masked]>
Date: Fri, 10 Jan 2020 16:36:57 +0100
Subject: [PATCH] vc-dir: ensure we don't use a pager with git
To: [email-masked]

* lisp/vc/vc-git.el (vc-git--call): Call git with '--no-pager' to
avoid hangs caused by remote pager settings (Bug#38688).
---
 lisp/vc/vc-git.el | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 000d860e83..61e6c642d1 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1785,13 +1785,12 @@ vc-git--call
 	(process-environment
 	 (append
 	  `("GIT_DIR"
-	    "PAGER="
 	    ;; Avoid repository locking during background operations
 	    ;; (bug#21559).
 	    ,@(when revert-buffer-in-progress-p
 		'("GIT_OPTIONAL_LOCKS=0")))
 	  process-environment)))
-    (apply 'process-file vc-git-program nil buffer nil command args)))
+    (apply 'process-file vc-git-program nil buffer nil "--no-pager" command args)))
 
 (defun vc-git--out-ok (command &rest args)
   (zerop (apply 'vc-git--call '(t nil) command args)))
-- 
2.24.0.155.gd9f6f3b619