Re: [PATCH v2 19/25] refs: add expand_ref()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 8, 2016, 21:27 UTC
- Message-ID
- <xmqqegcm7v0k.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <1454576641-29615-20-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
> This is basically dwim_ref() without @{} support. To be used on the
> server side where we want to expand abbreviated to full ref names and
> nothing else.It is unclear why we want to have such an expansion on the server, though. That is something this commit needs to justify, isn't it?
Show 44 quoted lines
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> refs.c | 8 +++++++-
> refs.h | 1 +
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/refs.c b/refs.c
> index e2d34b2..842e4d8 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -392,6 +392,13 @@ static char *substitute_branch_name(const char **string, int *len)
> int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref)
> {
> char *last_branch = substitute_branch_name(&str, &len);
> + int refs_found = expand_ref(str, len, sha1, ref);
> + free(last_branch);
> + return refs_found;
> +}
> +
> +int expand_ref(const char *str, int len, unsigned char *sha1, char **ref)
> +{
> const char **p, *r;
> int refs_found = 0;
>
> @@ -417,7 +424,6 @@ int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref)
> warning("ignoring broken ref %s.", fullref);
> }
> }
> - free(last_branch);
> return refs_found;
> }
>
> diff --git a/refs.h b/refs.h
> index 3c3da29..31a2fa6 100644
> --- a/refs.h
> +++ b/refs.h
> @@ -90,6 +90,7 @@ extern int resolve_gitlink_ref(const char *path, const char *refname, unsigned c
> */
> extern int refname_match(const char *abbrev_name, const char *full_name);
>
> +extern int expand_ref(const char *str, int len, unsigned char *sha1, char **ref);
> extern int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref);
> extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);