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

Re: [PATCH] git-fetch should not strip off ".git" extension

From
LRLeo Razoumov <slonik.az@gmail.com>
Date
Oct 22, 2008, 11:35 UTC
Message-ID
<ee2a733e0810220435v5f1bfa62y508f78f2d9bef8ba@mail.gmail.com>
In-Reply-To
<7vd4htwp6v.fsf@gitster.siamese.dyndns.org>
On 10/21/08, Junio C Hamano <gitster@pobox.com> wrote:
Show 52 quoted lines
> "Alex Riesen" <raa.lkml@gmail.com> writes:
>
>  > 2008/10/21 Junio C Hamano <gitster@pobox.com>:
>  >> "Leo Razoumov" <slonik.az@gmail.com> writes:
>  >>
>  >>> Even though the old behavior is "long established", it introduces
>  >>> unnecessary ambiguity. If I have two repos
>  >>> ...
>  >>
>  >> Of course.  Now you know why people don't name such a pair of repositories
>  >> like that ;-).
>  >
>  > FWIW, I support Leo on that. The "established" behavior is stupid.
>
>
> I am not inclined to respond to such an emotional argument.  On the other
>  hand, it is fair to say that the existing behaviour is established,
>  because it is backed by a long history, which you can objectively verify.
>
>  If you think about it deeper, you will realize that it is not even clear
>  if it is "stupid".
>
>  More importantly, the behaviour is consistent with the way how "git fetch"
>  and "git clone" DWIMs the repository name by suffixing .git when the input
>  lacks it.  And this DWIMmery comes from the expectations that:
>
>   (1) people name their repository project.git; and
>
>   (2) people like using and seeing short names (iow, "clone
>      git://$somewhere/project" is preferred over "clone
>      git://$somewhere/project.git");
>
>  If a repository whose real location is git://$somewhere/project.git is
>  cloned/fetched as git://$somewhere/project by people, recording the merge
>  source using the shorter name used by people to fetch from it is more
>  consistent.  The patch breaks this consistency [*1*].
>
>  What is clear is that you would confuse yourself if you have two
>  repositories A and A.git next to each other, and that is primarily because
>  it breaks the above expectation.
>
>  git core-level rarely imposes such policies, but what Porcelains do is a
>  different matter.
>
>  Hence the suggestion: don't do it.
>
>  [Footnote]
>
>  *1* It would be a different matter if the patch at the same time removed
>  the fetch/clone DWIMmery.  At least such a patch would be internally self
>  consistent.
>

I think this discussion went in the direction of "correct" versus "convent". I, personally, will choose correct over convenient any time. Different people use git for different projects and their expectations differ in this regard. In my case after I do "git clone Foo.git" I get "Foo" repo side-by-side with "Foo.git" and the ambiguity becomes apparent.

Regarding your footnote *1*. I agree with your suggestions and I can improve the patch in the following way:

(1) Fetch/clone messages/comments will refer to the source/destination repos by their complete names without stripping off any parts (2) Searching for a source repo, clone/fetch will first try an exact match and if it fails it will remove/add ".git" suffix and

Previous: Junio C HamanoNext: Leo Razoumov
Message 12 of 13 in “git-fetch should not strip off ".git" extension”
  1. git-fetch should not strip off ".git" extensionLeo Razoumov, Oct 18, 2008
  2. Andreas EricssonOct 20, 2008
  3. Leo RazoumovOct 20, 2008
  4. Junio C HamanoOct 20, 2008
  5. Leo RazoumovOct 21, 2008
  6. Junio C HamanoOct 21, 2008
  7. Alex RiesenOct 21, 2008
  8. Junio C HamanoOct 21, 2008
  9. Alex RiesenOct 21, 2008
  10. Andreas EricssonOct 22, 2008
  11. Junio C HamanoOct 21, 2008
  12. Leo RazoumovOct 22, 2008
  13. Leo RazoumovOct 22, 2008

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.