diff options
Diffstat (limited to 'ui-log.c')
-rw-r--r-- | ui-log.c | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -78,18 +78,31 @@ void print_commit(struct commit *commit) | |||
78 | cgit_free_commitinfo(info); | 78 | cgit_free_commitinfo(info); |
79 | } | 79 | } |
80 | 80 | ||
81 | static const char *disambiguate_ref(const char *ref) | ||
82 | { | ||
83 | unsigned char sha1[20]; | ||
84 | const char *longref; | ||
85 | |||
86 | longref = fmt("refs/heads/%s", ref); | ||
87 | if (get_sha1(longref, sha1) == 0) | ||
88 | return longref; | ||
89 | |||
90 | return ref; | ||
91 | } | ||
81 | 92 | ||
82 | void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, | 93 | void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, |
83 | char *path, int pager) | 94 | char *path, int pager) |
84 | { | 95 | { |
85 | struct rev_info rev; | 96 | struct rev_info rev; |
86 | struct commit *commit; | 97 | struct commit *commit; |
87 | const char *argv[] = {NULL, tip, NULL, NULL, NULL}; | 98 | const char *argv[] = {NULL, NULL, NULL, NULL, NULL}; |
88 | int argc = 2; | 99 | int argc = 2; |
89 | int i, columns = 3; | 100 | int i, columns = 3; |
90 | 101 | ||
91 | if (!tip) | 102 | if (!tip) |
92 | argv[1] = ctx.qry.head; | 103 | tip = ctx.qry.head; |
104 | |||
105 | argv[1] = disambiguate_ref(tip); | ||
93 | 106 | ||
94 | if (grep && pattern && (!strcmp(grep, "grep") || | 107 | if (grep && pattern && (!strcmp(grep, "grep") || |
95 | !strcmp(grep, "author") || | 108 | !strcmp(grep, "author") || |