GIT URLS[[URLS]]
----------------

One of the following notations can be used
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/
- 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:

===============================================================
- {startsb}user@{endsb}host.xz:/path/to/repo.git/
- {startsb}user@{endsb}host.xz:~user/path/to/repo.git/
- {startsb}user@{endsb}host.xz:path/to/repo.git
===============================================================

To sync with a local directory, use:

===============================================================
- /path/to/repo.git/
===============================================================

REMOTES
-------

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:

------------
	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:`):

------------
	[remote "<remote>"]
		url = <url>
		push = <refspec>
		fetch = <refspec>

------------

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.

------------
	URL: <url>
	Pull: refs/heads/master:<remote>

------------

while having `<url>#<head>` is equivalent to

------------
	URL: <url>
	Pull: refs/heads/<head>:<remote>
------------
