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

Re: [PATCH 1/2] clone: Fix error message for reference repository

From
Aaron Schrab <aaron@schrab.com>
Date
Apr 8, 2013, 00:06 UTC
Message-ID
<20130408000658.GG27178@pug.qqx.org>
In-Reply-To
<20130407234810.GG19857@elie.Belkin>
At 16:48 -0700 07 Apr 2013, Jonathan Nieder <jrnieder@gmail.com> wrote:
>Hi Aaron,
Thanks for the feedback.
Show 9 quoted lines
>Aaron Schrab wrote:
>
>> Do not report an argument to clone's --reference option is not a local
>> directory.  Nothing checks for the actual directory so we have no way to
>> know if whether or not exists.  Telling the user that a directory doesn't
>> exist when that isn't actually known may lead him or her on the wrong
>> path to finding the problem.
>
>I don't understand the above explanation.  Could you give an example?

I originally noticed this while trying to use a submodule as a reference repository. Since that submodule was first checked out using a recent version of git it used a .git file rather than having a .git directory. This caused the checks to fail, and the misleading error message had me checking for a typo in the path which I'd supplied.

I'll attempt to clarify that message in the next version.
Show 12 quoted lines
>> --- a/builtin/clone.c
>> +++ b/builtin/clone.c
>> @@ -241,7 +241,7 @@ static int add_one_reference(struct string_list_item *item, void *cb_data)
>>  		free(ref_git);
>>  		ref_git = ref_git_git;
>>  	} else if (!is_directory(mkpath("%s/objects", ref_git)))
>> -		die(_("reference repository '%s' is not a local directory."),
>> +		die(_("reference repository '%s' is not a local repository."),
>
>"is_directory" calls stat and checks if its target is a directory.  Is
>the problem that "/path/to/repo.git" might be a directory but
>"/path/to/repo.git/objects" may not?

In my case the issue was that /path/to/repo is a directory, but /path/to/repo/.git/objects (which is checked shortly before the above context) didn't exist since /path/to/repo/.git is a file.

>Would it make sense for the message to say something like the
>following?
>
>	fatal: alternate object store '/path/to/repo.git/objects' is not a local directory

That would also avoid lying to the user. But if combined with the second patch in this series it could cause confusion for a different reason. Once .git files are honored, the path reported there may have no relation to the path supplied by the user.

Previous: Jonathan NiederNext: Aaron Schrab
Message 20 of 28 in “clone: Fix error message for reference repository”
  1. 1/2 clone: Fix error message for reference repositoryAaron Schrab, Apr 7, 2013
  2. 2/2 clone: Allow repo using gitfile as a referenceAaron Schrab, Apr 7, 2013
  3. Jonathan NiederApr 7, 2013
  4. Aaron SchrabApr 8, 2013
  5. Junio C HamanoApr 8, 2013
  6. Aaron SchrabApr 8, 2013
  7. 0/2 Using gitfile repository with clone --referenceAaron Schrab, Apr 8, 2013
  8. 1/2 clone: Fix error message for reference repositoryAaron Schrab, Apr 8, 2013
  9. Jonathan NiederApr 9, 2013
  10. 2/2 clone: Allow repo using gitfile as a referenceAaron Schrab, Apr 8, 2013
  11. Jonathan NiederApr 9, 2013
  12. Aaron SchrabApr 9, 2013
  13. Junio C HamanoApr 9, 2013
  14. Aaron SchrabApr 9, 2013
  15. 0/2 Using gitfile repository with clone --referenceAaron Schrab, Apr 9, 2013
  16. 1/2 clone: Fix error message for reference repositoryAaron Schrab, Apr 9, 2013
  17. 2/2 clone: Allow repo using gitfile as a referenceAaron Schrab, Apr 9, 2013
  18. Junio C HamanoApr 9, 2013
  19. Jonathan NiederApr 7, 2013
  20. Aaron SchrabApr 8, 2013
  21. Aaron SchrabApr 8, 2013
  22. Junio C HamanoApr 8, 2013
  23. Aaron SchrabApr 8, 2013
  24. Junio C HamanoApr 8, 2013
  25. Aaron SchrabApr 8, 2013
  26. Junio C HamanoApr 8, 2013
  27. Aaron SchrabApr 8, 2013
  28. Junio C HamanoApr 8, 2013

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.