Fossil SCM
Extended the sync doc with info about PATH implications of finding the fossil binary on the remote system over ssh: URLs, including formal documentation (for the first time?) of the ?fossil= query parameter.
Commit
a975ccb75b713a3db42a0bf50f7adc4b0b92e23e9df1216c908ca453e6f839b8
Parent
5ca63acf9f7a99c…
1 file changed
+21
-1
+21
-1
| --- www/sync.wiki | ||
| +++ www/sync.wiki | ||
| @@ -96,18 +96,38 @@ | ||
| 96 | 96 | Fossil includes built-in |
| 97 | 97 | [./ssl-server.md|support for HTTPS encryption] in both client and server. |
| 98 | 98 | |
| 99 | 99 | <h4 id="ssh">2.0.2 SSH Transport</h4> |
| 100 | 100 | |
| 101 | -When doing a sync using an "ssh:..." URL, the same HTTP transport protocol | |
| 101 | +When doing a sync using an "<code>ssh:…</code>" URL, the same HTTP transport protocol | |
| 102 | 102 | is used. Fossil simply uses [https://en.wikipedia.org/wiki/Secure_Shell|ssh] |
| 103 | 103 | to start an instance of the [/help?cmd=test-http|fossil test-http] command |
| 104 | 104 | running on the remote machine. It then sends HTTP requests and gets back HTTP |
| 105 | 105 | replies over the SSH connection, rather than sending and receiving over an |
| 106 | 106 | internet socket. To see the specific "ssh" command that the Fossil client |
| 107 | 107 | runs in order to set up a connection, add either of the the "--httptrace" or |
| 108 | 108 | "--sshtrace" options to the "fossil sync" command line. |
| 109 | + | |
| 110 | +This method is dependent on the remote <var>PATH</var> set by the SSH | |
| 111 | +daemon, which may not be the same as your interactive shell's | |
| 112 | +<var>PATH</var> on that same server. It is common to find | |
| 113 | +<var>$HOME/bin</var> in the latter but not the former, for instance, | |
| 114 | +leading to failures to sync over <code>ssh:…</code> URLs when you | |
| 115 | +install the <code>fossil</code> binary in a nonstandard location, as | |
| 116 | +with | |
| 117 | + | |
| 118 | +<verbatim>./configure --prefix=$HOME && make install</verbatim> | |
| 119 | + | |
| 120 | +The simpler of the two solutions to this problem is to install Fossil | |
| 121 | +where sshd expects to find it, but when that isn't an option, you can | |
| 122 | +instead give a URL like this: | |
| 123 | + | |
| 124 | +<verbatim>fossil clone ssh://myserver.example.com?fossil=/home/me/bin/fossil /path/to/repo.fossil</verbatim> | |
| 125 | + | |
| 126 | +That gives the local Fossil instance the absolute path to the binary on | |
| 127 | +the remote machine for use when calling that Fossil instance through the | |
| 128 | +SSH tunnel. | |
| 109 | 129 | |
| 110 | 130 | <h4 id="file">2.0.3 FILE Transport</h4> |
| 111 | 131 | |
| 112 | 132 | When doing a sync using a "file:..." URL, the same HTTP protocol is |
| 113 | 133 | still used. But instead of sending each HTTP request over a socket or |
| 114 | 134 |
| --- www/sync.wiki | |
| +++ www/sync.wiki | |
| @@ -96,18 +96,38 @@ | |
| 96 | Fossil includes built-in |
| 97 | [./ssl-server.md|support for HTTPS encryption] in both client and server. |
| 98 | |
| 99 | <h4 id="ssh">2.0.2 SSH Transport</h4> |
| 100 | |
| 101 | When doing a sync using an "ssh:..." URL, the same HTTP transport protocol |
| 102 | is used. Fossil simply uses [https://en.wikipedia.org/wiki/Secure_Shell|ssh] |
| 103 | to start an instance of the [/help?cmd=test-http|fossil test-http] command |
| 104 | running on the remote machine. It then sends HTTP requests and gets back HTTP |
| 105 | replies over the SSH connection, rather than sending and receiving over an |
| 106 | internet socket. To see the specific "ssh" command that the Fossil client |
| 107 | runs in order to set up a connection, add either of the the "--httptrace" or |
| 108 | "--sshtrace" options to the "fossil sync" command line. |
| 109 | |
| 110 | <h4 id="file">2.0.3 FILE Transport</h4> |
| 111 | |
| 112 | When doing a sync using a "file:..." URL, the same HTTP protocol is |
| 113 | still used. But instead of sending each HTTP request over a socket or |
| 114 |
| --- www/sync.wiki | |
| +++ www/sync.wiki | |
| @@ -96,18 +96,38 @@ | |
| 96 | Fossil includes built-in |
| 97 | [./ssl-server.md|support for HTTPS encryption] in both client and server. |
| 98 | |
| 99 | <h4 id="ssh">2.0.2 SSH Transport</h4> |
| 100 | |
| 101 | When doing a sync using an "<code>ssh:…</code>" URL, the same HTTP transport protocol |
| 102 | is used. Fossil simply uses [https://en.wikipedia.org/wiki/Secure_Shell|ssh] |
| 103 | to start an instance of the [/help?cmd=test-http|fossil test-http] command |
| 104 | running on the remote machine. It then sends HTTP requests and gets back HTTP |
| 105 | replies over the SSH connection, rather than sending and receiving over an |
| 106 | internet socket. To see the specific "ssh" command that the Fossil client |
| 107 | runs in order to set up a connection, add either of the the "--httptrace" or |
| 108 | "--sshtrace" options to the "fossil sync" command line. |
| 109 | |
| 110 | This method is dependent on the remote <var>PATH</var> set by the SSH |
| 111 | daemon, which may not be the same as your interactive shell's |
| 112 | <var>PATH</var> on that same server. It is common to find |
| 113 | <var>$HOME/bin</var> in the latter but not the former, for instance, |
| 114 | leading to failures to sync over <code>ssh:…</code> URLs when you |
| 115 | install the <code>fossil</code> binary in a nonstandard location, as |
| 116 | with |
| 117 | |
| 118 | <verbatim>./configure --prefix=$HOME && make install</verbatim> |
| 119 | |
| 120 | The simpler of the two solutions to this problem is to install Fossil |
| 121 | where sshd expects to find it, but when that isn't an option, you can |
| 122 | instead give a URL like this: |
| 123 | |
| 124 | <verbatim>fossil clone ssh://myserver.example.com?fossil=/home/me/bin/fossil /path/to/repo.fossil</verbatim> |
| 125 | |
| 126 | That gives the local Fossil instance the absolute path to the binary on |
| 127 | the remote machine for use when calling that Fossil instance through the |
| 128 | SSH tunnel. |
| 129 | |
| 130 | <h4 id="file">2.0.3 FILE Transport</h4> |
| 131 | |
| 132 | When doing a sync using a "file:..." URL, the same HTTP protocol is |
| 133 | still used. But instead of sending each HTTP request over a socket or |
| 134 |