Add support for refs view

This enables the new urls $repo/refs, $repo/refs/heads and $repo/refs/tags,
which can be used to print _all_ branches and/or tags.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2007-10-27 10:36:53 +02:00
parent 8efb05f98a
commit 7937d06090
5 changed files with 37 additions and 2 deletions

View File

@ -16,7 +16,7 @@ GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2
EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto 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 \ 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-summary.o ui-log.o ui-tree.o ui-commit.o ui-diff.o \
ui-snapshot.o ui-blob.o ui-tag.o ui-snapshot.o ui-blob.o ui-tag.o ui-refs.o
.PHONY: all git install clean distclean force-version get-git .PHONY: all git install clean distclean force-version get-git

3
cgit.c
View File

@ -103,6 +103,9 @@ static void cgit_print_repo_page(struct cacheitem *item)
case CMD_COMMIT: case CMD_COMMIT:
cgit_print_commit(cgit_query_sha1); cgit_print_commit(cgit_query_sha1);
break; break;
case CMD_REFS:
cgit_print_refs();
break;
case CMD_TAG: case CMD_TAG:
cgit_print_tag(cgit_query_sha1); cgit_print_tag(cgit_query_sha1);
break; break;

2
cgit.h
View File

@ -28,6 +28,7 @@
#define CMD_BLOB 5 #define CMD_BLOB 5
#define CMD_SNAPSHOT 6 #define CMD_SNAPSHOT 6
#define CMD_TAG 7 #define CMD_TAG 7
#define CMD_REFS 8
/* /*
* Dateformats used on misc. pages * Dateformats used on misc. pages
@ -260,6 +261,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_blob(struct cacheitem *item, const char *hex, char *path);
extern void cgit_print_tree(const char *rev, char *path); extern void cgit_print_tree(const char *rev, char *path);
extern void cgit_print_commit(char *hex); extern void cgit_print_commit(char *hex);
extern void cgit_print_refs();
extern void cgit_print_tag(char *revname); extern void cgit_print_tag(char *revname);
extern void cgit_print_diff(const char *new_hex, const char *old_hex, const char *prefix); extern void cgit_print_diff(const char *new_hex, const char *old_hex, const char *prefix);
extern void cgit_print_snapshot(struct cacheitem *item, const char *head, extern void cgit_print_snapshot(struct cacheitem *item, const char *head,

View File

@ -66,7 +66,7 @@ int htmlfd = 0;
int cgit_get_cmd_index(const char *cmd) int cgit_get_cmd_index(const char *cmd)
{ {
static char *cmds[] = {"log", "commit", "diff", "tree", "blob", static char *cmds[] = {"log", "commit", "diff", "tree", "blob",
"snapshot", "tag", NULL}; "snapshot", "tag", "refs", NULL};
int i; int i;
for(i = 0; cmds[i]; i++) for(i = 0; cmds[i]; i++)

30
ui-refs.c Normal file
View File

@ -0,0 +1,30 @@
/* ui-refs.c: browse symbolic refs
*
* Copyright (C) 2006 Lars Hjemli
*
* Licensed under GNU General Public License v2
* (see COPYING for full license text)
*/
#include "cgit.h"
void cgit_print_refs()
{
html("<table class='list nowrap'>");
if (cgit_query_path && !strncmp(cgit_query_path, "heads", 5))
cgit_print_branches(0);
else if (cgit_query_path && !strncmp(cgit_query_path, "tags", 4))
cgit_print_tags(0);
else {
cgit_print_branches(0);
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
cgit_print_tags(0);
}
html("</table>");
}