[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.