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

Re: [PATCH v2 09/24] refs: convert dwim_ref and expand_ref to struct object_id

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Oct 10, 2017, 02:03 UTC
Message-ID
<20171010020309.GQ19555@aiede.mtv.corp.google.com>
In-Reply-To
<20171009011132.675341-10-sandals@crustytoothpaste.net>
brian m. carlson wrote:
Show 22 quoted lines
> All of the callers of these functions just pass the hash member of a
> struct object_id, so convert them to use a pointer to struct object_id
> directly.
>
> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  archive.c             |  2 +-
>  branch.c              |  2 +-
>  builtin/fast-export.c |  2 +-
>  builtin/log.c         |  2 +-
>  builtin/merge-base.c  |  2 +-
>  builtin/merge.c       |  2 +-
>  builtin/rev-parse.c   |  2 +-
>  builtin/show-branch.c |  2 +-
>  bundle.c              |  2 +-
>  refs.c                | 14 +++++++-------
>  refs.h                |  4 ++--
>  remote.c              |  3 +--
>  sha1_name.c           |  6 +++---
>  upload-pack.c         |  2 +-
>  wt-status.c           |  2 +-
>  15 files changed, 24 insertions(+), 25 deletions(-)

One worry below. I might be worrying in vain but thought I might as well ask.

