Nathan Smith
Nathan Smith

Reputation: 555

Does the --local actually do anything when used with git clone [path]?

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

Answers (1)

max630
max630

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

Related Questions