Remote helper programs are invoked with one or (optionally) two
arguments. The first argument specifies a remote repository as in Git;
it is either the name of a configured remote or a URL. The second
argument specifies a URL; it is usually of the form
<transport>://<address>, but any arbitrary string is possible.
The GIT_DIR environment variable is set up for the remote helper
and can be used to determine where to store additional data or from
which directory to invoke auxiliary Git commands.
When Git encounters a URL of the form <transport>://<address>, where
<transport> is a protocol that it cannot handle natively, it
automatically invokes git remote-<transport> with the full URL as
the second argument. If such a URL is encountered directly on the
command line, the first argument is the same as the second, and if it
is encountered in a configured remote, the first argument is the name
of that remote.
A URL of the form <transport>::<address> explicitly instructs Git to
invoke git remote-<transport> with <address> as the second
argument. If such a URL is encountered directly on the command line,
the first argument is <address>, and if it is encountered in a
configured remote, the first argument is the name of that remote.
Additionally, when a configured remote has remote.<name>.vcs set to
<transport>, Git explicitly invokes git remote-<transport> with
<name> as the first argument. If set, the second argument is
remote.<name>.url; otherwise, the second argument is omitted.