Reputation: 555
According to the output of git help clone
the --local
option does the following:
--local, -l
When the repository to clone from is on a local machine, this flag bypasses the normal "Git
aware" transport mechanism and clones the repository by making a copy of HEAD and everything
under objects and refs directories. The files under .git/objects/ directory are hardlinked to
save space when possible.
If the repository is specified as a local path (e.g., /path/to/repo), this is the default, and
--local is essentially a no-op. If the repository is specified as a URL, then this flag is
ignored (and we never use the local optimizations). Specifying --no-local will override the
default when /path/to/repo is given, using the regular Git transport instead.
If I'm reading this correctly, the second paragraph says this option will default to on whenever a local path is given, and will be ignored whenever the given path is not local. So what's the point? How can it even ever have any effect? Is it basically a no-op stub for compatibility with older versions of git when it did something?
Upvotes: 3
Views: 51
Reputation: 9268
This is leaked technical detail - the way to implement the --no-X
options. Instead of defining alone --no-local
there is option --local
which is noop, but it has --no-*
version. Same way (though it is not mentioned in help) you can run git clone --checkout ...
but it would not affect anything because clone checks out by default.
PS: some long time ago it was not a default, so using it did make sense.
Upvotes: 4