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

[PATCH v2 00/23] Change semantics of "fetch --tags"

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Oct 30, 2013, 05:32 UTC
Message-ID
<1383111192-23780-1-git-send-email-mhagger@alum.mit.edu>

This is v2 of my proposed fix for the "local tag killer" problem that I reported recently [1]. Thanks a lot to Junio for his feedback on v1.

Changes since v1:
* Rebase to current upstream master (0d6cf2471f); no conflicts were
  encountered.
* Incorporate feedback from Junio:
  * Improve the documentation as suggested
  * Fix a few typos
* Document get_expanded_map() and fix a minor memory leak that I found
  there.
* get_ref_map(): Do not look for references that can be updated
  opportunistically among the entries added by "--tags".  Preserve the
  order of output list when changing the function to handle the new
  "--tags" semantics.  (I know more about how the output is used and
  am less worried now that the changes will have bad interactions with
  the rest of the system.)
* Improve the description of tag-following in the "git fetch" manpage.
* Moved the changes to ref_remove_duplicates() later in the series, as
  they were not really integral to the rest of the patch series.
  Make the following changes to that function:
  * Add tests of how it handles duplicates.
  * Simplify the loop in a different way than v1, to make it more
    modular.
  * Extract a function to handle duplicates.
  * Improve the error messages emitted if ref_remove_duplicates()
    finds conflicting duplicates, and mark the messages for
    translation.
  * Do not die() if a user-specified refspec conflicts with
    an opportunistic update.
[1] http://article.gmane.org/gmane.comp.version-control.git/234723
Michael Haggerty (23):
  t5510: use the correct tag name in test
  t5510: prepare test refs more straightforwardly
  t5510: check that "git fetch --prune --tags" does not prune branches
  api-remote.txt: correct section "struct refspec"
  get_ref_map(): rename local variables
  builtin/fetch.c: reorder function definitions
  get_expanded_map(): add docstring
  get_expanded_map(): avoid memory leak
  fetch: only opportunistically update references based on command line
  fetch --tags: fetch tags *in addition to* other stuff
  fetch --prune: prune only based on explicit refspecs
  query_refspecs(): move some constants out of the loop
  builtin/remote.c: reorder function definitions
  builtin/remote.c:update(): use struct argv_array
  fetch, remote: properly convey --no-prune options to subprocesses
  fetch-options.txt: simplify ifdef/ifndef/endif usage
  git-fetch.txt: improve description of tag auto-following
  ref_remove_duplicates(): avoid redundant bisection
  t5536: new test of refspec conflicts when fetching
  ref_remove_duplicates(): simplify loop logic
  ref_remote_duplicates(): extract a function handle_duplicate()
  handle_duplicate(): mark error message for translation
  fetch: improve the error messages emitted for conflicting refspecs
 Documentation/config.txt                 |   4 +-
 Documentation/fetch-options.txt          |  26 +--
 Documentation/git-fetch.txt              |  14 +-
 Documentation/technical/api-remote.txt   |  20 +--
 builtin/fetch.c                          | 298 ++++++++++++++++---------------
 builtin/remote.c                         | 196 ++++++++++----------
 git-pull.sh                              |   2 +-
 remote.c                                 |  94 +++++++---
 remote.h                                 |   8 +-
 t/t5510-fetch.sh                         |  36 +++-
 t/t5515/fetch.br-unconfig_--tags_.._.git |   1 +
 t/t5515/fetch.master_--tags_.._.git      |   1 +
 t/t5525-fetch-tagopt.sh                  |  23 ++-
 t/t5536-fetch-conflicts.sh               | 100 +++++++++++
 14 files changed, 503 insertions(+), 320 deletions(-)
 create mode 100755 t/t5536-fetch-conflicts.sh
-- 
1.8.4.1
Next: Michael Haggerty
Message 1 of 28 in “Change semantics of "fetch --tags"”
  1. 00/23 Change semantics of "fetch --tags"Michael Haggerty, Oct 30, 2013
  2. 01/23 t5510: use the correct tag name in testMichael Haggerty, Oct 30, 2013
  3. 02/23 t5510: prepare test refs more straightforwardlyMichael Haggerty, Oct 30, 2013
  4. Ramkumar RamachandraOct 30, 2013
  5. Michael HaggertyOct 30, 2013
  6. 03/23 t5510: check that "git fetch --prune --tags" does not prune branchesMichael Haggerty, Oct 30, 2013
  7. 04/23 api-remote.txt: correct section "struct refspec"Michael Haggerty, Oct 30, 2013
  8. 05/23 get_ref_map(): rename local variablesMichael Haggerty, Oct 30, 2013
  9. 06/23 builtin/fetch.c: reorder function definitionsMichael Haggerty, Oct 30, 2013
  10. 07/23 get_expanded_map(): add docstringMichael Haggerty, Oct 30, 2013
  11. 08/23 get_expanded_map(): avoid memory leakMichael Haggerty, Oct 30, 2013
  12. 09/23 fetch: only opportunistically update references based on command lineMichael Haggerty, Oct 30, 2013
  13. 10/23 fetch --tags: fetch tags *in addition to* other stuffMichael Haggerty, Oct 30, 2013
  14. 11/23 fetch --prune: prune only based on explicit refspecsMichael Haggerty, Oct 30, 2013
  15. 12/23 query_refspecs(): move some constants out of the loopMichael Haggerty, Oct 30, 2013
  16. Ramkumar RamachandraOct 30, 2013
  17. Michael HaggertyOct 30, 2013
  18. 13/23 builtin/remote.c: reorder function definitionsMichael Haggerty, Oct 30, 2013
  19. 14/23 builtin/remote.c:update(): use struct argv_arrayMichael Haggerty, Oct 30, 2013
  20. 15/23 fetch, remote: properly convey --no-prune options to subprocessesMichael Haggerty, Oct 30, 2013
  21. 16/23 fetch-options.txt: simplify ifdef/ifndef/endif usageMichael Haggerty, Oct 30, 2013
  22. 17/23 git-fetch.txt: improve description of tag auto-followingMichael Haggerty, Oct 30, 2013
  23. 18/23 ref_remove_duplicates(): avoid redundant bisectionMichael Haggerty, Oct 30, 2013
  24. 19/23 t5536: new test of refspec conflicts when fetchingMichael Haggerty, Oct 30, 2013
  25. 20/23 ref_remove_duplicates(): simplify loop logicMichael Haggerty, Oct 30, 2013
  26. 21/23 ref_remote_duplicates(): extract a function handle_duplicate()Michael Haggerty, Oct 30, 2013
  27. 22/23 handle_duplicate(): mark error message for translationMichael Haggerty, Oct 30, 2013
  28. 23/23 fetch: improve the error messages emitted for conflicting refspecsMichael Haggerty, Oct 30, 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.