* bug#74352: 29.4; emerge-files with tramp + local file fails
@ 2024-11-13 19:11 Jörg Sommer
2024-11-14 7:05 ` Eli Zaretskii
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Jörg Sommer @ 2024-11-13 19:11 UTC (permalink / raw)
To: 74352
[-- Attachment #1: Type: text/plain, Size: 14971 bytes --]
Hi,
when running `emerge-files` with `/ssh:remote:file` and `~/local-file` I get
the buffer `*emerge-diff-errors*` with:
```
diff: /tmp/tramp.wlcRNL: No such file or directory
diff: /home/joerg/local-file: No such file or directory
```
This change solves the problem:
```diff
diff --git lisp/vc/emerge.el lisp/vc/emerge.el
index ca48f2f3c7b..562041e4232 100644
--- lisp/vc/emerge.el
+++ lisp/vc/emerge.el
@@ -581,6 +581,7 @@ emerge-make-diff-list
(setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
(with-current-buffer
emerge-diff-buffer
+ (setq default-directory (file-name-directory file-A))
(erase-buffer)
(shell-command
(format "%s %s %s %s"
```
Regards Jörg
In GNU Emacs 29.4 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.42, cairo
version 1.18.0) of 2024-06-30, modified by Debian built on sbuild
System Description: Debian GNU/Linux trixie/sid
Configured using:
'configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
--libexecdir=/usr/libexec --localstatedir=/var/lib
--infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
--with-pop=yes
--enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp
--with-sound=alsa --without-gconf --with-mailutils
--with-native-compilation --build x86_64-linux-gnu --prefix=/usr
--sharedstatedir=/var/lib --libexecdir=/usr/libexec
--localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man
--with-libsystemd --with-pop=yes
--enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp
--with-sound=alsa --without-gconf --with-mailutils
--with-native-compilation --with-pgtk 'CFLAGS=-g -O2
-Werror=implicit-function-declaration
-ffile-prefix-map=/build/reproducible-path/emacs-29.4+1=.
-fstack-protector-strong -fstack-clash-protection -Wformat
-Werror=format-security -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time
-D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB
Important settings:
value of $LANG: de_DE.UTF-8
value of $XMODIFIERS: @im=ibus
locale-coding-system: utf-8-unix
Major mode: Shell-script
Minor modes in effect:
async-bytecomp-package-mode: t
sh-electric-here-document-mode: t
treemacs-filewatch-mode: t
treemacs-follow-mode: t
treemacs-git-mode: t
treemacs-fringe-indicator-mode: t
desktop-save-mode: t
global-whitespace-mode: t
which-key-mode: t
recentf-mode: t
global-git-commit-mode: t
shell-dirtrack-mode: t
server-mode: t
global-hl-todo-mode: t
hl-todo-mode: t
override-global-mode: t
company-statistics-mode: t
yas-global-mode: t
yas-minor-mode: t
TeX-PDF-mode: t
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
size-indication-mode: t
column-number-mode: t
line-number-mode: t
auto-fill-function: #[128 \304\300\301\x03#\207 [yas--auto-fill #[128 \301\302\300!\x02"\207 [auto-fill-function apply default-value] 4
(fn &rest ARGS)] :around nil apply] 5 advice]
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
abbrev-mode: t
Load-path shadows:
/usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-mode
/usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts
/usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-autoloads hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-autoloads
/usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-pkg hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-pkg
/usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-log-view-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-log-view-mode
/usr/share/emacs/site-lisp/elpa/mutt-alias-1.4/mutt-alias-autoloads hides /usr/share/emacs/site-lisp/elpa-src/mutt-alias-1.4/mutt-alias-autoloads
/usr/share/emacs/site-lisp/elpa/mutt-alias-1.4/mutt-alias-pkg hides /usr/share/emacs/site-lisp/elpa-src/mutt-alias-1.4/mutt-alias-pkg
/usr/share/emacs/site-lisp/elpa/mutt-alias-1.4/mutt-alias hides /usr/share/emacs/site-lisp/elpa-src/mutt-alias-1.4/mutt-alias
/usr/share/emacs/site-lisp/elpa/muttrc-mode-1.2.1/muttrc-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/muttrc-mode-1.2.1/muttrc-mode-autoloads
/usr/share/emacs/site-lisp/elpa/muttrc-mode-1.2.1/muttrc-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/muttrc-mode-1.2.1/muttrc-mode-pkg
/usr/share/emacs/site-lisp/elpa/muttrc-mode-1.2.1/muttrc-mode hides /usr/share/emacs/site-lisp/elpa-src/muttrc-mode-1.2.1/muttrc-mode
/usr/share/emacs/site-lisp/elpa/pod-mode-1.3/pod-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/pod-mode-1.3/pod-mode-pkg
/usr/share/emacs/site-lisp/elpa/pod-mode-1.3/pod-mode hides /usr/share/emacs/site-lisp/elpa-src/pod-mode-1.3/pod-mode
/usr/share/emacs/site-lisp/elpa/pod-mode-1.3/pod-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pod-mode-1.3/pod-mode-autoloads
/home/joerg/.config/emacs/elpa/transient-20240918.1138/transient hides /usr/share/emacs/29.4/lisp/transient
/home/joerg/.config/emacs/elpa/csharp-mode-20221126.2005/csharp-mode hides /usr/share/emacs/29.4/lisp/progmodes/csharp-mode
/home/joerg/.config/emacs/elpa/project-0.11.1/project hides /usr/share/emacs/29.4/lisp/progmodes/project
/home/joerg/.config/emacs/elpa/xref-1.7.0/xref hides /usr/share/emacs/29.4/lisp/progmodes/xref
Features:
(shadow sort mail-extr emacsbug ibuffer ibuffer-loaddefs apropos mule-util
helpful cc-langs trace info-look elisp-refs bug-reference emerge help-fns
radix-tree cl-print expand-region text-mode-expansions cc-mode-expansions
python-el-fgallina-expansions latex-mode-expansions js2-mode-expansions
js-mode-expansions html-mode-expansions css-mode-expansions
er-basic-expansions expand-region-core expand-region-custom misearch
multi-isearch helm-x-files helm-for-files helm-bookmark helm-adaptive
treemacs-bookmarks treemacs-tags magit-bookmark bookmark pp helm-external
helm-net css-mode sgml-mode facemenu eww url-queue shr pixel-fill kinsoku
url-file svg mm-url gnus nnheader range winner minibuffer-complete-cycle
tramp-archive tramp-gvfs helm-command helm-elisp helm-eval edebug debug
backtrace helm-info helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util xdg image-mode exif
helm-buffers helm-occur helm-tags helm-locate helm-grep helm-regexp
helm-utils helm-types helm-help helm helm-global-bindings helm-easymenu
helm-core async-bytecomp helm-source helm-multi-match helm-lib async systemd
conf-mode make-mode view lsp-zig lsp-yang lsp-yaml lsp-xml lsp-wgsl
lsp-volar lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala
lsp-v lsp-typeprof lsp-ttcn3 lsp-trunk lsp-toml lsp-tilt lsp-tex
lsp-terraform lsp-svelte lsp-steep lsp-sqls lsp-sql lsp-sorbet lsp-solidity
lsp-solargraph lsp-semgrep lsp-rust lsp-ruff lsp-ruby-syntax-tree
lsp-ruby-lsp lsp-rubocop lsp-roslyn lsp-rf lsp-remark lsp-racket lsp-r
lsp-qml lsp-pylsp lsp-pyls lsp-pwsh lsp-purescript lsp-pls lsp-php
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-nushell lsp-nix
lsp-nim lsp-nginx lsp-move lsp-mojo lsp-mint lsp-meson lsp-mdx lsp-marksman
lsp-markdown lsp-magik lsp-lua lsp-lisp lsp-kotlin lsp-json lsp-jq
lsp-javascript lsp-idris lsp-haxe lsp-hack lsp-groovy lsp-graphql
lsp-golangci-lint lsp-glsl lsp-gleam lsp-gdscript lsp-fsharp lsp-fortran
lsp-eslint lsp-erlang lsp-emmet lsp-elm lsp-elixir lsp-earthly
lsp-dockerfile lsp-dhall lsp-d lsp-cypher lsp-cucumber lsp-css lsp-csharp
gnutls lsp-crystal lsp-credo lsp-cobol lsp-cmake lsp-clojure lsp-clangd
lsp-bufls lsp-go lsp-beancount lsp-bash lsp-awk lsp-autotools lsp-astro
lsp-asm lsp-ansible lsp-angular lsp-ada lsp-semantic-tokens lsp-actionscript
python sh-script smie executable lsp-treemacs lsp-treemacs-generic
lsp-treemacs-themes treemacs-treelib treemacs treemacs-header-line
treemacs-compatibility treemacs-mode treemacs-interface treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces
treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils pfuture
hl-line treemacs-logging treemacs-customization treemacs-macros lsp-ui
lsp-ui-flycheck lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-ui-doc
goto-addr lsp-ui-util face-remap lsp-modeline lsp-headerline lsp-icons
lsp-diagnostics flycheck lsp-completion lsp-origami origami origami-parsers
lsp-mode lsp-protocol spinner network-stream nsm lv inline ht f ewoc
js2-mode js c-ts-common treesit cc-mode cc-fonts cc-guess cc-menus cc-cmds
jka-compr company-emoji company-emoji-list company-math math-symbol-lists
company-oddmuse company-keywords company-etags etags fileloop generator xref
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic company-template
company-bbdb guess-language find-func flyspell ispell typo markdown-mode
color noutline outline desktop frameset disp-table whitespace diminish
which-key use-package-diminish dom tramp-cache time-stamp tramp-sh tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time
iso8601 recentf tree-widget wid-edit MRU-yank randomsig cl magit-submodule
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files
magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff git-commit log-edit message
sendmail yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config
gnus-util time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert autorevert
filenotify magit-margin magit-transient magit-process with-editor comp
comp-cstr shell pcomplete server magit-mode transient benchmark magit-git
magit-base magit-section format-spec cursor-sensor hl-todo compat compat-30
compat-macs dokuwiki-mode derived diff-mode use-package-bind-key bind-key
company-statistics company-auctex react-snippets yasnippet-snippets
yasnippet company latex easy-mmode edmacro kmacro latex-flymake flymake-proc
flymake project compile text-property-search warnings icons thingatpt
tex-ispell tex-style tex dbus xml crm texmathp cc-styles cc-align cc-engine
cc-vars cc-defs bitbake dash s mmm-mode mmm-univ mmm-class mmm-region
mmm-auto mmm-vars mmm-utils mmm-compat comint ansi-osc ring ansi-color
cl-extra help-mode use-package-core tty-dark-theme finder-inf advice
bitbake-autoloads cmake-font-lock-autoloads cmake-mode-autoloads
color-theme-modern-autoloads auctex-autoloads tex-site
company-emoji-autoloads company-fuzzy-autoloads company-autoloads
csv-mode-autoloads dpkg-dev-el-autoloads debian-el-autoloads debian-el dired
dired-loaddefs expand-region-autoloads flycheck-rust-autoloads
go-guru-autoloads go-mode-autoloads guess-language-autoloads
helm-c-yasnippet-autoloads helm-autoloads helm-core-autoloads
async-autoloads helpful-autoloads elisp-refs-autoloads hl-todo-autoloads
jenkinsfile-mode-autoloads groovy-mode-autoloads jq-mode-autoloads
jq-ts-mode-autoloads json-mode-autoloads kconfig-mode-autoloads
know-your-http-well-autoloads lsp-origami-autoloads lsp-treemacs-autoloads
lsp-ui-autoloads lsp-mode-autoloads lua-mode-autoloads magit-autoloads pcase
magit-section-autoloads mmm-mode-autoloads move-text-autoloads
multiple-cursors-autoloads nginx-mode-autoloads php-mode-autoloads
po-mode-autoloads restclient-test-autoloads restclient-autoloads
js2-mode-autoloads rustic-autoloads flycheck-autoloads project-autoloads
markdown-mode-autoloads f-autoloads rust-mode-autoloads
smartparens-autoloads rx test-simple-autoloads transient-autoloads
treemacs-autoloads posframe-autoloads dash-autoloads
visual-fill-column-autoloads wfnames-autoloads which-key-autoloads
with-editor-autoloads info compat-autoloads xref-autoloads
yaml-mode-autoloads yasnippet-snippets-autoloads yasnippet-autoloads
devscripts-autoloads mutt-alias-autoloads muttrc-mode-autoloads
pod-mode-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf url-util
mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars
cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win
pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame
minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese
eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify dynamic-setting
system-font-setting font-render-setting cairo gtk pgtk lcms2 multi-tty
make-network-process native-compile emacs)
Memory information:
((conses 16 1166425 809726)
(symbols 48 69186 1)
(strings 32 377226 108544)
(string-bytes 1 11859790)
(vectors 16 151735)
(vector-slots 8 3622097 737749)
(floats 8 922 3217)
(intervals 56 223573 4049)
(buffers 984 62))
--
Hügelschäfer's Law (http://www.bruhaha.de/laws.html):
Beiträge werden dort gepostet, wo sie den größten Widerstand hervorrufen.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#74352: 29.4; emerge-files with tramp + local file fails
2024-11-13 19:11 bug#74352: 29.4; emerge-files with tramp + local file fails Jörg Sommer
@ 2024-11-14 7:05 ` Eli Zaretskii
2024-11-14 17:27 ` Jörg Sommer
2024-11-14 8:10 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-16 12:21 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2024-11-14 7:05 UTC (permalink / raw)
To: Jörg Sommer; +Cc: 74352
> Date: Wed, 13 Nov 2024 20:11:10 +0100
> From: Jörg Sommer <joerg@jo-so.de>
>
> when running `emerge-files` with `/ssh:remote:file` and `~/local-file` I get
> the buffer `*emerge-diff-errors*` with:
>
> ```
> diff: /tmp/tramp.wlcRNL: No such file or directory
> diff: /home/joerg/local-file: No such file or directory
> ```
>
> This change solves the problem:
>
> ```diff
> diff --git lisp/vc/emerge.el lisp/vc/emerge.el
> index ca48f2f3c7b..562041e4232 100644
> --- lisp/vc/emerge.el
> +++ lisp/vc/emerge.el
> @@ -581,6 +581,7 @@ emerge-make-diff-list
> (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
> (with-current-buffer
> emerge-diff-buffer
> + (setq default-directory (file-name-directory file-A))
Thanks, but why file-A? Isn't the problem symmetric wrt the two
files? Or what am I missing?
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#74352: 29.4; emerge-files with tramp + local file fails
2024-11-13 19:11 bug#74352: 29.4; emerge-files with tramp + local file fails Jörg Sommer
2024-11-14 7:05 ` Eli Zaretskii
@ 2024-11-14 8:10 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-16 12:21 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2 siblings, 0 replies; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14 8:10 UTC (permalink / raw)
To: Jörg Sommer; +Cc: 74352
Jörg Sommer <joerg@jo-so.de> writes:
> Hi,
Hi Joerg,
> when running `emerge-files` with `/ssh:remote:file` and `~/local-file` I get
> the buffer `*emerge-diff-errors*` with:
>
> ```
> diff: /tmp/tramp.wlcRNL: No such file or directory
> diff: /home/joerg/local-file: No such file or directory
> ```
Thanks for the report. There is also bug#6850 about the same topic, I've
merged both.
> This change solves the problem:
>
> ```diff
> diff --git lisp/vc/emerge.el lisp/vc/emerge.el
> index ca48f2f3c7b..562041e4232 100644
> --- lisp/vc/emerge.el
> +++ lisp/vc/emerge.el
> @@ -581,6 +581,7 @@ emerge-make-diff-list
> (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
> (with-current-buffer
> emerge-diff-buffer
> + (setq default-directory (file-name-directory file-A))
> (erase-buffer)
> (shell-command
> (format "%s %s %s %s"
> ```
Unfortunately, nobody felt comfortable to work on this over the
years. I'll take the stab, and check your patch next days. So we should
fix this after so many years.
> Regards Jörg
Thanks for the heads-up, and best regards, Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#74352: 29.4; emerge-files with tramp + local file fails
2024-11-14 7:05 ` Eli Zaretskii
@ 2024-11-14 17:27 ` Jörg Sommer
0 siblings, 0 replies; 7+ messages in thread
From: Jörg Sommer @ 2024-11-14 17:27 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 74352
[-- Attachment #1: Type: text/plain, Size: 1574 bytes --]
Eli Zaretskii schrieb am Do 14. Nov, 09:05 (+0200):
> > Date: Wed, 13 Nov 2024 20:11:10 +0100
> > From: Jörg Sommer <joerg@jo-so.de>
> >
> > when running `emerge-files` with `/ssh:remote:file` and `~/local-file` I get
> > the buffer `*emerge-diff-errors*` with:
> >
> > ```
> > diff: /tmp/tramp.wlcRNL: No such file or directory
> > diff: /home/joerg/local-file: No such file or directory
> > ```
> >
> > This change solves the problem:
> >
> > ```diff
> > diff --git lisp/vc/emerge.el lisp/vc/emerge.el
> > index ca48f2f3c7b..562041e4232 100644
> > --- lisp/vc/emerge.el
> > +++ lisp/vc/emerge.el
> > @@ -581,6 +581,7 @@ emerge-make-diff-list
> > (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
> > (with-current-buffer
> > emerge-diff-buffer
> > + (setq default-directory (file-name-directory file-A))
>
> Thanks, but why file-A? Isn't the problem symmetric wrt the two
> files? Or what am I missing?
In *emerge-setup* above is this code:
```
;; create the merge buffer from buffer A, so it inherits buffer A's
;; default directory, etc.
(merge-buffer (with-current-buffer
buffer-A
(get-buffer-create merge-buffer-name))))
```
But I think it doesn't matter if A or B. The problem is that
emerge-diff-buffer has the remote directory and shell command tries to
execute the command on the remote side even through file-A and file-B were
copied to local side in *emerge-files-internal*.
Kind regards, Jörg
--
Die am Lautesten reden, haben stets am wenigsten zu sagen.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#74352: 29.4; emerge-files with tramp + local file fails
2024-11-13 19:11 bug#74352: 29.4; emerge-files with tramp + local file fails Jörg Sommer
2024-11-14 7:05 ` Eli Zaretskii
2024-11-14 8:10 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-16 12:21 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-17 10:10 ` Jörg Sommer
2 siblings, 1 reply; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-16 12:21 UTC (permalink / raw)
To: Jörg Sommer; +Cc: 74352
Jörg Sommer <joerg@jo-so.de> writes:
> Hi,
Hi Jörg,
> when running `emerge-files` with `/ssh:remote:file` and `~/local-file` I get
> the buffer `*emerge-diff-errors*` with:
>
> ```
> diff: /tmp/tramp.wlcRNL: No such file or directory
> diff: /home/joerg/local-file: No such file or directory
> ```
I can reproduce the problem if file-A is remote, and file-B is
local. Also, if both file-A and file-B are remote.
If both files are local, or file-A is local and file-B is remote, emerge
works as exptected.
The crucial point seems to be that file-A is a remote one.
> This change solves the problem:
>
> ```diff
> diff --git lisp/vc/emerge.el lisp/vc/emerge.el
> index ca48f2f3c7b..562041e4232 100644
> --- lisp/vc/emerge.el
> +++ lisp/vc/emerge.el
> @@ -581,6 +581,7 @@ emerge-make-diff-list
> (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
> (with-current-buffer
> emerge-diff-buffer
> + (setq default-directory (file-name-directory file-A))
> (erase-buffer)
> (shell-command
> (format "%s %s %s %s"
> ```
The point is, that emerge calls the 'diff' program for either the file
itself (if local), or a local copy of the file (if remote). A consistent
solution is therefore to set a local default directory, like
--8<---------------cut here---------------start------------->8---
(setq default-directory temporary-file-directory)
--8<---------------cut here---------------end--------------->8---
instead of your change. Would you like to check?
However, this won't be a complete solution. There are other places in
emerge.el, where the temporary buffer for calling 'diff' must have a
local default directory. I'm not an emerge aficionado (haven't used it
until now). Would you like to produce a complete patch, based on my
proposal above?
> Regards Jörg
Best regards, Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#74352: 29.4; emerge-files with tramp + local file fails
2024-11-16 12:21 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-17 10:10 ` Jörg Sommer
2024-11-17 10:32 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 7+ messages in thread
From: Jörg Sommer @ 2024-11-17 10:10 UTC (permalink / raw)
To: Michael Albinus; +Cc: 74352
[-- Attachment #1: Type: text/plain, Size: 1794 bytes --]
Michael Albinus schrieb am Sa 16. Nov, 13:21 (+0100):
> Jörg Sommer <joerg@jo-so.de> writes:
> > This change solves the problem:
> >
> > ```diff
> > diff --git lisp/vc/emerge.el lisp/vc/emerge.el
> > index ca48f2f3c7b..562041e4232 100644
> > --- lisp/vc/emerge.el
> > +++ lisp/vc/emerge.el
> > @@ -581,6 +581,7 @@ emerge-make-diff-list
> > (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
> > (with-current-buffer
> > emerge-diff-buffer
> > + (setq default-directory (file-name-directory file-A))
> > (erase-buffer)
> > (shell-command
> > (format "%s %s %s %s"
> > ```
>
> The point is, that emerge calls the 'diff' program for either the file
> itself (if local), or a local copy of the file (if remote). A consistent
> solution is therefore to set a local default directory, like
>
> --8<---------------cut here---------------start------------->8---
> (setq default-directory temporary-file-directory)
> --8<---------------cut here---------------end--------------->8---
>
> instead of your change. Would you like to check?
This works.
But in the context of *emerge-make-diff-list* it is not very apparent why
*temporary-file-directory* is used. Maybe a comment should say that
*emerge-files-internal* copied the files there by *file-local-copy*.
> However, this won't be a complete solution. There are other places in
> emerge.el, where the temporary buffer for calling 'diff' must have a
> local default directory.
Are you sure? I see only one usage of emerge-diff-program in emerge.el.
> I'm not an emerge aficionado
Out of curiosity: Is there a better tool?
--
"The future is here. It's just not widely distributed yet."
(William Gibson)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#74352: 29.4; emerge-files with tramp + local file fails
2024-11-17 10:10 ` Jörg Sommer
@ 2024-11-17 10:32 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-17 10:32 UTC (permalink / raw)
To: Jörg Sommer; +Cc: 74352
Jörg Sommer <joerg@jo-so.de> writes:
Hi Joerg,
>> The point is, that emerge calls the 'diff' program for either the file
>> itself (if local), or a local copy of the file (if remote). A consistent
>> solution is therefore to set a local default directory, like
>>
>> --8<---------------cut here---------------start------------->8---
>> (setq default-directory temporary-file-directory)
>> --8<---------------cut here---------------end--------------->8---
>>
>> instead of your change. Would you like to check?
>
> This works.
>
> But in the context of *emerge-make-diff-list* it is not very apparent why
> *temporary-file-directory* is used. Maybe a comment should say that
> *emerge-files-internal* copied the files there by *file-local-copy*.
Sure, it doesn't hurt :-)
My patch is rather a proof of concept. It could be improved in all directions.
>> However, this won't be a complete solution. There are other places in
>> emerge.el, where the temporary buffer for calling 'diff' must have a
>> local default directory.
>
> Are you sure? I see only one usage of emerge-diff-program in emerge.el.
There is also emerge-diff3-program, used in emerge-make-diff3-list.
And there are also emerge-rcs-ci-program and emerge-rcs-co-program, used
at different places. But I don't know whether they need special care.
>> I'm not an emerge aficionado
>
> Out of curiosity: Is there a better tool?
ediff-files, ediff-directories and ediff-revision. Because I use them
all days, I've rebound some keys in my .emacs:
--8<---------------cut here---------------start------------->8---
(require 'dired)
(define-key dired-mode-map "=" 'ediff-files)
(define-key dired-mode-map "\M-=" 'ediff-directories)
(require 'vc)
(define-key vc-prefix-map "=" 'ediff-revision)
(setq ediff-diff-options "-a")
(add-hook 'vc-dir-mode-hook
(lambda () (define-key vc-dir-mode-map "=" 'ediff-revision)))
--8<---------------cut here---------------end--------------->8---
Best regards, Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-11-17 10:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-13 19:11 bug#74352: 29.4; emerge-files with tramp + local file fails Jörg Sommer
2024-11-14 7:05 ` Eli Zaretskii
2024-11-14 17:27 ` Jörg Sommer
2024-11-14 8:10 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-16 12:21 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-17 10:10 ` Jörg Sommer
2024-11-17 10:32 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).