diff --git a/Makefile b/Makefile index cea09f1..50d0011 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ VERSION: EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \ ui-summary.o ui-log.o ui-tree.o ui-commit.o ui-diff.o \ - ui-snapshot.o ui-blob.o + ui-snapshot.o ui-blob.o ui-tag.o CFLAGS += -Wall diff --git a/cgit.c b/cgit.c index 1281bfa..4b91829 100644 --- a/cgit.c +++ b/cgit.c @@ -101,6 +101,9 @@ static void cgit_print_repo_page(struct cacheitem *item) case CMD_COMMIT: cgit_print_commit(cgit_query_sha1); break; + case CMD_TAG: + cgit_print_tag(cgit_query_sha1); + break; case CMD_DIFF: cgit_print_diff(cgit_query_sha1, cgit_query_sha2); break; diff --git a/cgit.h b/cgit.h index 2ff5340..610a16d 100644 --- a/cgit.h +++ b/cgit.h @@ -27,7 +27,7 @@ #define CMD_TREE 4 #define CMD_BLOB 5 #define CMD_SNAPSHOT 6 - +#define CMD_TAG 7 /* * Dateformats used on misc. pages @@ -212,6 +212,8 @@ extern void cgit_commit_link(char *name, char *title, char *class, char *head, extern void cgit_diff_link(char *name, char *title, char *class, char *head, char *new_rev, char *old_rev, char *path); +extern void cgit_object_link(struct object *obj); + extern void cgit_print_error(char *msg); extern void cgit_print_date(time_t secs, char *format); extern void cgit_print_age(time_t t, time_t max_relative, char *format); @@ -228,6 +230,7 @@ extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char * extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); extern void cgit_print_tree(const char *rev, char *path); extern void cgit_print_commit(char *hex); +extern void cgit_print_tag(char *revname); extern void cgit_print_diff(const char *new_hex, const char *old_hex); extern void cgit_print_snapshot(struct cacheitem *item, const char *hex, const char *format, const char *prefix, diff --git a/shared.c b/shared.c index 1a5b866..06693b0 100644 --- a/shared.c +++ b/shared.c @@ -63,7 +63,7 @@ int htmlfd = 0; int cgit_get_cmd_index(const char *cmd) { static char *cmds[] = {"log", "commit", "diff", "tree", "blob", - "snapshot", NULL}; + "snapshot", "tag", NULL}; int i; for(i = 0; cmds[i]; i++) diff --git a/ui-shared.c b/ui-shared.c index d4376ce..fd71c12 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -218,6 +218,30 @@ void cgit_diff_link(char *name, char *title, char *class, char *head, html(""); } +void cgit_object_link(struct object *obj) +{ + char *page, *arg, *url; + + if (obj->type == OBJ_COMMIT) { + cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL, + cgit_query_head, sha1_to_hex(obj->sha1)); + return; + } else if (obj->type == OBJ_TREE) { + page = "tree"; + arg = "id"; + } else { + page = "blob"; + arg = "id"; + } + + url = cgit_pageurl(cgit_query_repo, page, + fmt("%s=%s", arg, sha1_to_hex(obj->sha1))); + html_link_open(url, NULL, NULL); + htmlf("%s %s", typename(obj->type), + sha1_to_hex(obj->sha1)); + html_link_close(); +} + void cgit_print_date(time_t secs, char *format) { char buf[64]; diff --git a/ui-summary.c b/ui-summary.c index b4bc6d8..de8a180 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -47,31 +47,6 @@ static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1, return 0; } - -static void cgit_print_object_ref(struct object *obj) -{ - char *page, *arg, *url; - - if (obj->type == OBJ_COMMIT) { - cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL, - cgit_query_head, sha1_to_hex(obj->sha1)); - return; - } else if (obj->type == OBJ_TREE) { - page = "tree"; - arg = "id"; - } else { - page = "view"; - arg = "id"; - } - - url = cgit_pageurl(cgit_query_repo, page, - fmt("%s=%s", arg, sha1_to_hex(obj->sha1))); - html_link_open(url, NULL, NULL); - htmlf("%s %s", typename(obj->type), - sha1_to_hex(obj->sha1)); - html_link_close(); -} - static void print_tag_header() { html("
Tag name | %s (%s) |
Tag date | "); + cgit_print_date(info->tagger_date, FMT_LONGDATE); + html(" |
Tagged by | "); + html_txt(info->tagger); + html(" |
Tagged object | "); + cgit_object_link(tag->tagged); + html(" |