> --- a/refs.c
> +++ b/refs.c
[...]
Show 22 quoted lines
> -int expand_ref(const char *str, int len, unsigned char *sha1, char **ref)
> +int expand_ref(const char *str, int len, struct object_id *oid, char **ref)
>  {
>  	const char **p, *r;
>  	int refs_found = 0;
> @@ -472,15 +472,15 @@ int expand_ref(const char *str, int len, unsigned char *sha1, char **ref)
>  
>  	*ref = NULL;
>  	for (p = ref_rev_parse_rules; *p; p++) {
> -		unsigned char sha1_from_ref[20];
> -		unsigned char *this_result;
> +		struct object_id oid_from_ref;
> +		struct object_id *this_result;
>  		int flag;
>  
> -		this_result = refs_found ? sha1_from_ref : sha1;
> +		this_result = refs_found ? &oid_from_ref : oid;
>  		strbuf_reset(&fullref);
>  		strbuf_addf(&fullref, *p, len, str);
>  		r = resolve_ref_unsafe(fullref.buf, RESOLVE_REF_READING,
> -				       this_result, &flag);
> +				       this_result->hash, &flag);
Can this_result be NULL?  Can the oid param be NULL?
Since both this and dwim_ref are non-static functions, I'd be comforted by an
	if (!oid)
		BUG("expand_ref: oid must be non-NULL");
at the top so that mistakes in callers are caught quickly.
[...]
Show 10 quoted lines
> --- a/remote.c
> +++ b/remote.c
> @@ -1628,8 +1628,7 @@ static void set_merge(struct branch *ret)
>  		if (!remote_find_tracking(remote, ret->merge[i]) ||
>  		    strcmp(ret->remote_name, "."))
>  			continue;
> -		if (dwim_ref(ret->merge_name[i], strlen(ret->merge_name[i]),
> -			     oid.hash, &ref) == 1)
> +		if (dwim_ref(ret->merge_name[i], strlen(ret->merge_name[i]), &oid, &ref) == 1)
>  			ret->merge[i]->dst = ref;
Long line (but as discussed earlier in this series, I don't mind).

Thanks, Jonathan

Previous: brian m. carlsonNext: brian m. carlson
Message 15 of 53 in “object_id part 10”
  1. 00/24 object_id part 10brian m. carlson, Oct 9, 2017
  2. 01/24 walker: convert to struct object_idbrian m. carlson, Oct 9, 2017
  3. Jonathan NiederOct 9, 2017
  4. 03/24 refs: convert delete_ref and refs_delete_ref to struct object_idbrian m. carlson, Oct 9, 2017
  5. Jonathan NiederOct 9, 2017
  6. 02/24 refs/files-backend: convert struct ref_to_prune to object_idbrian m. carlson, Oct 9, 2017
  7. Jonathan NiederOct 9, 2017
  8. 04/24 refs: convert update_ref and refs_update_ref to use struct object_idbrian m. carlson, Oct 9, 2017
  9. Jonathan NiederOct 9, 2017
  10. Michael HaggertyOct 11, 2017
  11. brian m. carlsonOct 12, 2017
  12. 10/24 builtin/reflog: convert remaining unsigned char uses to object_idbrian m. carlson, Oct 9, 2017
  13. Jonathan NiederOct 10, 2017
  14. 09/24 refs: convert dwim_ref and expand_ref to struct object_idbrian m. carlson, Oct 9, 2017
  15. Jonathan NiederOct 10, 2017
  16. 12/24 pack-bitmap: convert traverse_bitmap_commit_list to object_idbrian m. carlson, Oct 9, 2017
  17. Jonathan NiederOct 10, 2017
  18. 18/24 Convert remaining callers of resolve_gitlink_ref to object_idbrian m. carlson, Oct 9, 2017
  19. 21/24 refs: convert resolve_ref_unsafe to struct object_idbrian m. carlson, Oct 9, 2017
  20. Michael HaggertyOct 11, 2017
  21. 24/24 refs/files-backend: convert static functions to object_idbrian m. carlson, Oct 9, 2017
  22. Michael HaggertyOct 11, 2017
  23. 22/24 refs: convert peel_object to struct object_idbrian m. carlson, Oct 9, 2017
  24. 23/24 refs: convert read_raw_ref backends to struct object_idbrian m. carlson, Oct 9, 2017
  25. Michael HaggertyOct 11, 2017
  26. 19/24 refs: convert resolve_gitlink_ref to struct object_idbrian m. carlson, Oct 9, 2017
  27. 20/24 worktree: convert struct worktree to object_idbrian m. carlson, Oct 9, 2017
  28. 15/24 refs: convert read_ref_at to struct object_idbrian m. carlson, Oct 9, 2017
  29. 14/24 refs: convert peel_ref to struct object_idbrian m. carlson, Oct 9, 2017
  30. Michael HaggertyOct 11, 2017
  31. 17/24 sha1_file: convert index_path and index_fd to struct object_idbrian m. carlson, Oct 9, 2017
  32. 13/24 builtin/pack-objects: convert to struct object_idbrian m. carlson, Oct 9, 2017
  33. Jonathan NiederOct 10, 2017
  34. 16/24 refs: convert reflog_expire parameter to struct object_idbrian m. carlson, Oct 9, 2017
  35. 08/24 refs: convert read_ref and read_ref_full to object_idbrian m. carlson, Oct 9, 2017
  36. Jonathan NiederOct 10, 2017
  37. 11/24 refs: convert dwim_log to struct object_idbrian m. carlson, Oct 9, 2017
  38. Jonathan NiederOct 10, 2017
  39. 07/24 refs: convert resolve_refdup and refs_resolve_refdup to struct object_idbrian m. carlson, Oct 9, 2017
  40. Jonathan NiederOct 9, 2017
  41. Junio C HamanoOct 10, 2017
  42. 05/24 refs: update ref transactions to use struct object_idbrian m. carlson, Oct 9, 2017
  43. Jonathan NiederOct 9, 2017
  44. Michael HaggertyOct 11, 2017
  45. 06/24 Convert check_connected to use struct object_idbrian m. carlson, Oct 9, 2017
  46. Jonathan NiederOct 9, 2017
  47. Stefan BellerOct 9, 2017
  48. Junio C HamanoOct 9, 2017
  49. Michael HaggertyOct 11, 2017
  50. Junio C HamanoOct 11, 2017
  51. brian m. carlsonOct 12, 2017
  52. Junio C HamanoOct 12, 2017
  53. brian m. carlsonOct 12, 2017

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.