Mercurial > emacs
comparison man/tramp.texi @ 47576:b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
2002-09-22 Kai Gro?ohann <grossjoh@ls6.informatik.uni-dortmund.de>
Version 2.0.20 released.
2002-09-20 Kai Gro?ohann <grossjoh@ls6.informatik.uni-dortmund.de>
* net/tramp.el (tramp-completion-function-alist): Escape open
paren in docstring.
(tramp-user-regexp, tramp-host-regexp): Allow empty strings.
(tramp-handle-insert-file-contents): Call tramp-message-for-buffer
instead of tramp-message.
(tramp-open-connection-rsh): Handle empty string as user name.
(tramp-open-connection-su): Handle empty string as host name.
Handle nil user name.
(tramp-handle-file-local-copy, tramp-handle-write-region)
(tramp-completion-handle-file-name-all-completions)
(tramp-open-connection-telnet, tramp-open-connection-rsh)
(tramp-open-connection-su, tramp-post-connection)
(tramp-maybe-open-connection, tramp-method-out-of-band-p)
(tramp-get-connection-function, tramp-get-remote-sh)
(tramp-get-rsh-program, tramp-get-rsh-args)
(tramp-get-rcp-program, tramp-get-rcp-args)
(tramp-get-rcp-keep-date-arg, tramp-get-su-program)
(tramp-get-su-args, tramp-get-telnet-program)
(tramp-get-telnet-args): Use `tramp-find-method', perhaps require
additional args USER, HOST.
(tramp-action-password, tramp-open-connection-telnet)
(tramp-open-connection-su, tramp-open-connection-multi)
(tramp-method-out-of-band-p): `tramp-method-out-of-band-p' now
takes USER and HOST arguments, to be able to use
`tramp-find-method'. Update callers.
(tramp-find-method): New function.
2002-09-20 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-handle-insert-directory): Handle "--dired"
in SWITCHES (by removing it).
2002-09-18 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-file-name-handler): Add `file-remote-p'
property.
2002-09-17 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (top-level): Maybe autoload uudecode-decode-region.
2002-09-16 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-bug): Add tramp-methods.
2002-09-16 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-methods): Update docstring:
tramp-encoding-command, tramp-decoding-command,
tramp-encoding-function and tramp-decoding-function are not
parameters anymore.
(tramp-uuencode-region): Autoload it.
2002-09-13 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
Version 2.0.19 released.
* net/tramp-uu.el: New file, implements uuencode in Lisp.
* net/tramp.el (tramp-coding-commands): Use
`tramp-uuencode-region' as local encoder for the uuencode based
entries.
2002-09-13 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-handle-write-region): Wrong parens.
2002-09-13 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
Version 2.0.18 released.
* net/tramp.el (tramp-perl-decode): Perl changes to accomodate
older versions of Perl. Now tested with 5.004. Suggestion from
Michael Albinus.
2002-09-12 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-find-inline-encoding): Call
tramp-call-local-coding-command with nil for INPUT and OUTPUT.
(tramp-call-local-coding-command): OUTPUT equals nil means to
discard the output. INPUT equals nil means /dev/null.
2002-09-12 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-encoding-shell): Default to environment
variable COMSPEC on Windows.
(tramp-handle-write-region): More debugging output.
(tramp-find-inline-encoding): Ditto.
2002-09-11 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-handle-file-name-all-completions):
Define `result1'.
(tramp-parse-hosts-group): Discard IPv6 entries.
2002-09-11 Kai Gro?ohann <grossjoh@ls6.informatik.uni-dortmund.de>
* net/tramp.el (tramp-post-connection): Only send Perl
mime-encode/decode implementations when using inline method.
(tramp-handle-file-local-copy)
(tramp-handle-write-region, tramp-post-connection)
(tramp-coding-commands, tramp-find-inline-encoding): For the
inline encodings, distinguish between local and remote commands,
instead of between commands and functions. (The local commands
can be functions, too.) If the local host is a Windows machine,
we can't expect the same commands to work there as on the remote
host.
(tramp-call-local-coding-command): New function for calling local
encoding and decoding commands.
(tramp-set-remote-encoding, tramp-get-remote-encoding)
(tramp-set-remote-decoding, tramp-get-remote-decoding)
(tramp-set-local-encoding, tramp-get-local-encoding)
(tramp-set-local-decoding, tramp-get-local-decoding): New
functions.
(tramp-get-encoding-command, tramp-set-encoding-command)
(tramp-get-decoding-command, tramp-set-decoding-command)
(tramp-get-encoding-function, tramp-set-encoding-function)
(tramp-get-decoding-function, tramp-set-decoding-function): Old
functions, removed.
2002-09-10 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-open-connection-setup-interactive-shell):
Change command to invoke /bin/sh slightly to make it compatible
with the `rc' shell. Suggested by Daniel Pittman.
2002-09-10 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-handle-write-region): Added missing
`)'. Hope it's the right place.
2002-09-09 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-open-connection-setup-interactive-shell): Do
"exec env PS1='$ ' /bin/sh" instead of just "exec /bin/sh" in
order to get a sane shell prompt. If people have ${CWD}, say, in
their shell prompt, then the default login shell might display
something harmless, but the /bin/sh will display a dollar sign
which confused the subsequent prompt recognition.
(tramp-multi-action-password): More debugging output.
(tramp-encoding-shell): Renamed from tramp-sh-program. More
documentation. Default to cmd.exe on Windows NT.
(tramp-encoding-command-switch): New variable. Use instead of
hard-wired "-c" which is only good for /bin/sh.
(tramp-encoding-reads-stdin): New variable. If t, commands are
called like "/bin/sh -c COMMAND <INPUT", if nil, they are called
like "/bin/sh -c COMMAND INPUT", ie the input file is the last
argument.
(tramp-multi-sh-program): Always default to tramp-encoding-shell.
(tramp-handle-file-local-copy, tramp-handle-write-region): Respect
tramp-encoding-shell and friends.
(tramp-find-inline-encoding): Use new-style calls for checking if
the local commands work.
2002-09-07 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-methods): Remove `tramp-completion-function'
entries. They are handled now by
`tramp-completion-function-alist'.
(tramp-completion-function): Defvar removed. I've never used
it. Hmm.
(tramp-get-completion-function)
(tramp-get-completion-rsh, tramp-get-completion-ssh)
(tramp-get-completion-telnet, tramp-get-completion-su): Functions
removed as well. Not necessary any longer due to extended
customization means.
(tramp-completion-function-alist): New defcustom. Holds all
FUNCTION FILE pairs used for user and host name completion
relevant for METHOD.
(tramp-completion-function-alist-rsh)
(tramp-completion-function-alist-ssh)
(tramp-completion-function-alist-telnet)
(tramp-completion-function-alist-su): Defconst for initializing
`tramp-completion-function-alist'. Unfortunately, mainly UNIX-like
values are known for me until now. Needs to be completed for at
least VMS++ like operating systems.
(tramp-set-completion-function)
(tramp-get-completion-function): New functions for configuration
of `tramp-completion-function-alist'. The old definition of
`tramp-get-completion-function' has been discarded.
(tramp-completion-handle-file-name-all-completions): Change
function call for user/host completion according to definition in
`tramp-completion-function-alist'.
(tramp-parse-passwd): Added exception handling for "root", because
`tramp-get-completion-su' (the previous place for this stuff)
doesn't exist any longer.
2002-09-07 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-enter-password): Use
`tramp-password-end-of-line' to terminate the line.
(tramp-bug): Include new variable `tramp-password-end-of-line'.
(tramp-password-end-of-line): New variable. People who use plink
under Windows might have to issue "\r\n" after the password, but
they need to send just "\n" after the other commands. So this
variable was introduced to complement `tramp-rsh-end-of-line'.
(tramp-wait-for-output, tramp-post-connection): Allow "\r" at end
of line of the output delimiter.
2002-09-06 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-handle-file-local-copy, tramp-find-shell)
(tramp-open-connection-setup-interactive-shell): Add some comments
about Douglas Grey Stephen's suggestions to make Tramp work better
with plink under Windows. I'm not sure what to think of them, but
now I have a guinea pig to try it out on. Said guinea pig is
having other problems, though... Also remove some commented-out
code.
2002-09-06 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-get-completion-methods): Algorithm slightly
tuned.
(tramp-get-completion-user-host): Accept user names as they are if
typed until "@".
(tramp-completion-mode): Replace `last-input-char' by modern
`last-input-event'. Check for `event-modifiers'.
2002-09-06 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (file-expand-wildcards): Corrected check to see if
advising is necessary.
2002-09-05 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-postfix-single-method-format)
(tramp-postfix-multi-method-format)
(tramp-postfix-multi-hop-format)
(tramp-postfix-user-format): New format strings.
(tramp-postfix-single-method-regexp)
(tramp-postfix-multi-method-regexp)
(tramp-postfix-multi-hop-regexp)
(tramp-postfix-user-regexp)
(tramp-make-multi-tramp-file-format)
(tramp-make-tramp-file-name): Apply them.
(tramp-completion-handle-file-name-all-completions): Fix for
invoking ange-ftp in case of "/ftp:xxx" file names.
2002-09-04 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-prefix-format)
(tramp-postfix-host-format): New format strings.
(tramp-prefix-regexp, tramp-method-regexp)
(tramp-postfix-single-method-regexp)
(tramp-postfix-multi-method-regexp)
(tramp-postfix-multi-hop-regexp)
(tramp-user-regexp, tramp-postfix-user-regexp)
(tramp-host-regexp, tramp-postfix-host-regexp)
(tramp-path-regexp): New atomar regular expressions. If
corresponding format strings exist, derived from them.
(tramp-file-name-structure)
(tramp-multi-file-name-structure)
(tramp-multi-file-name-hop-structure)
(tramp-make-multi-tramp-file-format)
(tramp-completion-mode)
(tramp-completion-dissect-file-name)
(tramp-parse-rhosts-group)
(tramp-parse-shosts-group)
(tramp-parse-hosts-group)
(tramp-parse-passwd-group): Apply these expressions.
(tramp-file-name-structure-unified)
(tramp-file-name-structure-separate)
(tramp-make-tramp-file-format-unified)
(tramp-make-tramp-file-format-separate)
(tramp-make-tramp-file-format)
(tramp-make-tramp-file-user-nil-format-unified)
(tramp-make-tramp-file-user-nil-format-separate)
(tramp-make-tramp-file-user-nil-format)
(tramp-multi-file-name-structure-unified)
(tramp-multi-file-name-structure-separate)
(tramp-multi-file-name-hop-structure-unified)
(tramp-multi-file-name-hop-structure-separate)
(tramp-make-multi-tramp-file-format-unified)
(tramp-make-multi-tramp-file-format-separate): Removed.
(tramp-make-tramp-file-name): Allow partial tramp file
names. Generate tramp file format on-the-fly depending on
parameters. Apply atomar format strings resp expressions.
(tramp-get-completion-methods)
(tramp-get-completion-user-host): Apply
`tramp-make-tramp-file-name'.
(tramp-parse-hosts-group): Take all host names and IP addresses
into account.
(tramp-bug): Remove `tramp-make-tramp-file-format'.
2002-09-01 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-methods): Add `tramp-completion-function'
for "su" and "sudo".
(tramp-get-completion-telnet): Implement it.
(tramp-parse-hosts)
(tramp-parse-hosts-group)
(tramp-get-completion-su)
(tramp-parse-passwd)
(tramp-parse-passwd-group): New functions.
2002-08-31 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-mode): Check for
`last-input-char'.
(tramp-completion-file-name-handler-alist): Add handler for
`file-exists-p.
(tramp-completion-handle-file-exists-p): New function.
(tramp-completion-handle-file-name-completion): Simplified.
(tramp-completion-dissect-file-name): Regexp's reorganised.
(tramp-completion-handle-file-name-all-completions): Call
completion-function only if `user' or `host' is given.
(tramp-get-completion-user-host): New function.
(tramp-get-completion-rsh)
(tramp-get-completion-ssh): Apply it.
2002-08-29 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-file-name-handler-alist): Add
handler for `expand-file-name'.
(tramp-completion-handle-expand-file-name): New function.
2002-08-26 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-mode): New function.
(tramp-completion-handle-file-name-directory)
(tramp-completion-handle-file-name-all-completions): Apply it.
(tramp-methods): Remove double definition of `ssh1-old' and
`ssh2-old'.
(tramp-point-at-eol): New defalias.
(tramp-parse-rhosts-group)
(tramp-parse-shosts-group):: Apply it.
2002-08-25 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-get-completion-methods)
(tramp-get-completion-rsh)
(tramp-get-completion-ssh): Add "[" for Xemacs.
(tramp-completion-file-name-regexp-separate): Expression adapted.
(tramp-completion-file-name-handler-alist): Add handler for
`file-name-directory' and `file-name-nondirectory'.
(tramp-completion-handle-file-name-directory)
(tramp-completion-handle-file-name-nondirectory)
(tramp-completion-run-real-handler): New functions.
(tramp-completion-file-name-handler)
(tramp-completion-handle-file-name-all-completions): Apply
`tramp-completion-run-real-handler'.
(tramp-parse-rhosts)
(tramp-parse-shosts): Use `with-temp-buffer'. `result? renamed to
`res' (otherwise side effects in XEmacs).
2002-08-24 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-file-name-regexp)
(tramp-completion-file-name-handler-alist)
(tramp-flatten-list)
(tramp-completion-dissect-file-name)
(tramp-get-completion-rsh)
(tramp-parse-rhosts)
(tramp-parse-rhosts-group)
(tramp-get-completion-ssh): Doc string tuned.
(tramp-methods): Doc string and custom type extended for
`tramp-completion-function'.
(tramp-completion-function): Variable added. Is it really used?
Other variables like `tramp-completion-function' aren't used.
(tramp-completion-file-name-handler-alist): Add handler for
`file-name-completion'.
(tramp-completion-handle-file-name-completion): New function.
2002-08-18 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-parse-rhosts)
(tramp-parse-rhosts-group)
(tramp-parse-shosts)
(tramp-parse-shosts-group): New functions.
2002-08-17 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-dissect-file-name)
(tramp-completion-dissect-file-name1): New functions.
2002-08-16 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-get-completion-function)
(tramp-get-completion-rsh)
(tramp-get-completion-ssh)
(tramp-get-completion-telnet): New functions.
(tramp-methods): Add `tramp-completion-function' for all methods.
2002-08-15 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-get-completion-methods): New function.
(tramp-find-default-method): Allow host to be nil (like user).
2002-08-14 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-file-name-regexp-unified)
(tramp-completion-file-name-regexp-separate)
(tramp-completion-file-name-regexp)
(tramp-completion-file-name-handler-alist): New defcustoms.
(tramp-completion-file-name-handler): New function. Add
`tramp-completion-file-name-handler' to `file-name-handler-alist'.
(tramp-run-real-handler): Add `tramp-completion-file-name-handler'
to `inhibit-file-name-handlers'.
(tramp-completion-handle-file-name-all-completions)
(tramp-completion-handle-file-name-completion): New functions.
2002-08-12 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-invoke-ange-ftp): `tramp-disable-ange-ftp'
must be called again after activating `ange-ftp'.
(tramp-ange-ftp-file-name-p): Check for Xemacs.
2002-08-08 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-do-copy-or-rename-file): Don't pass
KEEP-DATE to tramp-invoke-ange-ftp 'rename.
(tramp-handle-write-region): Don't pass LOCKNAME and CONFIRM to
tramp-invoke-ange-ftp 'write-region.
(tramp-handle-set-file-modes): Change order of FILENAME and MODE
passing to tramp-invoke-ange-ftp 'set-file-modes.
(tramp-flatten-list): New function. Maybe this functionality does
exist already elsewhere in the libraries.
(tramp-invoke-ange-ftp): Apply `tramp-flatten-list' to parameter
list in order to avoid nested lists, f.e. when invoked from
`tramp-handle-dired-call-process'.
2002-09-05 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-chunksize): New kluge variable.
(tramp-send-region): If tramp-chunksize is non-nil, send region in
parts and sleep 0.1 seconds between chunks.
2002-09-03 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-handle-insert-directory): Use
`insert-buffer-substring' instead of `insert-buffer', which is not
supposed to be used from Lisp. Remember old point in a variable
instead of using `mark'. Suggestion from Stefan Monnier.
(tramp-unified-filenames): New variable. Use it in default value
of other filename variables.
(file-expand-wildcards): Don't advise unless "[" and "]" are used
in the filename format.
2002-09-01 Kai Gro?ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-methods): Remove duplicate definition of
ssh1-old and ssh2-old.
author | Kai Großjohann <kgrossjo@eu.uu.net> |
---|---|
date | Sun, 22 Sep 2002 13:23:36 +0000 |
parents | 82d113655734 |
children | 20336ef6b20a |
comparison
equal
deleted
inserted
replaced
47575:4d9f899a5963 | 47576:b31c8ab7336a |
---|---|
6 @c %**end of header | 6 @c %**end of header |
7 | 7 |
8 @c This is *so* much nicer :) | 8 @c This is *so* much nicer :) |
9 @footnotestyle end | 9 @footnotestyle end |
10 | 10 |
11 @c In the Tramp CVS, the version number is auto-frobbed from the | |
12 @c Makefile, so you should edit the top-level Makefile to change | |
13 @c the version number. | |
14 @macro trampver{} | |
15 2.0.20 | |
16 @end macro | |
11 | 17 |
12 @c Entries for @command{install-info} to use | 18 @c Entries for @command{install-info} to use |
13 @dircategory Emacs | 19 @dircategory Emacs |
14 @direntry | 20 @direntry |
15 * TRAMP: (tramp). Transparent Remote Access, Multiple Protocol | 21 * TRAMP: (tramp). Transparent Remote Access, Multiple Protocol |
19 @c Macro to make formatting of the tramp program name consistent. | 25 @c Macro to make formatting of the tramp program name consistent. |
20 @macro tramp | 26 @macro tramp |
21 @sc{tramp} | 27 @sc{tramp} |
22 @end macro | 28 @end macro |
23 | 29 |
30 @c Distinguish between GNU Emacs and XEmacs. Derived from the | |
31 @c Makefile variable $(EMACS-ID). Valid values are `emacs' and `xemacs'. | |
32 @set emacs | |
33 | |
34 @c Some flags which make the text independent on the (X)Emacs flavor. | |
35 @c GNU Emacs values. | |
36 @ifset emacs | |
37 @set emacs-name Emacs | |
38 @set emacs-dir emacs | |
39 @set ftp-package-name Ange-FTP | |
40 @set tramp-prefix / | |
41 @set tramp-prefix-single-hop | |
42 @set tramp-postfix : | |
43 @set tramp-postfix-single-hop : | |
44 @set tramp-postfix-multi-hop : | |
45 @end ifset | |
46 | |
47 @c XEmacs counterparts. | |
48 @ifset xemacs | |
49 @set emacs-name XEmacs | |
50 @set emacs-dir xemacs | |
51 @set ftp-package-name EFS | |
52 @set tramp-prefix /[ | |
53 @set tramp-prefix-single-hop [ | |
54 @set tramp-postfix ] | |
55 @set tramp-postfix-single-hop / | |
56 @set tramp-postfix-multi-hop : | |
57 @end ifset | |
58 | |
59 @c Macros for formatting a filename. | |
60 @c trampfn is for a full filename, trampfnmhp means method, host, path | |
61 @c were given, and so on. | |
62 @macro trampfn(method, user, host, path) | |
63 @value{tramp-prefix}@value{method}@value{user}@@@value{host}@value{tramp-postfix}@value{path} | |
64 @end macro | |
65 | |
66 @tex | |
67 | |
68 @titlepage | |
69 @title @tramp{} version @trampver{} User Manual | |
70 | |
71 @author by Daniel Pittman | |
72 @author based on documentation by Kai Gro@ss{}johann | |
73 @page | |
74 | |
75 @end titlepage | |
76 @page | |
77 | |
78 @end tex | |
79 | |
80 @ifnottex | |
81 @node Top, Overview, (dir), (dir) | |
82 @top @tramp{} version @trampver{} User Manual | |
83 | |
84 This file documents @tramp{} version @trampver{}, a remote file | |
85 editing package for @value{emacs-name}. | |
86 | |
87 @tramp{} stands for `Transparent Remote (file) Access, Multiple | |
88 Protocol'. This package provides remote file editing, similar to | |
89 @value{ftp-package-name}. | |
90 | |
91 The difference is that @value{ftp-package-name} uses FTP to transfer | |
92 files between the local and the remote host, whereas @tramp{} uses a | |
93 combination of @command{rsh} and @command{rcp} or other work-alike | |
94 programs, such as @command{ssh}/@command{scp}. | |
95 | |
96 You can find the latest version of this document on the web at | |
97 @uref{http://www.freesoftware.fsf.org/tramp/}. | |
98 | |
99 @ifhtml | |
100 This manual is also available as a @uref{tramp_ja.html, Japanese | |
101 translation}. | |
102 | |
103 The latest release of @tramp{} is available for | |
104 @uref{http://savannah.gnu.org/download/tramp/, | |
105 download}, or you may see @ref{Obtaining @tramp{}} for more details, | |
106 including the CVS server details. | |
107 | |
108 @tramp{} also has a @uref{https://savannah.gnu.org/projects/tramp/, | |
109 Savannah Project Page}. | |
110 @end ifhtml | |
111 | |
112 There is a mailing list for @tramp{}, available at | |
113 @email{tramp-devel@@mail.freesoftware.fsf.org}, and archived at | |
114 @uref{http://www.mail-archive.com/emacs-rcp@@ls6.cs.uni-dortmund.de/} as | |
115 well as the usual Savannah archives. | |
116 | |
117 @end ifnottex | |
118 | |
119 @menu | |
120 * Overview:: What @tramp{} can and cannot do. | |
121 * Copying:: The license for this documentation. | |
122 | |
123 For the end user: | |
124 * Obtaining @tramp{}:: How to obtain @tramp{}. | |
125 * History:: History of @tramp{}. | |
126 * Installation:: Installing @tramp{} with your @value{emacs-name}. | |
127 * Configuration:: Configuring @tramp{} for use. | |
128 * Usage:: An overview of the operation of @tramp{}. | |
129 * Bug Reports:: Reporting Bugs and Problems. | |
130 * Frequently Asked Questions:: Questions and answers from the mailing list. | |
131 | |
132 For the developer: | |
133 * Version Control:: The inner workings of remote version control. | |
134 * Files directories and paths:: How file names, directories and paths are mangled and managed. | |
135 * Issues:: Debatable Issues and What Was Decided. | |
136 | |
137 @detailmenu | |
138 --- The Detailed Node Listing --- | |
139 | |
140 Configuring @tramp{} for use | |
141 | |
142 * Connection types:: Types of connections made to remote machines. | |
143 * Inline methods:: Inline methods. | |
144 * External transfer methods:: External transfer methods. | |
145 * Multi-hop Methods:: Connecting to a remote host using multiple hops. | |
146 * Default Method:: Selecting a default method. | |
147 * Customizing Methods:: Using Non-Standard Methods. | |
148 * Customizing Completion:: Selecting config files for user/host name completion. | |
149 * Remote Programs:: How @tramp{} finds and uses programs on the remote machine. | |
150 * Remote shell setup:: Remote shell setup hints. | |
151 * Windows setup hints:: Issues with Cygwin ssh. | |
152 | |
153 Using @tramp | |
154 | |
155 * Filename Syntax:: @tramp{} filename conventions. | |
156 * Multi-hop filename syntax:: Multi-hop filename conventions. | |
157 * Filename completion:: Filename completion. | |
158 * Dired:: Dired. | |
159 | |
160 The inner workings of remote version control | |
161 | |
162 * Version Controlled Files:: Determining if a file is under version control. | |
163 * Remote Commands:: Executing the version control commands on the remote machine. | |
164 * Changed workfiles:: Detecting if the working file has changed. | |
165 * Checking out files:: Bringing the workfile out of the repository. | |
166 * Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere. | |
167 | |
168 Things related to Version Control that don't fit elsewhere | |
169 | |
170 * Remote File Ownership:: How VC determines who owns a workfile. | |
171 * Back-end Versions:: How VC determines what release your RCS is. | |
172 | |
173 How file names, directories and paths are mangled and managed. | |
174 | |
175 * Path deconstruction:: Breaking a path into its components. | |
176 | |
177 @end detailmenu | |
178 @end menu | |
179 | |
180 @node Overview | |
181 @chapter An overview of @tramp | |
182 @cindex overview | |
183 | |
184 After the installation of @tramp{} into your @value{emacs-name}, you | |
185 will be able to access files on remote machines as though they were | |
186 local. Access to the remote file system for editing files, version | |
187 control, and @command{dired} are transparently enabled. | |
188 | |
189 Your access to the remote machine can be with the @command{rsh}, | |
190 @command{rlogin}, @command{telnet} programs or with any similar | |
191 connection method. This connection must pass ASCII successfully to be | |
192 usable but need not be 8-bit clean. | |
193 | |
194 The package provides support for @command{ssh} connections out of the | |
195 box, one of the more common uses of the package. This allows | |
196 relatively secure access to machines, especially if @command{ftp} | |
197 access is disabled. | |
198 | |
199 The majority of activity carried out by @tramp{} requires only that | |
200 the remote login is possible and is carried out at the terminal. In | |
201 order to access remote files @tramp{} needs to transfer their content | |
202 to the local machine temporarily. | |
203 | |
204 @tramp{} can transfer files between the machines in a variety of ways. | |
205 The details are easy to select, depending on your needs and the | |
206 machines in question. | |
207 | |
208 The fastest transfer methods (for large files) rely on a remote file | |
209 transfer package such as @command{rcp}, @command{scp} or | |
210 @command{rsync}. The use of these methods is only possible if the | |
211 file copy command does not ask for a password for the remote machine. | |
212 | |
213 If the remote copy methods are not suitable for you, @tramp{} also | |
214 supports the use of encoded transfers directly through the shell. | |
215 This requires that the @command{mimencode} or @command{uuencode} tools | |
216 are available on the remote machine. These methods are generally | |
217 faster for small files. | |
218 | |
219 Within these limitations, @tramp{} is quite powerful. It is worth | |
220 noting that, as of the time of writing, it is far from a polished | |
221 end-user product. For a while yet you should expect to run into rough | |
222 edges and problems with the code now and then. | |
223 | |
224 It is finished enough that the developers use it for day to day work but | |
225 the installation and setup can be a little difficult to master, as can | |
226 the terminology. | |
227 | |
228 @tramp{} is still under active development and any problems you encounter, | |
229 trivial or major, should be reported to the @tramp{} developers. | |
230 @xref{Bug Reports}. | |
231 | |
232 | |
233 @subsubheading Behind the scenes | |
234 @cindex behind the scenes | |
235 @cindex details of operation | |
236 @cindex how it works | |
237 | |
238 This section tries to explain what goes on behind the scenes when you | |
239 access a remote file through @tramp{}. | |
240 | |
241 Suppose you type @kbd{C-x C-f} and enter part of an @tramp{} file name, | |
242 then hit @kbd{@key{TAB}} for completion. Suppose further that this is | |
243 the first time that @tramp{} is invoked for the host in question. Here's | |
244 what happens: | |
245 | |
246 @itemize | |
247 @item | |
248 @tramp{} discovers that it needs a connection to the host. So it | |
249 invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l | |
250 @var{user}} or a similar tool to connect to the remote host. | |
251 Communication with this process happens through an | |
252 @value{emacs-name} buffer, that is, the output from the remote end | |
253 goes into a buffer. | |
254 | |
255 @item | |
256 The remote host may prompt for a login name (for @command{telnet}). The | |
257 login name is given in the file name, so @tramp{} sends the login name and | |
258 a newline. | |
259 | |
260 @item | |
261 The remote host may prompt for a password or pass phrase (for | |
262 @command{rsh} or for @command{telnet} after sending the login name). | |
263 @tramp{} displays the prompt in the minibuffer, asking you for the | |
264 password or pass phrase. | |
265 | |
266 You enter the password or pass phrase. @tramp{} sends it to the remote | |
267 host, followed by a newline. | |
268 | |
269 @item | |
270 @tramp{} now waits for the shell prompt or for a message that the login | |
271 failed. | |
272 | |
273 If @tramp{} sees neither of them after a certain period of time (a minute, | |
274 say), then it issues an error message saying that it couldn't find the | |
275 remote shell prompt and shows you what the remote host has sent. | |
276 | |
277 If @tramp{} sees a @samp{login failed} message, it tells you so, | |
278 aborts the login attempt and allows you to try again. | |
279 | |
280 @item | |
281 Suppose that the login was successful and @tramp{} sees the shell prompt | |
282 from the remote host. Now @tramp{} invokes @command{/bin/sh} because | |
283 Bourne shells and C shells have different command | |
284 syntaxes.@footnote{Invoking @command{/bin/sh} will fail if your login | |
285 shell doesn't recognize @samp{exec /bin/sh} as a valid command. | |
286 Maybe you use the Scheme shell @command{scsh}@dots{}} | |
287 | |
288 After the Bourne shell has come up, @tramp{} sends a few commands to | |
289 ensure a good working environment. It turns off echoing, it sets the | |
290 shell prompt, and a few other things. | |
291 | |
292 @item | |
293 Now the remote shell is up and it good working order. Remember, what | |
294 was supposed to happen is that @tramp{} tries to find out what files exist | |
295 on the remote host so that it can do filename completion. | |
296 | |
297 So, @tramp{} basically issues @command{cd} and @command{ls} commands and | |
298 also sometimes @command{echo} with globbing. Another command that is | |
299 often used is @command{test} to find out whether a file is writable or a | |
300 directory or the like. The output of each command is parsed for the | |
301 necessary operation. | |
302 | |
303 @item | |
304 Suppose you are finished with filename completion, have entered @kbd{C-x | |
305 C-f}, a full file name and hit @kbd{@key{RET}}. Now comes the time to | |
306 transfer the file contents from the remote host to the local host so | |
307 that you can edit them. | |
308 | |
309 See above for an explanation of how @tramp{} transfers the file contents. | |
310 | |
311 For inline transfers, @tramp{} issues a command like @samp{mimencode -b | |
312 /path/to/remote/file}, waits until the output has accumulated in the | |
313 buffer that's used for communication, then decodes that output to | |
314 produce the file contents. | |
315 | |
316 For out-of-band transfers, @tramp{} issues a command like the following: | |
317 @example | |
318 rcp user@@host:/path/to/remote/file /tmp/tramp.4711 | |
319 @end example | |
320 It then reads the local temporary file @file{/tmp/tramp.4711} into a | |
321 buffer and deletes the temporary file. | |
322 | |
323 @item | |
324 You now edit the buffer contents, blithely unaware of what has happened | |
325 behind the scenes. (Unless you have read this section, that is.) When | |
326 you are finished, you type @kbd{C-x C-s} to save the buffer. | |
327 | |
328 @item | |
329 Again, @tramp{} transfers the file contents to the remote host either | |
330 inline or out-of-band. This is the reverse of what happens when reading | |
331 the file. | |
332 | |
333 @end itemize | |
334 | |
335 I hope this has provided you with a basic overview of what happens | |
336 behind the scenes when you open a file with @tramp{}. | |
337 | |
338 | |
24 @c Copying permissions, et al | 339 @c Copying permissions, et al |
340 @node Copying | |
341 @chapter Copying. | |
342 @cindex copying | |
343 | |
25 @copying | 344 @copying |
26 This file documents @tramp{}, a remote file editing package for Emacs and | |
27 XEmacs. | |
28 | |
29 Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software | 345 Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software |
30 Foundation, Inc. | 346 Foundation, Inc. |
31 | 347 |
32 @quotation | 348 @quotation |
33 Permission is granted to copy, distribute and/or modify this document | 349 Permission is granted to copy, distribute and/or modify this document |
48 license to the document, as described in section 6 of the license. | 364 license to the document, as described in section 6 of the license. |
49 @end quotation | 365 @end quotation |
50 @end copying | 366 @end copying |
51 | 367 |
52 | 368 |
53 @tex | |
54 | |
55 @titlepage | |
56 @title @tramp{} User Manual | |
57 | |
58 @author by Daniel Pittman | |
59 @author based on documentation by Kai Gro@ss{}johann | |
60 @page | |
61 | |
62 @end titlepage | |
63 @page | |
64 | |
65 @end tex | |
66 | |
67 @ifnottex | |
68 @node Top, Overview, (dir), (dir) | |
69 @top @tramp{} User Manual | |
70 | |
71 @tramp{} stands for `Transparent Remote (file) Access, Multiple | |
72 Protocol'. This package provides remote file editing, similar to | |
73 @cite{Ange-FTP} and @cite{EFS}. | |
74 | |
75 The difference is that Ange-FTP uses FTP to transfer files between the | |
76 local and the remote host, whereas @tramp{} uses a combination of | |
77 @command{rsh} and @command{rcp} or other work-alike programs, such as | |
78 @command{ssh}/@command{scp}. | |
79 | |
80 You can find the latest version of this document on the web at | |
81 @uref{http://www.freesoftware.fsf.org/tramp/}. | |
82 | |
83 @ifhtml | |
84 This manual is also available as a @uref{tramp_ja.html, Japanese | |
85 translation}. | |
86 | |
87 The latest release of @tramp{} is available for | |
88 @uref{http://savannah.gnu.org/download/tramp/, | |
89 download}, or you may see @ref{Obtaining @tramp{}} for more details, | |
90 including the CVS server details. | |
91 | |
92 @tramp{} also has a @uref{https://savannah.gnu.org/projects/tramp/, | |
93 Savannah Project Page}. | |
94 @end ifhtml | |
95 | |
96 There is a mailing list for @tramp{}, available at | |
97 @email{tramp-devel@@mail.freesoftware.fsf.org}, and archived at | |
98 @uref{http://www.mail-archive.com/emacs-rcp@@ls6.cs.uni-dortmund.de/} as | |
99 well as the usual Savannah archives. | |
100 | |
101 @end ifnottex | |
102 | |
103 @menu | |
104 * Overview:: What @tramp{} can and cannot do. | |
105 | |
106 For the end user: | |
107 * Obtaining @tramp{}:: How to obtain @tramp{}. | |
108 * History:: History of @tramp{} | |
109 * Installation:: Installing @tramp{} with your (X)Emacs. | |
110 * Configuration:: Configuring @tramp{} for use. | |
111 * Usage:: An overview of the operation of @tramp{}. | |
112 * Bug Reports:: Reporting Bugs and Problems | |
113 * Frequently Asked Questions:: Questions and answers from the mailing list. | |
114 | |
115 For the developer: | |
116 * Version Control:: The inner workings of remote version control. | |
117 * Files directories and paths:: How file names, directories and paths are mangled and managed. | |
118 * Issues:: | |
119 | |
120 @detailmenu | |
121 --- The Detailed Node Listing --- | |
122 | |
123 Configuring @tramp{} for use | |
124 | |
125 * Connection types:: Types of connections made to remote machines. | |
126 * Inline methods:: Inline methods. | |
127 * External transfer methods:: External transfer methods. | |
128 * Multi-hop Methods:: Connecting to a remote host using multiple hops. | |
129 * Default Method:: Selecting a default method. | |
130 * Customizing Methods:: Using Non-Standard Methods. | |
131 * Remote Programs:: How @tramp{} finds and uses programs on the remote machine. | |
132 * Remote shell setup:: | |
133 | |
134 Using @tramp | |
135 | |
136 * Filename Syntax:: @tramp{} filename conventions. | |
137 * Multi-hop filename syntax:: Multi-hop filename conventions | |
138 * Dired:: Dired and filename completion. | |
139 | |
140 The inner workings of remote version control | |
141 | |
142 * Version Controlled Files:: Determining if a file is under version control. | |
143 * Remote Commands:: Executing the version control commands on the remote machine. | |
144 * Changed workfiles:: Detecting if the working file has changed. | |
145 * Checking out files:: Bringing the workfile out of the repository. | |
146 * Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere | |
147 | |
148 Things related to Version Control that don't fit elsewhere | |
149 | |
150 * Remote File Ownership:: How VC determines who owns a workfile. | |
151 * Back-end Versions:: How VC determines what release your RCS is. | |
152 | |
153 How file names, directories and paths are mangled and managed. | |
154 | |
155 * Path deconstruction:: Breaking a path into its components. | |
156 | |
157 @end detailmenu | |
158 @end menu | |
159 | |
160 | |
161 @node Overview | |
162 @chapter An overview of @tramp | |
163 @cindex overview | |
164 | |
165 After the installation of @tramp{} into your Emacs, you will be able | |
166 to access files on remote machines as though they were local. Access | |
167 to the remote file system for editing files, version control, and | |
168 @command{dired} are transparently enabled. | |
169 | |
170 Your access to the remote machine can be with the @command{rsh}, | |
171 @command{rlogin}, @command{telnet} programs or with any similar | |
172 connection method. This connection must pass ASCII successfully to be | |
173 usable but need not be 8-bit clean. | |
174 | |
175 The package provides support for @command{ssh} connections out of the | |
176 box, one of the more common uses of the package. This allows | |
177 relatively secure access to machines, especially if @command{ftp} | |
178 access is disabled. | |
179 | |
180 The majority of activity carried out by @tramp{} requires only that | |
181 the remote login is possible and is carried out at the terminal. In | |
182 order to access remote files @tramp{} needs to transfer their content | |
183 to the local machine temporarily. | |
184 | |
185 @tramp{} can transfer files between the machines in a variety of ways. | |
186 The details are easy to select, depending on your needs and the | |
187 machines in question. | |
188 | |
189 The fastest transfer methods (for large files) rely on a remote file | |
190 transfer package such as @command{rcp}, @command{scp} or | |
191 @command{rsync}. The use of these methods is only possible if the | |
192 file copy command does not ask for a password for the remote machine. | |
193 | |
194 If the remote copy methods are not suitable for you, @tramp{} also | |
195 supports the use of encoded transfers directly through the shell. | |
196 This requires that the @command{mimencode} or @command{uuencode} tools | |
197 are available on the remote machine. These methods are generally | |
198 faster for small files. | |
199 | |
200 Within these limitations, @tramp{} is quite powerful. It is worth | |
201 noting that, as of the time of writing, it is far from a polished | |
202 end-user product. For a while yet you should expect to run into rough | |
203 edges and problems with the code now and then. | |
204 | |
205 It is finished enough that the developers use it for day to day work but | |
206 the installation and setup can be a little difficult to master, as can | |
207 the terminology. | |
208 | |
209 @tramp{} is still under active development and any problems you encounter, | |
210 trivial or major, should be reported to the @tramp{} developers. | |
211 @xref{Bug Reports}. | |
212 | |
213 | |
214 @subsubheading Behind the scenes | |
215 @cindex behind the scenes | |
216 @cindex details of operation | |
217 @cindex how it works | |
218 | |
219 This section tries to explain what goes on behind the scenes when you | |
220 access a remote file through @tramp{}. | |
221 | |
222 Suppose you type @kbd{C-x C-f} and enter part of an @tramp{} file name, | |
223 then hit @kbd{@key{TAB}} for completion. Suppose further that this is | |
224 the first time that @tramp{} is invoked for the host in question. Here's | |
225 what happens: | |
226 | |
227 @itemize | |
228 @item | |
229 @tramp{} discovers that it needs a connection to the host. So it | |
230 invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l | |
231 @var{user}} or a similar tool to connect to the remote host. | |
232 Communication with this process happens through an Emacs buffer, that | |
233 is, the output from the remote end goes into a buffer. | |
234 | |
235 @item | |
236 The remote host may prompt for a login name (for @command{telnet}). The | |
237 login name is given in the file name, so @tramp{} sends the login name and | |
238 a newline. | |
239 | |
240 @item | |
241 The remote host may prompt for a password or pass phrase (for | |
242 @command{rsh} or for @command{telnet} after sending the login name). | |
243 @tramp{} displays the prompt in the minibuffer, asking you for the | |
244 password or pass phrase. | |
245 | |
246 You enter the password or pass phrase. @tramp{} sends it to the remote | |
247 host, followed by a newline. | |
248 | |
249 @item | |
250 @tramp{} now waits for the shell prompt or for a message that the login | |
251 failed. | |
252 | |
253 If @tramp{} sees neither of them after a certain period of time (a minute, | |
254 say), then it issues an error message saying that it couldn't find the | |
255 remote shell prompt and shows you what the remote host has sent. | |
256 | |
257 If @tramp{} sees a `login failed' message, it tells you so, aborts the | |
258 login attempt and allows you to try again. | |
259 | |
260 @item | |
261 Suppose that the login was successful and @tramp{} sees the shell prompt | |
262 from the remote host. Now @tramp{} invokes @command{/bin/sh} because | |
263 Bourne shells and C shells have different command | |
264 syntaxes.@footnote{Invoking @command{/bin/sh} will fail if your login | |
265 shell doesn't recognize @samp{exec /bin/sh} as a valid command. | |
266 Maybe you use the Scheme shell @command{scsh}@dots{}} | |
267 | |
268 After the Bourne shell has come up, @tramp{} sends a few commands to | |
269 ensure a good working environment. It turns off echoing, it sets the | |
270 shell prompt, and a few other things. | |
271 | |
272 @item | |
273 Now the remote shell is up and it good working order. Remember, what | |
274 was supposed to happen is that @tramp{} tries to find out what files exist | |
275 on the remote host so that it can do filename completion. | |
276 | |
277 So, @tramp{} basically issues @command{cd} and @command{ls} commands and | |
278 also sometimes @command{echo} with globbing. Another command that is | |
279 often used is @command{test} to find out whether a file is writable or a | |
280 directory or the like. The output of each command is parsed for the | |
281 necessary operation. | |
282 | |
283 @item | |
284 Suppose you are finished with filename completion, have entered @kbd{C-x | |
285 C-f}, a full file name and hit @kbd{@key{RET}}. Now comes the time to | |
286 transfer the file contents from the remote host to the local host so | |
287 that you can edit them. | |
288 | |
289 See above for an explanation of how @tramp{} transfers the file contents. | |
290 | |
291 For inline transfers, @tramp{} issues a command like @samp{mimencode -b | |
292 /path/to/remote/file}, waits until the output has accumulated in the | |
293 buffer that's used for communication, then decodes that output to | |
294 produce the file contents. | |
295 | |
296 For out-of-band transfers, @tramp{} issues a command like @samp{rcp | |
297 user@@host:/path/to/remote/file /tmp/tramp.4711} and then reads the local | |
298 temporary file @file{/tmp/tramp.4711} into a buffer and deletes the | |
299 temporary file. | |
300 | |
301 @item | |
302 You now edit the buffer contents, blithely unaware of what has happened | |
303 behind the scenes. (Unless you have read this section, that is.) When | |
304 you are finished, you type @kbd{C-x C-s} to save the buffer. | |
305 | |
306 @item | |
307 Again, @tramp{} transfers the file contents to the remote host either | |
308 inline or out-of-band. This is the reverse of what happens when reading | |
309 the file. | |
310 | |
311 @end itemize | |
312 | |
313 I hope this has provided you with a basic overview of what happens | |
314 behind the scenes when you open a file with @tramp{}. | |
315 | |
316 | |
317 @c For the end user | 369 @c For the end user |
318 @node Obtaining @tramp{} | 370 @node Obtaining @tramp{} |
319 @chapter Obtaining @tramp{}. | 371 @chapter Obtaining @tramp{}. |
320 @cindex obtaining Tramp | 372 @cindex obtaining Tramp |
321 | 373 |
331 For the especially brave, @tramp{} is available from CVS. The CVS version | 383 For the especially brave, @tramp{} is available from CVS. The CVS version |
332 is the latest version of the code and may contain incomplete features or | 384 is the latest version of the code and may contain incomplete features or |
333 new issues. Use these versions at your own risk. | 385 new issues. Use these versions at your own risk. |
334 | 386 |
335 Instructions for obtaining the latest development version of @tramp{} | 387 Instructions for obtaining the latest development version of @tramp{} |
336 from CVS can be found by going to the Savannah project page at | 388 from CVS can be found by going to the Savannah project page at the |
337 @uref{http://savannah.gnu.org/projects/tramp/} and then clicking on the | 389 following URL and then clicking on the CVS link in the navigation bar at |
338 CVS link in the navigation bar at the top. Or follow the example | 390 the top. |
339 session below: | 391 |
392 @noindent | |
393 @uref{http://savannah.gnu.org/projects/tramp/} | |
394 | |
395 @noindent | |
396 Or follow the example session below: | |
340 | 397 |
341 @example | 398 @example |
342 ] @strong{cd ~/lisp} | 399 ] @strong{cd ~/@value{emacs-dir}} |
343 ] @strong{cvs -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp login} | 400 ] @strong{cvs -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp login} |
344 | 401 |
345 (Logging in to anoncvs@@subversions.gnu.org) | 402 (Logging in to anoncvs@@subversions.gnu.org) |
346 CVS password: @strong{(just hit RET here)} | 403 CVS password: @strong{(just hit RET here)} |
347 @dots{} | 404 @dots{} |
348 | 405 |
349 ] @strong{cvs -z3 -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp co tramp} | 406 ] @strong{cvs -z3 -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp co tramp} |
350 @end example | 407 @end example |
351 | 408 |
352 You should now have a directory @file{~/lisp/tramp} containing the latest | 409 @noindent |
410 You should now have a directory @file{~/@value{emacs-dir}/tramp} containing the latest | |
353 version of @tramp{}. You can fetch the latest updates from the repository | 411 version of @tramp{}. You can fetch the latest updates from the repository |
354 by issuing the command: | 412 by issuing the command: |
355 | 413 |
356 @example | 414 @example |
357 ] @strong{cd ~/lisp/tramp} | 415 ] @strong{cd ~/@value{emacs-dir}/tramp} |
358 ] @strong{cvs update -d} | 416 ] @strong{cvs update -d} |
359 @end example | 417 @end example |
360 | 418 |
361 | 419 |
362 @node History | 420 @node History |
376 added in April 2000 and the unification of @tramp{} and Ange-FTP | 434 added in April 2000 and the unification of @tramp{} and Ange-FTP |
377 filenames in July 2002. | 435 filenames in July 2002. |
378 | 436 |
379 | 437 |
380 @node Installation | 438 @node Installation |
381 @chapter Installing @tramp{} into Emacs or XEmacs | 439 @chapter Installing @tramp{} into @value{emacs-name}. |
382 @cindex installation | 440 @cindex installation |
383 | 441 |
384 If you use the version that comes with your Emacs or the XEmacs | 442 If you use the version that comes with your @value{emacs-name}, the |
385 package, the following information is not necessary. Installing | 443 following information is not necessary. Installing @tramp{} into your |
386 @tramp{} into your Emacs or XEmacs is a relatively easy process, at | 444 @value{emacs-name} is a relatively easy process, at least compared |
387 least compared to rebuilding your machine from scratch. ;) | 445 to rebuilding your machine from scratch. ;) |
388 | 446 |
389 Seriously though, the installation should be a fairly simple matter. | 447 Seriously though, the installation should be a fairly simple matter. |
390 | 448 |
391 The easiest way to proceed is as follows: | 449 The easiest way to proceed is as follows: |
392 | 450 |
393 @itemize | 451 @itemize @bullet |
394 @item | 452 @item |
395 Choose a directory, say @file{~/emacs/}. Change into that directory and | 453 Choose a directory, say @file{~/@value{emacs-dir}/}. Change into that directory and |
396 unpack the tarball. This will give you a directory | 454 unpack the tarball. This will give you a directory |
397 @file{~/emacs/tramp/} which contains subdirectories @file{lisp} for the | 455 @file{~/@value{emacs-dir}/tramp/} which contains subdirectories @file{lisp} for the |
398 Lisp code and @file{texi} for the documentation. | 456 Lisp code and @file{texi} for the documentation. |
399 | 457 |
400 @item | 458 @item |
401 Optionally byte-compile all files in the Lisp directory, | 459 Optionally byte-compile all files in the Lisp directory, |
402 @file{~/emacs/tramp/lisp/}, by issuing a command like the following from | 460 @file{~/@value{emacs-dir}/tramp/lisp/}, by issuing a command like the following from |
403 the top level directory @file{~/emacs/tramp/}: | 461 the top level directory @file{~/@value{emacs-dir}/tramp/}: |
462 | |
404 @example | 463 @example |
405 make EMACS=emacs all # for Emacs users | 464 make EMACS=@value{emacs-dir} all |
406 make EMACS=xemacs all # for XEmacs users | |
407 @end example | 465 @end example |
408 | 466 |
409 @item | 467 @item |
410 NOTE: | 468 NOTE: If you run into problems running the example @command{make} |
411 @example | 469 command, don't dispare. You can still byte compile the @file{*.el} |
412 If you run into problems running the example @command{make} | 470 files by opening @value{emacs-name} in @command{dired} (@command{C-x |
413 commands, don't dispare. You can still byte compile the | 471 d}) mode, at @file{~/@value{emacs-dir}/tramp/lisp}. Mark the lisp files with |
414 @file{*.el} files by opening emacs in @command{dired} | 472 @kbd{m}, then press @kbd{B} to byte compile your selections. |
415 (@command{C-x d}) mode, at @file{~/tramp/lisp}. Mark the lisp | 473 |
416 files with @kbd{m}, then press @kbd{B} to byte compile | 474 Something similar can be done to create the info manual. Just change |
417 your selections. | 475 to directory @file{~/@value{emacs-dir}/tramp/texi} and load the |
418 | 476 @file{tramp.texi} file in @value{emacs-name}. Then press @kbd{M-x |
419 Something similar can be done to create the info manual. | 477 makeinfo-buffer @key{RET}} to generate @file{tramp.info}. |
420 Just cd to @file{~/emacs/tramp/texi} and load the @file{tramp.texi} | |
421 file in emacs. Then press @kbd{M-x makeinfo-buffer <RET>} | |
422 to generate @file{tramp.info}. | |
423 @end example | |
424 | 478 |
425 @item | 479 @item |
426 Tell Emacs about the new Lisp directory and the @tramp{} package | 480 Tell @value{emacs-name} about the new Lisp directory and the |
427 with the following lines in @file{~/.emacs}: | 481 @tramp{} package with the following lines in @file{~/.emacs}: |
482 | |
428 @lisp | 483 @lisp |
429 (add-to-list 'load-path "~/emacs/tramp/lisp/") | 484 (add-to-list 'load-path "~/@value{emacs-dir}/tramp/lisp/") |
430 (require 'tramp) | 485 (require 'tramp) |
431 @end lisp | 486 @end lisp |
432 | 487 |
433 @item | 488 @item |
434 To be able to read the Info documentation, create a file | 489 To be able to read the Info documentation, create a file |
435 @file{~/emacs/tramp/texi/dir} using for example the | 490 @file{~/@value{emacs-dir}/tramp/texi/dir} using the |
436 @command{install-info} command, and add the directory to the search | 491 @command{install-info} command, and add the directory to the search |
437 path for Info. | 492 path for Info. |
438 | 493 |
439 @item | |
440 NOTE: | 494 NOTE: |
495 On systems using the @cite{gnu} version of @command{install-info}, the | |
496 @command{install-info} syntax is very direct and simple. One can | |
497 change to directory @file{~/@value{emacs-dir}/tramp/texi} and type: | |
498 | |
441 @example | 499 @example |
442 On systems using `gnu' @command{install-info}, the | 500 install-info tramp.info dir |
443 @command{install-info} syntax is very direct and simple. One can | 501 @end example |
444 cd to @file{~/emacs/tramp/texi} and type: | 502 |
445 @kbd{install-info tramp.info dir} | |
446 and a @file{dir} file will be created with the @tramp{} | 503 and a @file{dir} file will be created with the @tramp{} |
447 entry. The info reader will know how to interpret it, but must | 504 entry. The info reader will know how to interpret it, but must |
448 be told where to find it (see below). If you want anything fancier | 505 be told where to find it (see below). If you want anything fancier |
449 you'll need to look through @kbd{man install-info}. | 506 you'll need to look through @kbd{man install-info}. |
450 | 507 |
451 Debian gnu/linux doesn't default to `gnu' @command{install-info} and | 508 Debian gnu/linux doesn't default to @cite{gnu} @command{install-info} |
452 uses its own version. This version does not create a @file{dir} file | 509 and uses its own version. This version does not create a @file{dir} |
453 for you from scratch. You must provide a skeleton dir file it | 510 file for you from scratch. You must provide a skeleton @file{dir} |
454 recognizes. One can be found in a default install at | 511 file it recognizes. One can be found in a default installation of |
455 @file{/usr/info/dir}. Copy the top of this file down to the first | 512 @value{emacs-name} at @file{/usr/info/dir}. Copy the top of this file |
456 occurrence of `* Menu' including that line plus one more blank line, | 513 down to the first occurrence of @code{* Menu} including that line plus |
457 to your working directory @file{texi/dir}, or use the sample provided | 514 one more blank line, to your working directory |
458 in the @file{texi} directory of this distribution. See | 515 @file{~/@value{emacs-dir}/tramp/texi}, or use the sample |
459 @file{texi/dir_sample} | 516 @file{~/@value{emacs-dir}/tramp/texi/dir_sample}. |
460 | 517 |
461 Once a @file{dir} file is in place, this command will make the entry. | 518 Once a @file{dir} file is in place, this command will make the entry: |
462 install-info --infodir=. tramp.info | 519 |
463 If you want it in a specific category | 520 @example |
464 (see @kbd{man install-info} for further details) | 521 install-info --infodir=. tramp.info |
465 @end example | 522 @end example |
466 | 523 |
524 If you want it in a specific category see @kbd{man install-info} for | |
525 further details. | |
526 | |
467 If the environment variable @env{INFOPATH} is set, add the directory | 527 If the environment variable @env{INFOPATH} is set, add the directory |
468 @file{~/emacs/tramp/texi/} to it. Else, add the directory to | 528 @file{~/@value{emacs-dir}/tramp/texi/} to it. Else, add the directory to |
529 @ifset emacs | |
469 @code{Info-default-directory-list}, as follows: | 530 @code{Info-default-directory-list}, as follows: |
531 | |
470 @lisp | 532 @lisp |
471 (add-to-list 'Info-default-directory-list "~/emacs/tramp/texi/") | 533 (add-to-list 'Info-default-directory-list "~/@value{emacs-dir}/tramp/texi/") |
472 @end lisp | 534 @end lisp |
473 XEmacs 21 users should use @code{Info-directory-list} rather than | 535 @end ifset |
474 @code{Info-default-directory-list}. | 536 @ifset xemacs |
537 @code{Info-directory-list}, as follows: | |
538 @lisp | |
539 (add-to-list 'Info-directory-list "~/@value{emacs-dir}/tramp/texi/") | |
540 @end lisp | |
541 @end ifset | |
475 | 542 |
476 @end itemize | 543 @end itemize |
477 | 544 |
478 | 545 @ifset xemacs |
479 For XEmacs users, the package @file{fsf-compat} must be installed. | 546 For @value{emacs-name}, the package @file{fsf-compat} must be installed. |
480 For details on package installation, see @ref{Packages, , ,xemacs}. | 547 For details on package installation, see @ref{Packages, , ,xemacs}. |
481 @ifhtml | 548 @ifhtml |
482 (If the previous link doesn't work, try the XEmacs documentation at | 549 (If the previous link doesn't work, try the @value{emacs-name} |
483 @uref{http://www.xemacs.org/Documentation/packageGuide.html,the XEmacs | 550 documentation at |
484 site}.) | 551 @uref{http://www.xemacs.org/Documentation/packageGuide.html,the |
552 @value{emacs-name} site}.) | |
485 @end ifhtml | 553 @end ifhtml |
554 @end ifset | |
486 | 555 |
487 @node Configuration | 556 @node Configuration |
488 @chapter Configuring @tramp{} for use | 557 @chapter Configuring @tramp{} for use |
489 @cindex configuration | 558 @cindex configuration |
490 | 559 |
491 @cindex default configuration | 560 @cindex default configuration |
492 @tramp{} is (normally) fully functional when it is initially | 561 @tramp{} is (normally) fully functional when it is initially |
493 installed. It is initially configured to use the @command{sh} program | 562 installed. It is initially configured to use the @command{ssh} program |
494 to connect to the remote host and to use base-64 encoding (on the | 563 to connect to the remote host and to use base-64 encoding (on the |
495 remote host, via @command{mimencode}, and on the local host via the | 564 remote host, via @command{mimencode}, and on the local host via the |
496 built-in support for base-64 encoding in Emacs). | 565 built-in support for base-64 encoding in Emacs). |
497 | 566 |
498 On some hosts, there are problems with opening a connection. These are | 567 On some hosts, there are problems with opening a connection. These are |
511 * Inline methods:: Inline methods. | 580 * Inline methods:: Inline methods. |
512 * External transfer methods:: External transfer methods. | 581 * External transfer methods:: External transfer methods. |
513 * Multi-hop Methods:: Connecting to a remote host using multiple hops. | 582 * Multi-hop Methods:: Connecting to a remote host using multiple hops. |
514 * Default Method:: Selecting a default method. | 583 * Default Method:: Selecting a default method. |
515 * Customizing Methods:: Using Non-Standard Methods. | 584 * Customizing Methods:: Using Non-Standard Methods. |
585 * Customizing Completion:: Selecting config files for user/host name completion. | |
516 * Remote Programs:: How @tramp{} finds and uses programs on the remote machine. | 586 * Remote Programs:: How @tramp{} finds and uses programs on the remote machine. |
517 * Remote shell setup:: Remote shell setup hints. | 587 * Remote shell setup:: Remote shell setup hints. |
518 * Windows setup hints:: Issues with Cygwin ssh. | 588 * Windows setup hints:: Issues with Cygwin ssh. |
519 @end menu | 589 @end menu |
520 | 590 |
539 @cindex out-of-band methods | 609 @cindex out-of-band methods |
540 @cindex methods, inline | 610 @cindex methods, inline |
541 @cindex methods, external transfer | 611 @cindex methods, external transfer |
542 @cindex methods, out-of-band | 612 @cindex methods, out-of-band |
543 Loading or saving a remote file requires that the content of the file | 613 Loading or saving a remote file requires that the content of the file |
544 be transferred between the two machines. The content of the file can be | 614 be transfered between the two machines. The content of the file can be |
545 transferred over the same connection used to log in to the remote | 615 transfered over the same connection used to log in to the remote |
546 machine or the file can be transferred through another connection using | 616 machine or the file can be transfered through another connection using |
547 a remote copy program such as @command{rcp}, @command{scp} or | 617 a remote copy program such as @command{rcp}, @command{scp} or |
548 @command{rsync}. The former are called @dfn{inline methods}, the | 618 @command{rsync}. The former are called @dfn{inline methods}, the |
549 latter are called @dfn{out-of-band methods} or @dfn{external transfer | 619 latter are called @dfn{out-of-band methods} or @dfn{external transfer |
550 methods} (@dfn{external methods} for short). | 620 methods} (@dfn{external methods} for short). |
551 | 621 |
641 | 711 |
642 There are also two variants, @option{sm-ssh1} and @option{sm-ssh2} | 712 There are also two variants, @option{sm-ssh1} and @option{sm-ssh2} |
643 that use the @command{ssh1} and @command{ssh2} commands explicitly. If | 713 that use the @command{ssh1} and @command{ssh2} commands explicitly. If |
644 you don't know what these are, you do not need these options. | 714 you don't know what these are, you do not need these options. |
645 | 715 |
646 All the methods based on @command{ssh} have an additional kludgey | 716 All the methods based on @command{ssh} have an additional kludgy |
647 feature: you can specify a host name which looks like @file{host#42} | 717 feature: you can specify a host name which looks like @file{host#42} |
648 (the real host name, then a hash sign, then a port number). This | 718 (the real host name, then a hash sign, then a port number). This |
649 means to connect to the given host but to also pass @code{-p 42} as | 719 means to connect to the given host but to also pass @code{-p 42} as |
650 arguments to the @command{ssh} command. | 720 arguments to the @command{ssh} command. |
651 | 721 |
774 @cindex Cygwin (with smx method) | 844 @cindex Cygwin (with smx method) |
775 | 845 |
776 As you expect, this is similar to @option{sm}, only a little | 846 As you expect, this is similar to @option{sm}, only a little |
777 different. Whereas @option{sm} opens a normal interactive shell on | 847 different. Whereas @option{sm} opens a normal interactive shell on |
778 the remote host, this option uses @samp{ssh -t -t @var{host} -l | 848 the remote host, this option uses @samp{ssh -t -t @var{host} -l |
779 @var{user} /bin/sh} tp open a connection. This is useful for users | 849 @var{user} /bin/sh} to open a connection. This is useful for users |
780 where the normal login shell is set up to ask them a number of | 850 where the normal login shell is set up to ask them a number of |
781 questions when logging in. This procedure avoids these questions, and | 851 questions when logging in. This procedure avoids these questions, and |
782 just gives @tramp{} a more-or-less `standard' login shell to work | 852 just gives @tramp{} a more-or-less `standard' login shell to work |
783 with. | 853 with. |
784 | 854 |
899 the inline methods when you often open and close small files however. | 969 the inline methods when you often open and close small files however. |
900 The cost of the cryptographic handshake at the start of an @command{scp} | 970 The cost of the cryptographic handshake at the start of an @command{scp} |
901 session can begin to absorb the advantage that the lack of encoding and | 971 session can begin to absorb the advantage that the lack of encoding and |
902 decoding presents. | 972 decoding presents. |
903 | 973 |
904 All the @command{ssh} based methods support the kludgey @samp{-p} | 974 All the @command{ssh} based methods support the kludgy @samp{-p} |
905 feature where you can specify a port number to connect to in the host | 975 feature where you can specify a port number to connect to in the host |
906 name. For example, the host name @file{host#42} tells Tramp to | 976 name. For example, the host name @file{host#42} tells Tramp to |
907 specify @samp{-p 42} in the argument list for @command{ssh}. | 977 specify @samp{-p 42} in the argument list for @command{ssh}. |
908 | 978 |
909 | 979 |
1095 specifies a different port number for a certain host name. But it can | 1165 specifies a different port number for a certain host name. But it can |
1096 also be accomplished within Tramp, by adding a multi-hop method. For | 1166 also be accomplished within Tramp, by adding a multi-hop method. For |
1097 example: | 1167 example: |
1098 | 1168 |
1099 @lisp | 1169 @lisp |
1100 (add-to-list 'tramp-multi-connection-function-alist | 1170 (add-to-list |
1101 '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n")) | 1171 'tramp-multi-connection-function-alist |
1172 '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n")) | |
1102 @end lisp | 1173 @end lisp |
1103 | 1174 |
1104 Now you can use a @code{sshf} hop which connects to port 4400 instead of | 1175 Now you can use an @code{sshf} hop which connects to port 4400 instead of |
1105 the standard port. | 1176 the standard port. |
1106 | 1177 |
1107 | 1178 |
1108 @node Default Method | 1179 @node Default Method |
1109 @section Selecting a default method | 1180 @section Selecting a default method |
1173 | 1244 |
1174 For the time being, I'll refer you to the Lisp documentation of that | 1245 For the time being, I'll refer you to the Lisp documentation of that |
1175 variable, accessible with @kbd{C-h v tramp-methods @key{RET}}. | 1246 variable, accessible with @kbd{C-h v tramp-methods @key{RET}}. |
1176 | 1247 |
1177 | 1248 |
1249 @node Customizing Completion | |
1250 @section Selecting config files for user/host name completion | |
1251 @cindex customizing completion | |
1252 @cindex selecting config files | |
1253 @vindex tramp-completion-function-alist | |
1254 | |
1255 The variable @code{tramp-completion-function-alist} is intended to | |
1256 customize, which files are taken into account for user and host name | |
1257 completion (@pxref{Filename completion}). For every method, it keeps | |
1258 a set of configuration files, accompanied by a Lisp function able to | |
1259 parse that file. Entries in @code{tramp-completion-function-alist} | |
1260 have the form (@var{method} @var{pair1} @var{pair2} ...). | |
1261 | |
1262 Each @var{pair} is composed of (@var{function} @var{file}). | |
1263 @var{function} is responsible to extract user names and host names | |
1264 from @var{file} for completion. There are two functions which access | |
1265 this variable: | |
1266 | |
1267 @defun tramp-get-completion-function method | |
1268 This function returns the list of completion functions for @var{method}. | |
1269 | |
1270 Example: | |
1271 @example | |
1272 (tramp-get-completion-function "rsh") | |
1273 | |
1274 @result{} ((tramp-parse-rhosts "/etc/hosts.equiv") | |
1275 (tramp-parse-rhosts "~/.rhosts")) | |
1276 @end example | |
1277 @end defun | |
1278 | |
1279 @defun tramp-set-completion-function method function-list | |
1280 This function sets @var{function-list} as list of completion functions | |
1281 for @var{method}. | |
1282 | |
1283 Example: | |
1284 @example | |
1285 (tramp-set-completion-function "ssh" | |
1286 '((tramp-parse-shosts "/etc/ssh_known_hosts") | |
1287 (tramp-parse-shosts "~/.ssh/known_hosts"))) | |
1288 | |
1289 @result{} ((tramp-parse-shosts "/etc/ssh_known_hosts") | |
1290 (tramp-parse-shosts "~/.ssh/known_hosts")) | |
1291 @end example | |
1292 @end defun | |
1293 | |
1294 The following predefined functions parsing configuration files exists: | |
1295 | |
1296 @table @asis | |
1297 @item @code{tramp-parse-rhosts} | |
1298 @findex tramp-parse-rhosts | |
1299 | |
1300 This function parses files which are syntactical equivalent to | |
1301 @file{~/.rhosts}. It returns both host names and user names, if | |
1302 specified. | |
1303 | |
1304 @item @code{tramp-parse-shosts} | |
1305 @findex tramp-parse-shosts | |
1306 | |
1307 This function parses files which are syntactical equivalent to | |
1308 @file{/etc/ssh_known_hosts}. Since there are no user names specified | |
1309 in such files, it can return host names only. | |
1310 | |
1311 @item @code{tramp-parse-hosts} | |
1312 @findex tramp-parse-hosts | |
1313 | |
1314 A function dedicated to @file{/etc/hosts} style files. It returns | |
1315 host names only. | |
1316 | |
1317 @item @code{tramp-parse-passwd} | |
1318 @findex tramp-parse-passwd | |
1319 | |
1320 Finally a method which parses @file{/etc/passwd} like files. | |
1321 Obviously, it can return user names only. | |
1322 @end table | |
1323 | |
1324 @ifset emacs | |
1325 A function which parses @file{~/.netrc"} file syntax doesn't exist in | |
1326 @tramp{}, because this task is delegated to | |
1327 @value{ftp-package-name}. Its customization should be used instead. | |
1328 @end ifset | |
1329 | |
1330 If you want to keep your own data in a file, with your own structure, | |
1331 you might provide such a function as well. This function must meet | |
1332 the following conventions: | |
1333 | |
1334 @defun my-tramp-parse file | |
1335 @var{file} must be either a file name on your host, or @code{nil}. The | |
1336 function must return a list of (@var{user} @var{host}), which are | |
1337 taken as candidates for user and host name completion. | |
1338 | |
1339 Example: | |
1340 @example | |
1341 (my-tramp-parse "~/.my-tramp-hosts") | |
1342 | |
1343 @result{} ((nil "toto") ("daniel" "melancholia")) | |
1344 @end example | |
1345 @end defun | |
1346 | |
1347 | |
1178 @node Remote Programs | 1348 @node Remote Programs |
1179 @section How @tramp{} finds and uses programs on the remote machine. | 1349 @section How @tramp{} finds and uses programs on the remote machine. |
1180 | 1350 |
1181 @tramp{} depends on a number of programs on the remote host in order to | 1351 @tramp{} depends on a number of programs on the remote host in order to |
1182 function, including @command{ls}, @command{test}, @command{find} and | 1352 function, including @command{ls}, @command{test}, @command{find} and |
1207 found. | 1377 found. |
1208 | 1378 |
1209 To add a directory to the remote search path, you could use code such | 1379 To add a directory to the remote search path, you could use code such |
1210 as: | 1380 as: |
1211 | 1381 |
1212 @example | 1382 @lisp |
1213 (require 'tramp) @i{; @tramp{} must be loaded before this} | 1383 @i{;; We load @tramp{} to define the variable.} |
1214 @i{; happens.} | 1384 (require 'tramp) |
1215 | 1385 @i{;; We have @command{perl} in "/usr/local/perl/bin"} |
1216 @i{; We have @command{perl} in "/usr/local/perl/bin"} | |
1217 (add-to-list 'tramp-remote-path "/usr/local/perl/bin") | 1386 (add-to-list 'tramp-remote-path "/usr/local/perl/bin") |
1218 @end example | 1387 @end lisp |
1388 | |
1219 | 1389 |
1220 @node Remote shell setup | 1390 @node Remote shell setup |
1221 @comment node-name, next, previous, up | 1391 @comment node-name, next, previous, up |
1222 @section Remote shell setup hints | 1392 @section Remote shell setup hints |
1223 @cindex remote shell setup | 1393 @cindex remote shell setup |
1226 @cindex shell init files | 1396 @cindex shell init files |
1227 | 1397 |
1228 As explained in the @ref{Overview} section, @tramp{} connects to the | 1398 As explained in the @ref{Overview} section, @tramp{} connects to the |
1229 remote host and talks to the shell it finds there. Of course, when you | 1399 remote host and talks to the shell it finds there. Of course, when you |
1230 log in, the shell executes its init files. Suppose your init file | 1400 log in, the shell executes its init files. Suppose your init file |
1231 requires you to enter the birthdate of your mother; clearly @tramp{} | 1401 requires you to enter the birth date of your mother; clearly @tramp{} |
1232 does not know this and hence fails to log you in to that host. | 1402 does not know this and hence fails to log you in to that host. |
1233 | 1403 |
1234 There are different possible strategies for pursuing this problem. One | 1404 There are different possible strategies for pursuing this problem. One |
1235 strategy is to enable @tramp{} to deal with all possible situations. | 1405 strategy is to enable @tramp{} to deal with all possible situations. |
1236 This is a losing battle, since it is not possible to deal with | 1406 This is a losing battle, since it is not possible to deal with |
1268 following as the value for the variable: @code{"^[^>$][>$] *"}. Now | 1438 following as the value for the variable: @code{"^[^>$][>$] *"}. Now |
1269 suppose your shell prompt is @code{a <b> c $ }. In this case, Tramp | 1439 suppose your shell prompt is @code{a <b> c $ }. In this case, Tramp |
1270 recognizes the @code{>} character as the end of the prompt, but it is | 1440 recognizes the @code{>} character as the end of the prompt, but it is |
1271 not at the end of the buffer. | 1441 not at the end of the buffer. |
1272 | 1442 |
1443 @item @var{tramp-shell-prompt-pattern} | |
1444 @vindex tramp-shell-prompt-pattern | |
1445 | |
1446 This regular expression is used by @tramp{} in the same way as | |
1447 @code{shell-prompt-pattern}, to match prompts from the remote shell. | |
1448 This second variable exists because the prompt from the remote shell | |
1449 might be different from the prompt from a local shell --- after all, | |
1450 the whole point of @tramp{} is to log in to remote hosts as a | |
1451 different user. The default value of | |
1452 @code{tramp-shell-prompt-pattern} is the same as the default value of | |
1453 @code{shell-prompt-pattern}, which is reported to work well in many | |
1454 circumstances. | |
1455 | |
1273 @item @code{tset} and other questions | 1456 @item @code{tset} and other questions |
1274 @cindex Unix command tset | 1457 @cindex Unix command tset |
1275 @cindex tset Unix command | 1458 @cindex tset Unix command |
1276 | 1459 |
1277 Some people invoke the @code{tset} program from their shell startup | 1460 Some people invoke the @code{tset} program from their shell startup |
1278 scripts which asks the user about the terminal type of the shell. Maybe | 1461 scripts which asks the user about the terminal type of the shell. |
1279 some shells ask other questions when they are started. @tramp{} does | 1462 Maybe some shells ask other questions when they are started. @tramp{} |
1280 not know how to answer these questions. (A facility for enabling | 1463 does not know how to answer these questions. There are two approaches |
1281 @tramp{} to answer these questions is planned for some future version, | 1464 for dealing with this problem. One approach is to take care that the |
1282 but don't hold your breath.) | 1465 shell does not ask any questions when invoked from @tramp{}. You can |
1283 | 1466 do this by checking the @code{TERM} environment variable, it will be |
1284 Therefore, you should take care that the shell does not ask any | 1467 set to @code{dumb} when connecting. |
1285 questions when invoked from @tramp{}. You can do this by checking the | |
1286 @code{TERM} environment variable, it will be set to @code{dumb} when | |
1287 connecting. | |
1288 | 1468 |
1289 @vindex tramp-terminal-type | 1469 @vindex tramp-terminal-type |
1290 The variable @code{tramp-terminal-type} can be used to change this value | 1470 The variable @code{tramp-terminal-type} can be used to change this value |
1291 @code{dumb}. | 1471 to @code{dumb}. |
1472 | |
1473 The other approach is to teach @tramp{} about these questions. See | |
1474 the variables @code{tramp-actions-before-shell} and | |
1475 @code{tramp-multi-actions} (for multi-hop connections). | |
1292 | 1476 |
1293 @end table | 1477 @end table |
1294 | 1478 |
1295 | 1479 |
1296 @node Windows setup hints | 1480 @node Windows setup hints |
1315 will be able to access files on any remote machine that you can log in | 1499 will be able to access files on any remote machine that you can log in |
1316 to as though they were local. | 1500 to as though they were local. |
1317 | 1501 |
1318 Files are specified to @tramp{} using a formalized syntax specifying the | 1502 Files are specified to @tramp{} using a formalized syntax specifying the |
1319 details of the system to connect to. This is similar to the syntax used | 1503 details of the system to connect to. This is similar to the syntax used |
1320 by the @command{EFS} and @command{Ange-FTP} packages. | 1504 by the @value{ftp-package-name} package. |
1321 | 1505 |
1506 @cindex type-ahead | |
1507 Something that might happen which surprises you is that Emacs | |
1508 remembers all your keystrokes, so if you see a password prompt from | |
1509 Emacs, say, and hit @kbd{@key{RET}} twice instead of once, then the | |
1510 second keystroke will be processed by Emacs after @tramp{} has done | |
1511 its thing. Why, this type-ahead is normal behavior, you say. Right | |
1512 you are, but be aware that opening a remote file might take quite a | |
1513 while, maybe half a minute when a connection needs to be opened. | |
1514 Maybe after half a minute you have already forgotten that you hit that | |
1515 key! | |
1322 | 1516 |
1323 @menu | 1517 @menu |
1324 * Filename Syntax:: @tramp{} filename conventions. | 1518 * Filename Syntax:: @tramp{} filename conventions. |
1325 * Multi-hop filename syntax:: Multi-hop filename conventions | 1519 * Multi-hop filename syntax:: Multi-hop filename conventions. |
1326 * Dired:: Dired and filename completion. | 1520 * Filename completion:: Filename completion. |
1521 * Dired:: Dired. | |
1327 @end menu | 1522 @end menu |
1328 | 1523 |
1329 | 1524 |
1330 @node Filename Syntax | 1525 @node Filename Syntax |
1331 @section @tramp{} filename conventions | 1526 @section @tramp{} filename conventions |
1332 @cindex filename syntax | 1527 @cindex filename syntax |
1333 @cindex filename examples | 1528 @cindex filename examples |
1334 | 1529 |
1335 On Emacs, the Ange-FTP and Tramp filenames use a unified syntax. On | 1530 To access the file @var{path} on the remote machine @var{machine} you |
1336 XEmacs, EFS and Tramp use different formats for the filenames. | 1531 would specify the filename |
1337 Therefore, the following will describe the Emacs and XEmacs cases | 1532 @file{@value{tramp-prefix}@var{machine}@value{tramp-postfix}@var{path}}. |
1338 separately. | 1533 This will connect to @var{machine} and transfer the file using the |
1339 | 1534 default method. @xref{Default Method}. |
1340 On Emacs, to access the file @var{path} on the remote machine | 1535 |
1341 @var{machine} you would specify the filename | 1536 Some examples of @tramp{} filenames are shown below. |
1342 @file{/@var{machine}:@var{path}}. This will connect to @var{machine} | |
1343 and transfer the file using the default method. @xref{Default | |
1344 Method}. On XEmacs, use @file{/[@var{machine}]@var{path}}. (The | |
1345 square brackets are part of the file name.) | |
1346 | |
1347 Some examples of @tramp{} filenames are shown below. In each case, | |
1348 the Emacs-style filename is shown first, then the XEmacs-style | |
1349 filename. | |
1350 | 1537 |
1351 @table @file | 1538 @table @file |
1352 @item /melancholia:.emacs | 1539 @item @value{tramp-prefix}melancholia@value{tramp-postfix}.emacs |
1353 @itemx /[melancholia].emacs | |
1354 Edit the file @file{.emacs} in your home directory on the machine | 1540 Edit the file @file{.emacs} in your home directory on the machine |
1355 @code{melancholia}. | 1541 @code{melancholia}. |
1356 | 1542 |
1357 @item /melancholia.danann.net:.emacs | 1543 @item @value{tramp-prefix}melancholia.danann.net@value{tramp-postfix}.emacs |
1358 @itemx /[melancholia.danann.net].emacs | |
1359 This edits the same file, using the fully qualified domain name of | 1544 This edits the same file, using the fully qualified domain name of |
1360 the machine. | 1545 the machine. |
1361 | 1546 |
1362 @item /melancholia:~/.emacs | 1547 @item @value{tramp-prefix}melancholia@value{tramp-postfix}~/.emacs |
1363 @itemx /[melancholia]~/.emacs | |
1364 This also edits the same file --- the @file{~} is expanded to your | 1548 This also edits the same file --- the @file{~} is expanded to your |
1365 home directory on the remote machine, just like it is locally. | 1549 home directory on the remote machine, just like it is locally. |
1366 | 1550 |
1367 @item /melancholia:~daniel/.emacs | 1551 @item @value{tramp-prefix}melancholia@value{tramp-postfix}~daniel/.emacs |
1368 @itemx /[melancholia]~daniel/.emacs | |
1369 This edits the file @file{.emacs} in the home directory of the user | 1552 This edits the file @file{.emacs} in the home directory of the user |
1370 @code{daniel} on the machine @code{melancholia}. The @file{~<user>} | 1553 @code{daniel} on the machine @code{melancholia}. The @file{~<user>} |
1371 construct is expanded to the home directory of that user on the remote | 1554 construct is expanded to the home directory of that user on the remote |
1372 machine. | 1555 machine. |
1373 | 1556 |
1374 @item /melancholia:/etc/squid.conf | 1557 @item @value{tramp-prefix}melancholia@value{tramp-postfix}/etc/squid.conf |
1375 @itemx /[melancholia]/etc/squid.conf | |
1376 This edits the file @file{/etc/squid.conf} on the machine | 1558 This edits the file @file{/etc/squid.conf} on the machine |
1377 @code{melancholia}. | 1559 @code{melancholia}. |
1378 | 1560 |
1379 @end table | 1561 @end table |
1380 | 1562 |
1381 Unless you specify a different name to use, @tramp{} will use the current | 1563 Unless you specify a different name to use, @tramp{} will use the |
1382 local user name as the remote user name to log in with. If you need to | 1564 current local user name as the remote user name to log in with. If you |
1383 log in as a different user, you can specify the user name as part of the | 1565 need to log in as a different user, you can specify the user name as |
1384 filename. | 1566 part of the filename. |
1385 | 1567 |
1386 On Emacs, to log in to the remote machine as a specific user, you use | 1568 To log in to the remote machine as a specific user, you use the syntax |
1387 the syntax @file{/@var{user}@@@var{machine}:/path/to.file}. On | 1569 @file{@value{tramp-prefix}@var{user}@@@var{machine}@value{tramp-postfix}/@var{path/to.file}}. |
1388 XEmacs, use @file{/[@var{user}@@@var{machine}]/path/to.file}. That | 1570 That means that connecting to @code{melancholia} as @code{daniel} and |
1389 means that connecting to @code{melancholia} as @code{daniel} and | |
1390 editing @file{.emacs} in your home directory you would specify | 1571 editing @file{.emacs} in your home directory you would specify |
1391 @file{/daniel@@melancholia:.emacs} on Emacs and | 1572 @file{@value{tramp-prefix}daniel@@melancholia@value{tramp-postfix}.emacs}. |
1392 @file{/[daniel@@melancholia].emacs} on XEmacs. | |
1393 | |
1394 | 1573 |
1395 It is also possible to specify other file transfer methods | 1574 It is also possible to specify other file transfer methods |
1396 (@pxref{Default Method}) as part of the filename. On Emacs, this is | 1575 (@pxref{Default Method}) as part of the filename. |
1397 done by puttig the method before the user and host name, as in | 1576 @ifset emacs |
1398 @file{/@var{method}:} (note the trailing colon). On XEmacs, it is | 1577 This is done by putting the method before the user and host name, as |
1399 done by replacing the initial @file{/[} with @file{/[<method>/}. | 1578 in |
1400 (Note the trailing slash!) The user, machine and file specification | 1579 @file{@value{tramp-prefix}@var{method}@value{tramp-postfix-single-hop}} |
1401 remain the same. | 1580 (note the trailing colon). |
1581 @end ifset | |
1582 @ifset xemacs | |
1583 This is done by replacing the initial | |
1584 @file{@value{tramp-prefix}} with | |
1585 @file{@value{tramp-prefix}<method>@value{tramp-postfix-single-hop}}. | |
1586 (Note the trailing slash!). | |
1587 @end ifset | |
1588 The user, machine and file specification remain the same. | |
1402 | 1589 |
1403 So, to connect to the machine @code{melancholia} as @code{daniel}, | 1590 So, to connect to the machine @code{melancholia} as @code{daniel}, |
1404 using the @option{su} method to transfer files, and edit @file{.emacs} | 1591 using the @option{su} method to transfer files, and edit @file{.emacs} |
1405 in my home directory I would specify the filename | 1592 in my home directory I would specify the filename |
1406 @file{/su:daniel@@melancholia:.emacs} on Emacs and | 1593 @file{@value{tramp-prefix}su@value{tramp-postfix-single-hop}daniel@@melancholia@value{tramp-postfix}.emacs}. |
1407 @file{/[su/daniel@@melancholia].emacs} on XEmacs. | |
1408 | 1594 |
1409 | 1595 |
1410 @node Multi-hop filename syntax | 1596 @node Multi-hop filename syntax |
1411 @section Multi-hop filename conventions | 1597 @section Multi-hop filename conventions |
1412 @cindex filename syntax for multi-hop files | 1598 @cindex filename syntax for multi-hop files |
1413 @cindex multi-hop filename syntax | 1599 @cindex multi-hop filename syntax |
1414 | 1600 |
1415 The syntax of multi-hop file names is necessarily slightly different | 1601 The syntax of multi-hop file names is necessarily slightly different |
1416 than the syntax of other @tramp{} file names. Here's an example multi-hop | 1602 than the syntax of other @tramp{} file names. Here's an example |
1417 file name, first in Emacs syntax and then in XEmacs syntax: | 1603 multi-hop file name, first in Emacs syntax and then in XEmacs syntax: |
1418 | 1604 |
1419 @file{/multi:rsh:out@@gate:telnet:kai@@real.host:/path/to.file} | 1605 @example |
1420 @file{/[multi/rsh:out@@gate/telnet:kai@@real.host]/path/to.file} | 1606 @value{tramp-prefix}multi@value{tramp-postfix-single-hop}rsh@value{tramp-postfix-multi-hop}out@@gate@value{tramp-postfix-single-hop}telnet@value{tramp-postfix-multi-hop}kai@@real.host@value{tramp-postfix}/path/to.file |
1607 @end example | |
1421 | 1608 |
1422 This is quite a mouthful. So let's go through it step by step. The | 1609 This is quite a mouthful. So let's go through it step by step. The |
1423 file name consists of three parts. On Emacs, the parts are separated | 1610 file name consists of three parts. |
1424 by colons, on XEmacs they are separated by slashes and square | 1611 @ifset emacs |
1425 brackets. The first part is @file{/multi:} (or @file{/[multi}), the | 1612 The parts are separated by colons |
1426 method specification. The second part is | 1613 @end ifset |
1427 @file{rsh:out@@gate:telnet:kai@@real.host} (or | 1614 @ifset xemacs |
1428 @file{rsh:out@@gate/telnet:kai@@real.host}) and specifies the hops. | 1615 The parts are separated by slashes and square brackets. |
1429 (Yes, on Emacs the second part may contain even more colons, so that's why | 1616 @end ifset |
1430 this file name has more than two colons in it.) The final part is | 1617 The first part is @file{@value{tramp-prefix}multi}, the method |
1431 @file{/path/to.file} and specifies the file name on the remote host. | 1618 specification. The second part is |
1619 @file{rsh@value{tramp-postfix-multi-hop}out@@gate@value{tramp-postfix-single-hop}telnet@value{tramp-postfix-multi-hop}kai@@real.host} | |
1620 and specifies the hops. The final part is @file{/path/to.file} and | |
1621 specifies the file name on the remote host. | |
1432 | 1622 |
1433 The first part and the final part should be clear. @ref{Multi-hop | 1623 The first part and the final part should be clear. @ref{Multi-hop |
1434 Methods}, for a list of alternatives for the method specification. | 1624 Methods}, for a list of alternatives for the method specification. |
1435 | 1625 |
1436 The second part can be subdivided again into components, so-called hops. | 1626 The second part can be subdivided again into components, so-called |
1437 In the above file name, there are two hops, @file{rsh:out@@gate} and | 1627 hops. In the above file name, there are two hops, |
1438 @file{telnet:kai@@real.host}. | 1628 @file{rsh@value{tramp-postfix-multi-hop}out@@gate} and |
1629 @file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}. | |
1439 | 1630 |
1440 Each hop can @emph{again} be subdivided into (three) components, the | 1631 Each hop can @emph{again} be subdivided into (three) components, the |
1441 @dfn{hop method}, the @dfn{user name} and the @dfn{host name}. The | 1632 @dfn{hop method}, the @dfn{user name} and the @dfn{host name}. The |
1442 meaning of the second and third component should be clear, and the hop | 1633 meaning of the second and third component should be clear, and the hop |
1443 method says what program to use to perform that hop. | 1634 method says what program to use to perform that hop. |
1444 | 1635 |
1445 The first hop, @file{rsh:out@@gate}, says to use @command{rsh} to log in | 1636 The first hop, @file{rsh@value{tramp-postfix-multi-hop}out@@gate}, |
1446 as user @code{out} to the host @code{gate}. Starting at that host, the | 1637 says to use @command{rsh} to log in as user @code{out} to the host |
1447 second hop, @file{telnet:kai@@real.host}, says to use @command{telnet} | 1638 @code{gate}. Starting at that host, the second hop, |
1448 to log in as user @code{kai} to host @code{real.host}. | 1639 @file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}, says to |
1449 | 1640 use @command{telnet} to log in as user @code{kai} to host |
1450 @xref{Multi-hop Methods}, for a list of possible hop method values. The | 1641 @code{real.host}. |
1451 variable @var{tramp-multi-connection-function-alist} contains the list of | 1642 |
1452 possible hop methods and information on how to execute them, should you | 1643 @xref{Multi-hop Methods}, for a list of possible hop method values. |
1453 want to add your own. | 1644 The variable @code{tramp-multi-connection-function-alist} contains the |
1645 list of possible hop methods and information on how to execute them, | |
1646 should you want to add your own. | |
1647 | |
1648 | |
1649 @node Filename completion | |
1650 @section Filename completion | |
1651 @cindex filename completion | |
1652 | |
1653 Filename completion works with @tramp{} for both completing methods, | |
1654 user names and machine names (except multi hop methods) as well as for | |
1655 files on remote machines. | |
1656 | |
1657 If you, for example, type @kbd{C-x C-f @value{tramp-prefix}t | |
1658 @key{TAB}}, @tramp{} might give you as result the choice for | |
1659 | |
1660 @example | |
1661 @ifset emacs | |
1662 @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop} tmp/ | |
1663 @value{tramp-prefix-single-hop}toto@value{tramp-postfix} | |
1664 @end ifset | |
1665 @ifset xemacs | |
1666 @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop} @value{tramp-prefix-single-hop}toto@value{tramp-postfix} | |
1667 @end ifset | |
1668 @end example | |
1669 | |
1670 @samp{@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}} | |
1671 is a possible completion for the respective method, | |
1672 @ifset emacs | |
1673 @samp{tmp/} stands for the directory @file{/tmp} on your local | |
1674 machine, | |
1675 @end ifset | |
1676 and @samp{@value{tramp-prefix-single-hop}toto@value{tramp-postfix}} | |
1677 might be a host @tramp has detected in your @file{~/.ssh/known_hosts} | |
1678 file (given you're using default method @option{ssh}). | |
1679 | |
1680 If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to | |
1681 @samp{@value{tramp-prefix}telnet@value{tramp-postfix-single-hop}}. | |
1682 Next @kbd{@key{TAB}} brings you all machine names @tramp{} detects in | |
1683 your @file{/etc/hosts} file, let's say | |
1684 | |
1685 @example | |
1686 @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}127.0.0.1@value{tramp-postfix} @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}192.168.0.1@value{tramp-postfix} | |
1687 @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}localhost@value{tramp-postfix} @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}melancholia.danann.net@value{tramp-postfix} | |
1688 @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}melancholia@value{tramp-postfix} | |
1689 @end example | |
1690 | |
1691 Now you can choose the desired machine, and you can continue to | |
1692 complete file names on that machine. | |
1693 | |
1694 As filename completion needs to fetch the listing of files from the | |
1695 remote machine, this feature is sometimes fairly slow. As @tramp{} | |
1696 does not yet cache the results of directory listing, there is no gain | |
1697 in performance the second time you complete filenames. | |
1698 | |
1699 If the configuration files (@pxref{Customizing Completion}), which | |
1700 @tramp{} uses for analysis of completion, offer user names, those user | |
1701 names will be taken into account as well. | |
1454 | 1702 |
1455 | 1703 |
1456 @node Dired | 1704 @node Dired |
1457 @section Dired and filename completion | 1705 @section Dired |
1458 @cindex dired | 1706 @cindex dired |
1459 @cindex filename completion | |
1460 | 1707 |
1461 @tramp{} works transparently with dired, enabling you to use this powerful | 1708 @tramp{} works transparently with dired, enabling you to use this powerful |
1462 file management tool to manage files on any machine you have access to | 1709 file management tool to manage files on any machine you have access to |
1463 over the Internet. | 1710 over the Internet. |
1464 | |
1465 Filename completion also works with @tramp{} for files on remote machines | |
1466 although there is no completion for user names or machine names at this | |
1467 stage. | |
1468 | |
1469 As filename completion needs to fetch the listing of files from the | |
1470 remote machine, this feature is sometimes fairly slow. As @tramp{} does not | |
1471 yet cache the results of directory listing, there is no gain in | |
1472 performance the second time you complete filenames. | |
1473 | 1711 |
1474 If you need to browse a directory tree, Dired is a better choice, at | 1712 If you need to browse a directory tree, Dired is a better choice, at |
1475 present, than filename completion. Dired has its own cache mechanism | 1713 present, than filename completion. Dired has its own cache mechanism |
1476 and will only fetch the directory listing once. | 1714 and will only fetch the directory listing once. |
1477 | 1715 |
1514 | 1752 |
1515 @itemize @bullet | 1753 @itemize @bullet |
1516 @item | 1754 @item |
1517 Where can I get the latest @tramp{}? | 1755 Where can I get the latest @tramp{}? |
1518 | 1756 |
1519 @tramp{} is available at | 1757 @tramp{} is available under the URL below. |
1520 @uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/tramp.tar.gz}. | 1758 |
1521 There is also a Savannah project page, at | 1759 @noindent |
1522 @uref{https://savannah.gnu.org/projects/tramp/}. | 1760 @uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/tramp.tar.gz} |
1523 | 1761 |
1762 @noindent | |
1763 There is also a Savannah project page. | |
1764 | |
1765 @noindent | |
1766 @uref{https://savannah.gnu.org/projects/tramp/} | |
1524 | 1767 |
1525 @item | 1768 @item |
1526 Which systems does it work on? | 1769 Which systems does it work on? |
1527 | 1770 |
1528 The package has been used successfully on Emacs 20 and Emacs 21, as well | 1771 The package has been used successfully on Emacs 20 and Emacs 21, as well |
1553 Not all the older versions of @tramp{} supported XEmacs correctly. The | 1796 Not all the older versions of @tramp{} supported XEmacs correctly. The |
1554 first thing to do is to make sure that you have the latest version of | 1797 first thing to do is to make sure that you have the latest version of |
1555 @tramp{} installed. | 1798 @tramp{} installed. |
1556 | 1799 |
1557 If you do, please try and find out exactly the conditions required for | 1800 If you do, please try and find out exactly the conditions required for |
1558 the @code{EFS} handlers to fire. If you can, putting a breakpoint on | 1801 the EFS handlers to fire. If you can, putting a breakpoint on |
1559 @code{efs-ftp-path} and sending in the stack trace along with your bug | 1802 @code{efs-ftp-path} and sending in the stack trace along with your bug |
1560 report would make it easier for the developers to work out what is going | 1803 report would make it easier for the developers to work out what is |
1561 wrong. | 1804 going wrong. |
1562 | 1805 |
1563 | 1806 |
1564 @item | 1807 @item |
1565 File name completion does not work with @tramp{} | 1808 File name completion does not work with @tramp{} |
1566 | 1809 |
1655 | 1898 |
1656 @c For the developer | 1899 @c For the developer |
1657 @node Version Control | 1900 @node Version Control |
1658 @chapter The inner workings of remote version control | 1901 @chapter The inner workings of remote version control |
1659 | 1902 |
1660 Unlike EFS and Ange-FTP, @tramp{} has full shell access to the remote | 1903 Unlike @value{ftp-package-name}, @tramp{} has full shell access to the |
1661 machine. This makes it possible to provide version control for files | 1904 remote machine. This makes it possible to provide version control for |
1662 accessed under @tramp{}. | 1905 files accessed under @tramp{}. |
1663 | 1906 |
1664 The actual version control binaries must be installed on the remote | 1907 The actual version control binaries must be installed on the remote |
1665 machine, accessible in the directories specified in | 1908 machine, accessible in the directories specified in |
1666 @var{tramp-remote-path}. | 1909 @var{tramp-remote-path}. |
1667 | 1910 |
1672 @menu | 1915 @menu |
1673 * Version Controlled Files:: Determining if a file is under version control. | 1916 * Version Controlled Files:: Determining if a file is under version control. |
1674 * Remote Commands:: Executing the version control commands on the remote machine. | 1917 * Remote Commands:: Executing the version control commands on the remote machine. |
1675 * Changed workfiles:: Detecting if the working file has changed. | 1918 * Changed workfiles:: Detecting if the working file has changed. |
1676 * Checking out files:: Bringing the workfile out of the repository. | 1919 * Checking out files:: Bringing the workfile out of the repository. |
1677 * Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere | 1920 * Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere. |
1678 @end menu | 1921 @end menu |
1679 | 1922 |
1680 | 1923 |
1681 @node Version Controlled Files | 1924 @node Version Controlled Files |
1682 @section Determining if a file is under version control | 1925 @section Determining if a file is under version control |
1878 @c host and then send commands to it. | 2121 @c host and then send commands to it. |
1879 @c * Mention that bookmarks are a cool feature to go along with Tramp. | 2122 @c * Mention that bookmarks are a cool feature to go along with Tramp. |
1880 @c * Make terminology "inline" vs "out-of-band" consistent. | 2123 @c * Make terminology "inline" vs "out-of-band" consistent. |
1881 @c It seems that "external" is also used instead of "out-of-band". | 2124 @c It seems that "external" is also used instead of "out-of-band". |
1882 | 2125 |
2126 @c * M. Albinus | |
2127 @c ** Use `filename' resp. `file name' consistently. | |
2128 @c ** Use `host' resp. `machine' consistently. | |
2129 @c ** Consistent small or capitalized words especially in menues. |