The git
binary remembers the directory where dashed executables like git-svn
are installed. It is set during git installation, or to be more exact during build phase (that is why you need to use the same options compiling and installing).
You can find this directory with git --exec-path
$ git --exec-path
/usr/libexec/git-core
(the above is for system installation on Linux).
The git svn
command (not a built in) invokes git
wrapper, which finds git-svn
binary, and executes it.
Note: some of dashed executables, corresponding to built-in commands, like git-tag
, are hardlinked to git
executable. Calling those just invokes appropriate (sub)command.