[PATCH v2 19/25] refs: add expand_ref()

2016-02-04 Thread Nguyễn Thái Ngọc Duy
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.

Signed-off-by: Nguyễn Thái Ngọc Duy 
---
 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);
 
-- 
2.7.0.377.g4cd97dd

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 19/25] refs: add expand_ref()

2016-02-08 Thread Junio C Hamano
Nguyễn Thái Ngọc Duy   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?

>
> Signed-off-by: Nguyễn Thái Ngọc Duy 
> ---
>  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);
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html