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

Re: [PATCH 10/15] fetch --tags: fetch tags *in addition to* other stuff

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 28, 2013, 19:10 UTC
Message-ID
<xmqqa9htfbzn.fsf@gitster.dls.corp.google.com>
In-Reply-To
<526A896D.7050801@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 6 quoted lines
>> True but when fetching other references, tags relevant to the
>> history being fetched by default should automatically follow, so the
>> above explains why "fetch --tags" is not a useful thing to do daily.
>
> Maybe not necessary in many scenarios, but is it harmful for the common
> case of cloning from and then periodically fetching from an upstream?

There is no mention of "harmful"; I only said "not useful". And it comes primarily from knowing why "--tags" was introduced in the first place; I should have said "less useful than before, ever since we started to reliably auto-follow".

The only "harmful" part is its interaction with "--prune", which your series nicely addresses.

Show 5 quoted lines
> ISTM that the result of the declarative --tags option
>
>     we have all upstream tags
>
> is easier to reason about than the history-dependent tag-following behavior

I'd say "we have all the relevant tags" and "we have all the tags the other side has" are equally valid things to wish for, depending who you are and how your project is organized, and one is not necessarily easy/useful than the other. In case it was unclear, I was not seriously advocating to deprecate/remove "--tags".

Show 8 quoted lines
> Regarding your first point: if it matters which of the duplicates is
> chosen, then it can only matter because they differ in some other way
> than their reference names, for example in their flags.  So a robust way
> of de-duping them (if it is possible) would be to compare the two
> records and decide which one should take precedence based on this other
> information rather than based on which one happened to come earlier in
> the list.  Then the list order would be immaterial and (for example) it
> wouldn't be a problem to reorder the items.

But that changes the behaviour to those who has cared to rely on the ordering. With the change to first collect and then sort unstably before deduping, the series already tells them not to rely on the order, and two of us tentatively agreed in this discussion that it is not likely to matter. If later this agreement turns out to be a mistake and there are people who *do* rely on the ordering, the only acceptable fix for them is by making sure we restore the "first one trumps" semantics, not by defining an alternative, arguably better, behaviour---that is not a regression fix.

In any case, thanks for working on this topic.
Previous: Michael HaggertyNext: Michael Haggerty
Message 22 of 34 in “Change semantics of "fetch --tags"”
  1. 00/15 Change semantics of "fetch --tags"Michael Haggerty, Oct 23, 2013
  2. 01/15 t5510: use the correct tag name in testMichael Haggerty, Oct 23, 2013
  3. 02/15 t5510: prepare test refs more straightforwardlyMichael Haggerty, Oct 23, 2013
  4. Junio C HamanoOct 23, 2013
  5. Michael HaggertyOct 24, 2013
  6. Junio C HamanoOct 24, 2013
  7. 03/15 t5510: check that "git fetch --prune --tags" does not prune branchesMichael Haggerty, Oct 23, 2013
  8. 04/15 api-remote.txt: correct section "struct refspect"Michael Haggerty, Oct 23, 2013
  9. Junio C HamanoOct 23, 2013
  10. Michael HaggertyOct 24, 2013
  11. 05/15 get_ref_map(): rename local variablesMichael Haggerty, Oct 23, 2013
  12. Junio C HamanoOct 23, 2013
  13. Michael HaggertyOct 24, 2013
  14. 06/15 ref_remove_duplicates(): avoid redundant bisectionMichael Haggerty, Oct 23, 2013
  15. 07/15 ref_remove_duplicates(): simplify functionMichael Haggerty, Oct 23, 2013
  16. 08/15 ref_remove_duplicates(): improve documentation commentMichael Haggerty, Oct 23, 2013
  17. Junio C HamanoOct 23, 2013
  18. 09/15 builtin/fetch.c: reorder function definitionsMichael Haggerty, Oct 23, 2013
  19. 10/15 fetch --tags: fetch tags *in addition to* other stuffMichael Haggerty, Oct 23, 2013
  20. Junio C HamanoOct 24, 2013
  21. Michael HaggertyOct 25, 2013
  22. Junio C HamanoOct 28, 2013
  23. Michael HaggertyOct 30, 2013
  24. Michael HaggertyOct 26, 2013
  25. 11/15 fetch --prune: prune only based on explicit refspecsMichael Haggerty, Oct 23, 2013
  26. Junio C HamanoOct 24, 2013
  27. Michael HaggertyOct 26, 2013
  28. Junio C HamanoOct 28, 2013
  29. 12/15 query_refspecs(): move some constants out of the loopMichael Haggerty, Oct 23, 2013
  30. 13/15 builtin/remote.c: reorder function definitionsMichael Haggerty, Oct 23, 2013
  31. 14/15 builtin/remote.c:update(): use struct argv_arrayMichael Haggerty, Oct 23, 2013
  32. 15/15 fetch, remote: properly convey --no-prune options to subprocessesMichael Haggerty, Oct 23, 2013
  33. Junio C HamanoOct 24, 2013
  34. Junio C HamanoOct 23, 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.