# HG changeset patch # User Michael Albinus # Date 1166511387 0 # Node ID 5ac41de0888b256af5cffe52967b1d80fe1ad39a # Parent 9bbe624f40b8b996a9986d3165a2cd012176b0a6 * net/tramp.el (tramp-methods): Introduce new method `scpc'. Remove "ControlMaster" option from the other `scp*' methods. (tramp-default-method): Check for ssh-agent before setting to `scp'. diff -r 9bbe624f40b8 -r 5ac41de0888b lisp/ChangeLog --- a/lisp/ChangeLog Tue Dec 19 06:49:01 2006 +0000 +++ b/lisp/ChangeLog Tue Dec 19 06:56:27 2006 +0000 @@ -1,3 +1,10 @@ +2006-12-19 Michael Albinus + + * net/tramp.el (tramp-methods): Introduce new method `scpc'. + Remove "ControlMaster" option from the other `scp*' methods. + (tramp-default-method): Check for ssh-agent before setting to + `scp'. + 2006-12-18 Carsten Dominik * textmodes/org.el (org-mode): Show context after isearch. diff -r 9bbe624f40b8 -r 5ac41de0888b lisp/net/tramp.el --- a/lisp/net/tramp.el Tue Dec 19 06:49:01 2006 +0000 +++ b/lisp/net/tramp.el Tue Dec 19 06:56:27 2006 +0000 @@ -326,35 +326,24 @@ (tramp-login-program "ssh") (tramp-copy-program "scp") (tramp-remote-sh "/bin/sh") - (tramp-login-args ("-o" "ControlPath=%t.%%r@%%h:%%p" - "-o" "ControlMaster=yes" - "-e" "none")) - (tramp-copy-args ("-o" "ControlPath=%t.%%r@%%h:%%p" - "-o" "ControlMaster=auto")) + (tramp-login-args ("-e" "none")) + (tramp-copy-args nil) (tramp-copy-keep-date-arg "-p") (tramp-password-end-of-line nil)) ("scp1" (tramp-connection-function tramp-open-connection-rsh) (tramp-login-program "ssh") (tramp-copy-program "scp") (tramp-remote-sh "/bin/sh") - (tramp-login-args ("-o" "ControlPath=%t.%%r@%%h:%%p" - "-o" "ControlMaster=yes" - "-1" "-e" "none")) - (tramp-copy-args ("-o" "ControlPath=%t.%%r@%%h:%%p" - "-o" "ControlMaster=auto" - "-1")) + (tramp-login-args ("-1" "-e" "none")) + (tramp-copy-args ("-1")) (tramp-copy-keep-date-arg "-p") (tramp-password-end-of-line nil)) ("scp2" (tramp-connection-function tramp-open-connection-rsh) (tramp-login-program "ssh") (tramp-copy-program "scp") (tramp-remote-sh "/bin/sh") - (tramp-login-args ("-o" "ControlPath=%t.%%r@%%h:%%p" - "-o" "ControlMaster=yes" - "-2" "-e" "none")) - (tramp-copy-args ("-o" "ControlPath=%t.%%r@%%h:%%p" - "-o" "ControlMaster=auto" - "-2")) + (tramp-login-args ("-2" "-e" "none")) + (tramp-copy-args ("-2")) (tramp-copy-keep-date-arg "-p") (tramp-password-end-of-line nil)) ("scp1_old" @@ -483,6 +472,17 @@ (tramp-copy-args nil) (tramp-copy-keep-date-arg nil) (tramp-password-end-of-line nil)) + ("scpc" (tramp-connection-function tramp-open-connection-rsh) + (tramp-login-program "ssh") + (tramp-copy-program "scp") + (tramp-remote-sh "/bin/sh") + (tramp-login-args ("-o" "ControlPath=%t.%%r@%%h:%%p" + "-o" "ControlMaster=yes" + "-e" "none")) + (tramp-copy-args ("-o" "ControlPath=%t.%%r@%%h:%%p" + "-o" "ControlMaster=auto")) + (tramp-copy-keep-date-arg "-p") + (tramp-password-end-of-line nil)) ("scpx" (tramp-connection-function tramp-open-connection-rsh) (tramp-login-program "ssh") (tramp-copy-program "scp") @@ -684,33 +684,32 @@ :type '(repeat (list string function string))) (defcustom tramp-default-method - (or + (cond ;; An external copy method seems to be preferred, because it is ;; much more performant for large files, and it hasn't too serious ;; delays for small files. But it must be ensured that there - ;; aren't permanent password queries. Either the copy method shall - ;; reuse other channels (ControlMaster of OpenSSH does it), a - ;; password agent like "ssh-agent" or "Pageant" shall run, or the - ;; optional password.el package shall be active for password caching. - (and (fboundp 'executable-find) - ;; Check whether PuTTY is installed. - (executable-find "pscp") - (if (or - ;; password.el is loaded. - (fboundp 'password-read) - ;; Pageant is running. - (and (fboundp 'w32-window-exists-p) - (funcall (symbol-function 'w32-window-exists-p) - "Pageant" "Pageant"))) - ;; We know that the password will not be retrieved again. - "pscp" - ;; When "pscp" exists, there is also "plink". - "plink")) - ;; Under UNIX, ControlMaster is activated. This does not work - ;; under Cygwin, but ssh-agent must be enabled then anyway due to - ;; the pseudo-tty problem of Cygwin's OpenSSH implementation. So - ;; it doesn't hurt to use "scp". - "scp") + ;; aren't permanent password queries. Either a password agent like + ;; "ssh-agent" or "Pageant" shall run, or the optional password.el + ;; package shall be active for password caching. + ((executable-find "pscp") + ;; PuTTY is installed. + (if (or (fboundp 'password-read) + ;; Pageant is running. + (and (fboundp 'w32-window-exists-p) + (funcall (symbol-function 'w32-window-exists-p) + "Pageant" "Pageant"))) + "pscp" + "plink")) + ;; There is an ssh installation. + ((executable-find "scp") + (if (or (fboundp 'password-read) + ;; ssh-agent is running. + (getenv "SSH_AUTH_SOCK") + (getnev "SSH_AGENT_PID")) + "scp" + "ssh")) + ;; Fallback. + (t "ftp")) "*Default method to use for transferring files. See `tramp-methods' for possibilities. Also see `tramp-default-method-alist'."