bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#59232:


From: Dmitry Gutov
Subject: bug#59232:
Date: Thu, 21 Dec 2023 02:12:06 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 21/12/2023 00:50, Urban Engberg wrote:

Using make-process:

    (let ((process-connection-type nil))
       (make-process
        :name "xxx"
        :buffer "*Test*"
        :command (list "svn" "annotate" "FILE")))

This fails, just like before. Interestingly, adding

    :stderr "*Stderr*"


to the argument list makes the command */not*/ fail and *Stderr* thus just contains "Process xxx stderr finished"

Hmm, then perhaps it might make sense to test this full patch. Ideally, though, someone knowledgeable about our subprocess system would chime in about the whole situation: are there programs like this, and should we work around that.

diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index fd5f655a0f6..18ba317242b 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -379,9 +379,12 @@ vc-do-command
            (if (eq okstatus 'async)
                ;; Run asynchronously.
                (let ((proc
-                      (let ((process-connection-type nil))
-                        (apply #'start-file-process command
-                                (current-buffer) command squeezed))))
+                       (make-process
+                        :name "vc"
+                        :command (cons command squeezed)
+                        :connection-type 'pipe
+                        :buffer (current-buffer)
+                        :stderr " *vc-errors*")))
                  (when vc-command-messages
                    (let ((inhibit-message vc-inhibit-message))
                      (message "Running in background: %s"


    There are also some options outlined for trying to get more verbose
    output of it here --
    
https://stackoverflow.com/questions/8416989/is-it-possible-to-get-svn-client-debug-output
 
<https://stackoverflow.com/questions/8416989/is-it-possible-to-get-svn-client-debug-output>
    -- but it seems like this might only work with some client versions.
    And
    most answers are 5-10 years old.


No, I don't get much more from that. But perhaps interesting as well, I gave the "svn annotate" a "-v" to generate more verbose output. It seems this makes it output the full date on each line of the output. With this option, the process is terminated after just 56 lines, or around 4900 characters – close to what we got before. Could it in some way be that the pipe into the output buffer is closed down prematurely?

That the pipe is closed prematurely, but only with SVN and not any other VCS client? That seems odd, it likely involved some particular factors. Well, aside from the fact that 'svn' inevitably accesses the network.

As again, it doesn't seem that the svn process itself fails, when run in any other way?

Sure, it is weird.

Other ways you could try to run it are:

- From Emacs's 'M-x shell' buffer.
- Through a shell wrapper that redirects stderr somewhere, but then appends it at the end of the output when the main program finishes. - Through the ':term' terminal emulator in Vim 8.1+? Just being thorough, I have no idea how it is implemented.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]