git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Bug in git 2.1.0 when cloning to directory with same name as repository

From
Jeff King <peff@peff.net>
Date
Sep 23, 2014, 08:39 UTC
Message-ID
<20140923083903.GA7644@peff.net>
In-Reply-To
<CAMoD=Bi41mB3QRn3JdZL-FGHs4w3C2jGpnJB-CqSndO7FMtfzA@mail.gmail.com>
On Tue, Sep 23, 2014 at 04:49:55PM +0900, Chris Salzberg wrote:
Show 7 quoted lines
> I've found what looks like a bug wherein if you are using an ssh alias
> for a git remote, and that remote has a dash in its name, and you
> specify the target path as the name of the url itself, git complains
> about refs not being valid packed references.
> 
> To reproduce, in git 2.1.0 and with a repository using ssh config and
> which has a dash in the name, e.g.:

Thanks for a reproduction recipe. I think we can make it simpler, though. The problem seems to come when your destination directory is identical to the remote URL. I saw similar failures with:

  git clone git@github.com:git/git git@github.com:git/git
and even:
  git clone https://github.com/git/git https://github.com/git/git

It bisects to f38aa83 (use local cloning if insteadOf makes a local URL, 2014-07-17) by Michael Barabanov (cc'd). That commit moved a call to get_repo_path() much further down cmd_clone, after we have already created the repo directory. As a result, we try to fetch objects from the newly created directory, which of course has none (and because it's local, we try to use "cp" instead of the git protocol. We don't notice the error at transfer time, but rather later when trying to write out the references).

I'm not sure of the simplest solution. I guess along the lines of one of:

  1. Move the code back before the directory is created. Rather than
     using `remote_get` to apply insteadOf substitution as a side
     effect, make it possible to call into the insteadOf code directly.
  2. It might work to chdir() into the repo after creating it, though
     that probably creates its own problems with other relative paths
     (and I am not sure it would save us if you had a remote URL that
     looked like an absolute path).
-Peff
Previous: Chris Salzberg
Message 2 of 2 in “Bug in git 2.1.0 when cloning to directory with same name as repository”
  1. Chris SalzbergSep 23, 2014
  2. Jeff KingSep 23, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.