Merge branch 'jk/head-symref'
[gitweb.git] / Documentation / urls.txt
index 745f9677d005b522f52496339abd5afc4267a815..5355ebc0f39114823f830e0651078a99f0ac2e70 100644 (file)
@@ -6,20 +6,22 @@ to name the remote repository:
 
 ===============================================================
 - rsync://host.xz/path/to/repo.git/
-- http://host.xz/path/to/repo.git/
-- https://host.xz/path/to/repo.git/
-- git://host.xz/path/to/repo.git/
-- git://host.xz/~user/path/to/repo.git/
+- http://host.xz{startsb}:port{endsb}/path/to/repo.git/
+- https://host.xz{startsb}:port{endsb}/path/to/repo.git/
+- git://host.xz{startsb}:port{endsb}/path/to/repo.git/
+- git://host.xz{startsb}:port{endsb}/~user/path/to/repo.git/
+- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/path/to/repo.git/
 - ssh://{startsb}user@{endsb}host.xz/path/to/repo.git/
 - ssh://{startsb}user@{endsb}host.xz/~user/path/to/repo.git/
 - ssh://{startsb}user@{endsb}host.xz/~/path/to/repo.git
 ===============================================================
 
-SSH is the default transport protocol.  You can optionally specify
-which user to log-in as, and an alternate, scp-like syntax is also
-supported.  Both syntaxes support username expansion,
-as does the native git protocol. The following three are
-identical to the last three above, respectively:
+SSH is the default transport protocol over the network.  You can
+optionally specify which user to log-in as, and an alternate,
+scp-like syntax is also supported.  Both syntaxes support
+username expansion, as does the native git protocol, but
+only the former supports port specification. The following
+three are identical to the last three above, respectively:
 
 ===============================================================
 - {startsb}user@{endsb}host.xz:/path/to/repo.git/
@@ -27,62 +29,41 @@ identical to the last three above, respectively:
 - {startsb}user@{endsb}host.xz:path/to/repo.git
 ===============================================================
 
-To sync with a local directory, use:
+To sync with a local directory, you can use:
 
 ===============================================================
 - /path/to/repo.git/
+- file:///path/to/repo.git/
 ===============================================================
 
-REMOTES
--------
+ifndef::git-clone[]
+They are mostly equivalent, except when cloning.  See
+linkgit:git-clone[1] for details.
+endif::git-clone[]
 
-In addition to the above, as a short-hand, the name of a
-file in `$GIT_DIR/remotes` directory can be given; the
-named file should be in the following format:
+ifdef::git-clone[]
+They are equivalent, except the former implies --local option.
+endif::git-clone[]
 
-------------
-       URL: one of the above URL format
-       Push: <refspec>
-       Pull: <refspec>
-
-------------
-
-Then such a short-hand is specified in place of
-<repository> without <refspec> parameters on the command
-line, <refspec> specified on `Push:` lines or `Pull:`
-lines are used for `git-push` and `git-fetch`/`git-pull`,
-respectively.  Multiple `Push:` and `Pull:` lines may
-be specified for additional branch mappings.
 
-Or, equivalently, in the `$GIT_DIR/config` (note the use
-of `fetch` instead of `Pull:`):
+If there are a large number of similarly-named remote repositories and
+you want to use a different format for them (such that the URLs you
+use will be rewritten into URLs that work), you can create a
+configuration section of the form:
 
 ------------
-       [remote "<remote>"]
-               url = <url>
-               push = <refspec>
-               fetch = <refspec>
-
+       [url "<actual url base>"]
+               insteadOf = <other url base>
 ------------
 
-The name of a file in `$GIT_DIR/branches` directory can be
-specified as an older notation short-hand; the named
-file should contain a single line, a URL in one of the
-above formats, optionally followed by a hash `#` and the
-name of remote head (URL fragment notation).
-`$GIT_DIR/branches/<remote>` file that stores a <url>
-without the fragment is equivalent to have this in the
-corresponding file in the `$GIT_DIR/remotes/` directory.
+For example, with this:
 
 ------------
-       URL: <url>
-       Pull: refs/heads/master:<remote>
-
+       [url "git://git.host.xz/"]
+               insteadOf = host.xz:/path/to/
+               insteadOf = work:
 ------------
 
-while having `<url>#<head>` is equivalent to
+a URL like "work:repo.git" or like "host.xz:/path/to/repo.git" will be
+rewritten in any context that takes a URL to be "git://git.host.xz/repo.git".
 
-------------
-       URL: <url>
-       Pull: refs/heads/<head>:<remote>
-------------