aboutsummaryrefslogtreecommitdiffstats
path: root/cgit.c
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2012-03-18 21:00:18 +0000
committerLars Hjemli <hjemli@gmail.com>2012-03-18 21:00:18 +0000
commit181b6e789b79fc385e5ec75b2b83f01192d54051 (patch)
tree8888b5eb9c6674b69bcb8f508f9d6f548fc1fed3 /cgit.c
parentMerge branch 'lh/module-links' (diff)
parentui-repolist.c: fallback to "master" if no default branch is specified (diff)
downloadcgit-181b6e789b79fc385e5ec75b2b83f01192d54051.tar.xz
cgit-181b6e789b79fc385e5ec75b2b83f01192d54051.zip
Merge branch 'jp/defbranch'
Diffstat (limited to 'cgit.c')
-rw-r--r--cgit.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index 7e3d349..6a75f27 100644
--- a/cgit.c
+++ b/cgit.c
@@ -421,6 +421,17 @@ char *find_default_branch(struct cgit_repo *repo)
return ref;
}
+static char *guess_defbranch(const char *repo_path)
+{
+ const char *ref;
+ unsigned char sha1[20];
+
+ ref = resolve_ref("HEAD", sha1, 0, NULL);
+ if (!ref || prefixcmp(ref, "refs/heads/"))
+ return "master";
+ return xstrdup(ref + 11);
+}
+
static int prepare_repo_cmd(struct cgit_context *ctx)
{
char *tmp;
@@ -447,10 +458,12 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
}
ctx->page.title = fmt("%s - %s", ctx->repo->name, ctx->repo->desc);
+ if (!ctx->repo->defbranch)
+ ctx->repo->defbranch = guess_defbranch(ctx->repo->path);
+
if (!ctx->qry.head) {
ctx->qry.nohead = 1;
ctx->qry.head = find_default_branch(ctx->repo);
- ctx->repo->defbranch = ctx->qry.head;
}
if (!ctx->qry.head) {