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

Re: [PATCH v2 06/18] report_refname_conflict(): inline function

From
Junio C Hamano <gitster@pobox.com>
Date
May 12, 2015, 21:21 UTC
Message-ID
<xmqqzj59eblj.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1431357920-25090-7-git-send-email-mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 6 quoted lines
> It wasn't pulling its weight. And we are about to need code similar to
> this where no ref_entry is available and with more diverse error
> messages. Rather than try to generalize the function, just inline it.
>
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---

I am not sure "not pulling its weight" in this and also 05/18 is a fair judgement. A short helper function sometimes helps readability by giving an extra abstraction.

But I agree 100% with these two steps that they weren't making them easier to read. A raw call to error() shows clearly that we are reporting an error and more importantly by losing an intermediary we do not have to wonder at the call site if there is anything else going on in that "report" function (where there isn't).

Thanks.
Show 37 quoted lines
>  refs.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index 6bdd34f..7422594 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -857,12 +857,6 @@ static int nonmatching_ref_fn(struct ref_entry *entry, void *vdata)
>  	return 1;
>  }
>  
> -static void report_refname_conflict(struct ref_entry *entry,
> -				    const char *refname)
> -{
> -	error("'%s' exists; cannot create '%s'", entry->name, refname);
> -}
> -
>  /*
>   * Return true iff a reference named refname could be created without
>   * conflicting with the name of an existing reference in dir.  If
> @@ -918,7 +912,7 @@ static int is_refname_available(const char *refname,
>  				 */
>  				return 1;
>  			}
> -			report_refname_conflict(entry, refname);
> +			error("'%s' exists; cannot create '%s'", entry->name, refname);
>  			return 0;
>  		}
>  
> @@ -969,7 +963,7 @@ static int is_refname_available(const char *refname,
>  		if (!do_for_each_entry_in_dir(dir, 0, nonmatching_ref_fn, &data))
>  			return 1;
>  
> -		report_refname_conflict(data.found, refname);
> +		error("'%s' exists; cannot create '%s'", data.found->name, refname);
>  		return 0;
>  	}
Previous: Michael HaggertyNext: Michael Haggerty
Message 19 of 33 in “Improve handling of D/F conflicts”
  1. 00/18 Improve handling of D/F conflictsMichael Haggerty, May 11, 2015
  2. 01/18 t1404: new tests of ref D/F conflicts within transactionsMichael Haggerty, May 11, 2015
  3. Junio C HamanoMay 11, 2015
  4. Michael HaggertyMay 12, 2015
  5. Junio C HamanoMay 11, 2015
  6. Michael HaggertyMay 12, 2015
  7. Junio C HamanoMay 12, 2015
  8. Michael HaggertyMay 13, 2015
  9. Junio C HamanoMay 14, 2015
  10. Michael HaggertyMay 22, 2015
  11. Junio C HamanoMay 23, 2015
  12. 02/18 is_refname_available(): revamp the commentsMichael Haggerty, May 11, 2015
  13. Junio C HamanoMay 12, 2015
  14. 03/18 is_refname_available(): avoid shadowing "dir" variableMichael Haggerty, May 11, 2015
  15. Junio C HamanoMay 12, 2015
  16. 04/18 is_refname_available(): convert local variable "dirname" to strbufMichael Haggerty, May 11, 2015
  17. 05/18 entry_matches(): inline functionMichael Haggerty, May 11, 2015
  18. 06/18 report_refname_conflict(): inline functionMichael Haggerty, May 11, 2015
  19. Junio C HamanoMay 12, 2015
  20. 07/18 struct nonmatching_ref_data: store a refname instead of a ref_entryMichael Haggerty, May 11, 2015
  21. 08/18 is_refname_available(): use dirname in first loopMichael Haggerty, May 11, 2015
  22. 09/18 ref_transaction_commit(): use a string_list for detecting duplicatesMichael Haggerty, May 11, 2015
  23. 10/18 refs: check for D/F conflicts among refs created in a transactionMichael Haggerty, May 11, 2015
  24. 11/18 verify_refname_available(): rename functionMichael Haggerty, May 11, 2015
  25. 12/18 verify_refname_available(): report errors via a "struct strbuf *err"Michael Haggerty, May 11, 2015
  26. 13/18 lock_ref_sha1_basic(): report errors via a "struct strbuf *err"Michael Haggerty, May 11, 2015
  27. 14/18 lock_ref_sha1_basic(): improve diagnostics for ref D/F conflictsMichael Haggerty, May 11, 2015
  28. 15/18 rename_ref(): integrate lock_ref_sha1_basic() errors into oursMichael Haggerty, May 11, 2015
  29. 16/18 ref_transaction_commit(): provide better error messagesMichael Haggerty, May 11, 2015
  30. 17/18 ref_transaction_commit(): delete extra "the" from error messageMichael Haggerty, May 11, 2015
  31. 18/18 reflog_expire(): integrate lock_ref_sha1_basic() errors into oursMichael Haggerty, May 11, 2015
  32. Junio C HamanoMay 11, 2015
  33. Stefan BellerMay 11, 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.