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

Re: [PATCH v2 06/12] prune_remote(): use delete_refs()

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 15, 2015, 18:35 UTC
Message-ID
<xmqq381sakgf.fsf@gitster.dls.corp.google.com>
In-Reply-To
<aab9d191609b34fbfee0b68883a5b14fba2421ad.1434206062.git.mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 34 quoted lines
> This will result in errors being emitted for references that can't be
> deleted, but that is a good thing.
>
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
>  builtin/remote.c | 11 ++---------
>  1 file changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/builtin/remote.c b/builtin/remote.c
> index c8dc724..cc3c741 100644
> --- a/builtin/remote.c
> +++ b/builtin/remote.c
> @@ -1314,19 +1314,12 @@ static int prune_remote(const char *remote, int dry_run)
>  		string_list_append(&refs_to_prune, item->util);
>  	string_list_sort(&refs_to_prune);
>  
> -	if (!dry_run) {
> -		struct strbuf err = STRBUF_INIT;
> -		if (repack_without_refs(&refs_to_prune, &err))
> -			result |= error("%s", err.buf);
> -		strbuf_release(&err);
> -	}
> +	if (!dry_run)
> +		result |= delete_refs(&refs_to_prune);
>  
>  	for_each_string_list_item(item, &states.stale) {
>  		const char *refname = item->util;
>  
> -		if (!dry_run)
> -			result |= delete_ref(refname, NULL, 0);
> -
>  		if (dry_run)
>  			printf_ln(_(" * [would prune] %s"),
>  			       abbrev_ref(refname, "refs/remotes/"));

The resulting code reads better by making the for-each-string-list-item loop only about reporting and not actually doing anything.

But the log message puzzles me. Didn't refs that cannot be deleted cause the original to fail? After repacking without these refs, it called delete-ref, and a failure to delete or commit the deletion would have hit the error() down there, no?

Previous: Michael HaggertyNext: Jeff King
Message 11 of 30 in “Improve "refs" module encapsulation”
  1. 00/12 Improve "refs" module encapsulationMichael Haggerty, Jun 13, 2015
  2. 01/12 delete_ref(): move declaration to refs.hMichael Haggerty, Jun 13, 2015
  3. 02/12 remove_branches(): remove temporaryMichael Haggerty, Jun 13, 2015
  4. 03/12 delete_ref(): handle special case more explicitlyMichael Haggerty, Jun 13, 2015
  5. Junio C HamanoJun 15, 2015
  6. 04/12 delete_refs(): new function for the refs APIMichael Haggerty, Jun 13, 2015
  7. 05/12 delete_refs(): improve error messageMichael Haggerty, Jun 13, 2015
  8. Junio C HamanoJun 15, 2015
  9. Michael HaggertyJun 19, 2015
  10. 06/12 prune_remote(): use delete_refs()Michael Haggerty, Jun 13, 2015
  11. Junio C HamanoJun 15, 2015
  12. Jeff KingJun 15, 2015
  13. Junio C HamanoJun 15, 2015
  14. 07/12 repack_without_refs(): make function privateMichael Haggerty, Jun 13, 2015
  15. 08/12 initial_ref_transaction_commit(): function for initial ref creationMichael Haggerty, Jun 13, 2015
  16. Junio C HamanoJun 15, 2015
  17. Junio C HamanoJun 15, 2015
  18. Jeff KingJun 15, 2015
  19. Junio C HamanoJun 15, 2015
  20. Michael HaggertyJun 20, 2015
  21. 09/12 refs: remove some functions from the module's public interfaceMichael Haggerty, Jun 13, 2015
  22. 10/12 initial_ref_transaction_commit(): check for duplicate refsMichael Haggerty, Jun 13, 2015
  23. 11/12 initial_ref_transaction_commit(): check for ref D/F conflictsMichael Haggerty, Jun 13, 2015
  24. 12/12 refs: move the remaining ref module declarations to refs.hMichael Haggerty, Jun 13, 2015
  25. Junio C HamanoJun 15, 2015
  26. Jeff KingJun 15, 2015
  27. Junio C HamanoJun 15, 2015
  28. Michael HaggertyJun 20, 2015
  29. Junio C HamanoJun 20, 2015
  30. Stefan BellerJun 15, 2015

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.