Suggested by Pasky. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- Arjen reminded me on IRC that I worked off of dscho/master instead of junio/next... D'oh. sha1_name.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sha1_name.c b/sha1_name.c index 2f75179..cb4168d 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -5,6 +5,7 @@ #include "blob.h" #include "tree-walk.h" #include "refs.h" +#include "remote.h" static int find_short_object_filename(int len, const char *name, unsigned char *sha1) { @@ -240,9 +241,10 @@ static int ambiguous_path(const char *path, int len) /* * *string and *len will only be substituted, and *string returned (for - * later free()ing) if the string passed in is of the form @{-<n>}. + * later free()ing) if the string passed in is of the form @{-<n>} or + * of the form %<branch>. */ -static char *substitute_nth_last_branch(const char **string, int *len) +static char *substitute_branch(const char **string, int *len) { struct strbuf buf = STRBUF_INIT; int ret = interpret_nth_last_branch(*string, &buf); @@ -254,12 +256,23 @@ static char *substitute_nth_last_branch(const char **string, int *len) return (char *)*string; } + if (**string == '%') { + struct branch *tracking = branch_get((*string)[1] ? + (*string) + 1 : NULL); + + if (tracking->merge && tracking->merge[0]->dst) { + *string = xstrdup(tracking->merge[0]->dst); + *len = strlen(*string); + return (char *)*string; + } + } + return NULL; } int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref) { - char *last_branch = substitute_nth_last_branch(&str, &len); + char *last_branch = substitute_branch(&str, &len); const char **p, *r; int refs_found = 0; @@ -288,7 +301,7 @@ int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref) int dwim_log(const char *str, int len, unsigned char *sha1, char **log) { - char *last_branch = substitute_nth_last_branch(&str, &len); + char *last_branch = substitute_branch(&str, &len); const char **p; int logs_found = 0; -- 1.6.2.1.422.g885ce.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html