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

Re: [PATCH v4 5/8] branch: drop non-commit error reporting

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 14, 2015, 19:49 UTC
Message-ID
<xmqqvbbcvl0v.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1442129035-31386-6-git-send-email-Karthik.188@gmail.com>
Karthik Nayak <karthik.188@gmail.com> writes:
> Remove the error reporting variable to make the code easier to port
> over to using ref-filter APIs. This variable is not required as in
> ref-filter we already check for possible errors and report them.
Hmmmm.  What do you exactly mean "possible errors" here?

Unlike generic refs that can point at anything, refs/heads/* refs must point at a commit [*1*], and that is why the error message says 'does not point at a commit'.

Does ref-filter API have corresponding check to treat the local and remote branch hierarchies differently from tags and others?

[Footnote]
*1* Strictly speaking, use of lookup_commit_reference_gently() in
    the existing code allows a committish to be there and does not
    limit the tip objects to be commits, but I think it is a bug.
    At least, even with deref_tag(), we reject non committish found
    at the tip of branch refs and explain with the error message
    this patch removes.
Show 79 quoted lines
> Based-on-patch-by: Jeff King <peff@peff.net>
> Mentored-by: Christian Couder <christian.couder@gmail.com>
> Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
> Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
> ---
>  builtin/branch.c | 18 ++++--------------
>  1 file changed, 4 insertions(+), 14 deletions(-)
>
> diff --git a/builtin/branch.c b/builtin/branch.c
> index 4d9e4d0..8b9da60 100644
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -313,7 +313,6 @@ static char *resolve_symref(const char *src, const char *prefix)
>  struct append_ref_cb {
>  	struct ref_list *ref_list;
>  	const char **pattern;
> -	int ret;
>  };
>  
>  static int match_patterns(const char **pattern, const char *refname)
> @@ -370,10 +369,8 @@ static int append_ref(const char *refname, const struct object_id *oid, int flag
>  	commit = NULL;
>  	if (ref_list->verbose || ref_list->with_commit || merge_filter != NO_FILTER) {
>  		commit = lookup_commit_reference_gently(oid->hash, 1);
> -		if (!commit) {
> -			cb->ret = error(_("branch '%s' does not point at a commit"), refname);
> +		if (!commit)
>  			return 0;
> -		}
>  
>  		/* Filter with with_commit if specified */
>  		if (!is_descendant_of(commit, ref_list->with_commit))
> @@ -617,7 +614,7 @@ static int calc_maxwidth(struct ref_list *refs, int remote_bonus)
>  	return max;
>  }
>  
> -static int print_ref_list(int kinds, int detached, int verbose, int abbrev, struct commit_list *with_commit, const char **pattern)
> +static void print_ref_list(int kinds, int detached, int verbose, int abbrev, struct commit_list *with_commit, const char **pattern)
>  {
>  	int i, index;
>  	struct append_ref_cb cb;
> @@ -642,7 +639,6 @@ static int print_ref_list(int kinds, int detached, int verbose, int abbrev, stru
>  		init_revisions(&ref_list.revs, NULL);
>  	cb.ref_list = &ref_list;
>  	cb.pattern = pattern;
> -	cb.ret = 0;
>  	/*
>  	 * First we obtain all regular branch refs and if the HEAD is
>  	 * detached then we insert that ref to the end of the ref_fist
> @@ -702,11 +698,6 @@ static int print_ref_list(int kinds, int detached, int verbose, int abbrev, stru
>  			       abbrev, detached, remote_prefix);
>  
>  	free_ref_list(&ref_list);
> -
> -	if (cb.ret)
> -		error(_("some refs could not be read"));
> -
> -	return cb.ret;
>  }
>  
>  static void rename_branch(const char *oldname, const char *newname, int force)
> @@ -922,15 +913,14 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
>  			die(_("branch name required"));
>  		return delete_branches(argc, argv, delete > 1, kinds, quiet);
>  	} else if (list) {
> -		int ret;
>  		/*  git branch --local also shows HEAD when it is detached */
>  		if (kinds & REF_LOCAL_BRANCH)
>  			kinds |= REF_DETACHED_HEAD;
> -		ret = print_ref_list(kinds, detached, verbose, abbrev,
> +		print_ref_list(kinds, detached, verbose, abbrev,
>  					 with_commit, argv);
>  		print_columns(&output, colopts, NULL);
>  		string_list_clear(&output, 0);
> -		return ret;
> +		return 0;
>  	}
>  	else if (edit_description) {
>  		const char *branch_name;
Previous: Karthik NayakNext: Karthik Nayak
Message 29 of 38 in “port the filtering part of branch.c to use ref-filter APIs”
  1. 0/8 port the filtering part of branch.c to use ref-filter APIsKarthik Nayak, Sep 13, 2015
  2. 1/8 branch: refactor width computationKarthik Nayak, Sep 13, 2015
  3. Matthieu MoySep 13, 2015
  4. Karthik NayakSep 13, 2015
  5. Matthieu MoySep 13, 2015
  6. 2/8 branch: bump get_head_description() to the topKarthik Nayak, Sep 13, 2015
  7. 3/8 branch: roll show_detached HEAD into regular ref_listKarthik Nayak, Sep 13, 2015
  8. Matthieu MoySep 13, 2015
  9. Karthik NayakSep 13, 2015
  10. Eric SunshineSep 13, 2015
  11. Eric SunshineSep 13, 2015
  12. Karthik NayakSep 14, 2015
  13. Matthieu MoySep 14, 2015
  14. Junio C HamanoSep 14, 2015
  15. Karthik NayakSep 16, 2015
  16. Karthik NayakSep 17, 2015
  17. Matthieu MoySep 17, 2015
  18. Junio C HamanoSep 17, 2015
  19. Matthieu MoySep 17, 2015
  20. Junio C HamanoSep 17, 2015
  21. Matthieu MoySep 17, 2015
  22. Junio C HamanoSep 17, 2015
  23. Karthik NayakSep 17, 2015
  24. 4/8 branch: move 'current' check down to the presentation layerKarthik Nayak, Sep 13, 2015
  25. Matthieu MoySep 13, 2015
  26. Karthik NayakSep 13, 2015
  27. 4/8 branch: move 'current' check down to the presentation layerKarthik Nayak, Sep 13, 2015
  28. 5/8 branch: drop non-commit error reportingKarthik Nayak, Sep 13, 2015
  29. Junio C HamanoSep 14, 2015
  30. Karthik NayakSep 16, 2015
  31. 6/8 branch.c: use 'ref-filter' data structuresKarthik Nayak, Sep 13, 2015
  32. Matthieu MoySep 13, 2015
  33. Karthik NayakSep 13, 2015
  34. Matthieu MoySep 13, 2015
  35. 6/8 branch.c: use 'ref-filter' data structuresKarthik Nayak, Sep 13, 2015
  36. Karthik NayakSep 13, 2015
  37. 8/8 branch: add '--points-at' optionKarthik Nayak, Sep 13, 2015
  38. 7/8 branch.c: use 'ref-filter' APIsKarthik Nayak, Sep 13, 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.