path: root/refs.h
diff options
authorJeff King <>2009-04-07 07:14:20 (GMT)
committerJunio C Hamano <>2009-04-08 06:22:15 (GMT)
commit7c2b3029df45a74d0ebd11afcc94259791cfb90d (patch)
tree5c3888be7cb3dc41dbd6ef7d93a8b58f059a98ad /refs.h
parent8cae19d987b1bbd43258558f591e39d9d216dcb3 (diff)
make get_short_ref a public function
Often we want to shorten a full ref name to something "prettier" to show a user. For example, "refs/heads/master" is often shown simply as "master", or "refs/remotes/origin/master" is shown as "origin/master". Many places in the code use a very simple formula: skip common prefixes like refs/heads, refs/remotes, etc. This is codified in the prettify_ref function. for-each-ref has a more correct (but more expensive) approach: consider the ref lookup rules, and try shortening as much as possible while remaining unambiguous. This patch makes the latter strategy globally available as shorten_unambiguous_ref. Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'refs.h')
1 files changed, 1 insertions, 0 deletions
diff --git a/refs.h b/refs.h
index 68c2d16..2d0f961 100644
--- a/refs.h
+++ b/refs.h
@@ -80,6 +80,7 @@ extern int for_each_reflog(each_ref_fn, void *);
extern int check_ref_format(const char *target);
extern const char *prettify_ref(const struct ref *ref);
+extern char *shorten_unambiguous_ref(const char *ref);
/** rename ref, return 0 on success **/
extern int rename_ref(const char *oldref, const char *newref, const char *logmsg);