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

Re: [PATCH 0/3] Unconfuse git clone when two branches at are HEAD.

From
Philip Oakley <philipoakley@iee.org>
Date
Sep 9, 2013, 22:20 UTC
Message-ID
<CBB3BFF2B74D4A768238512FBF1CD6E7@PhilipOakley>
In-Reply-To
<xmqqr4cy5a2z.fsf@gitster.dls.corp.google.com>
From: "Junio C Hamano" <gitster@pobox.com>
Sent: Monday, September 09, 2013 3:44 PM
Show 27 quoted lines
> "Philip Oakley" <philipoakley@iee.org> writes:
>
>> One is to extend the ref format such that
>>  <sha1> refs/heads/Test:HEAD
>> would be considered a valid indicator of a symref relationship
>> (i.e. using the typical 'colon' style). It would be appended after 
>> the
>> regular refs, so all the existing refs are still transported.
>>
>> The point is that while it produces an error, it doesn't stop the
>> cloning, and the error message
>> "error: * Ignoring funny ref 'refs/remotes/origin/Test:HEAD' locally"
>> gives a pretty clear statement of intent to those with older versions
>> of git.
>
> Cute.  If it does not stop any of these:
>
>        git ls-remote such.bundle
> git clone such.bundle
>        git fetch such.bundle
> git fetch such.bundle master ;# if 'master' branch is in it
>        git ls-remote such.bundle
>        git ls-remote such.bundle master ;# if 'master' branch is in it
>
> even if some of them may give error messages, I think that may be a
> workable escape hatch.
>

These look to work OK. Not sure If I've properly covered all the options.

A nice feature is that ls-remote will find the fake ref !

$ git ls-remote /c/gitBundleTest1/RepoHEADnomaster.bundle Test:HEAD 41ccb18028d1cb6516251e94cef1cd5cb3f0bcb5 refs/heads/Test:HEAD

It's only the clone that barfs (so far) (which could be 'fixed').

Obviously, if it can be made to work, one check would be that the two refs (HEAD and refs/heads/wherever) point to the came commit before generating the HEAD symref.

Philip 
Previous: Andreas KreyNext: Junio C Hamano
Message 31 of 32 in “Unconfuse git clone when two branches at are HEAD.”
  1. 0/3 Unconfuse git clone when two branches at are HEAD.Andreas Krey, Sep 6, 2013
  2. 1/3 upload-pack: send the HEAD informationAndreas Krey, Sep 6, 2013
  3. Junio C HamanoSep 6, 2013
  4. Andreas KreySep 6, 2013
  5. Junio C HamanoSep 6, 2013
  6. Jeff KingSep 8, 2013
  7. Jeff KingSep 8, 2013
  8. Junio C HamanoSep 8, 2013
  9. 0/6 Removing the guesswork of HEAD in "clone"Junio C Hamano, Sep 18, 2013
  10. 1/6 upload-pack.c: do not pass confusing cb_data to mark_our_ref()Junio C Hamano, Sep 18, 2013
  11. 2/6 upload-pack: send symbolic ref information as capabilityJunio C Hamano, Sep 18, 2013
  12. Junio C HamanoSep 18, 2013
  13. 3/6 upload-pack: send non-HEAD symbolic refsJunio C Hamano, Sep 18, 2013
  14. 4/6 connect.c: make parse_feature_value() staticJunio C Hamano, Sep 18, 2013
  15. 5/6 connect: annotate refs with their symref information in get_remote_head()Junio C Hamano, Sep 18, 2013
  16. 6/6 clone: test the new HEAD detection logicJunio C Hamano, Sep 18, 2013
  17. 2/3 connect.c: save symref info from server capabilitiesAndreas Krey, Sep 6, 2013
  18. Junio C HamanoSep 6, 2013
  19. Andreas KreySep 6, 2013
  20. Junio C HamanoSep 6, 2013
  21. 3/3 clone: test the new HEAD detection logicAndreas Krey, Sep 6, 2013
  22. Philip OakleySep 6, 2013
  23. Junio C HamanoSep 6, 2013
  24. Philip OakleySep 6, 2013
  25. Junio C HamanoSep 7, 2013
  26. Philip OakleySep 7, 2013
  27. Junio C HamanoSep 8, 2013
  28. Philip OakleySep 8, 2013
  29. Junio C HamanoSep 9, 2013
  30. Andreas KreySep 9, 2013
  31. Philip OakleySep 9, 2013
  32. Junio C HamanoSep 9, 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.