Fix Bug#31941
* lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file): In case of FILENAME being a directory, check whether `copy-directory' could be avoided. Suggested by Stephen Nutt <stnutt@gmail.com>. (Bug#31941) (tramp-do-copy-or-rename-file-directly): Call "cp" with "-r".
This commit is contained in:
parent
bbc9d3793d
commit
1d7707886d
1 changed files with 5 additions and 3 deletions
|
@ -2038,7 +2038,9 @@ file names."
|
||||||
(unless (memq op '(copy rename))
|
(unless (memq op '(copy rename))
|
||||||
(error "Unknown operation `%s', must be `copy' or `rename'" op))
|
(error "Unknown operation `%s', must be `copy' or `rename'" op))
|
||||||
|
|
||||||
(if (file-directory-p filename)
|
(if (and
|
||||||
|
(file-directory-p filename)
|
||||||
|
(not (tramp-equal-remote filename newname)))
|
||||||
(progn
|
(progn
|
||||||
(copy-directory filename newname keep-date t)
|
(copy-directory filename newname keep-date t)
|
||||||
(when (eq op 'rename) (delete-directory filename 'recursive)))
|
(when (eq op 'rename) (delete-directory filename 'recursive)))
|
||||||
|
@ -2187,8 +2189,8 @@ the uid and gid from FILENAME."
|
||||||
(file-attributes filename)))
|
(file-attributes filename)))
|
||||||
(file-modes (tramp-default-file-modes filename)))
|
(file-modes (tramp-default-file-modes filename)))
|
||||||
(with-parsed-tramp-file-name (if t1 filename newname) nil
|
(with-parsed-tramp-file-name (if t1 filename newname) nil
|
||||||
(let* ((cmd (cond ((and (eq op 'copy) preserve-uid-gid) "cp -f -p")
|
(let* ((cmd (cond ((and (eq op 'copy) preserve-uid-gid) "cp -f -r -p")
|
||||||
((eq op 'copy) "cp -f")
|
((eq op 'copy) "cp -f -r")
|
||||||
((eq op 'rename) "mv -f")
|
((eq op 'rename) "mv -f")
|
||||||
(t (tramp-error
|
(t (tramp-error
|
||||||
v 'file-error
|
v 'file-error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue