From: Baptiste Jonglez <[email protected]>
Even when HEAD is set to "main" in a repository, cgit still uses the
"master" branch to detect the age of the last commit.
Example:
$ cat repositories/openwrt/openwrt.git/HEAD
ref: refs/heads/main
$ stat repositories/openwrt/openwrt.git/refs/heads/master
Modify: 2024-02-22 23:00:01.285731731 +0000
$ stat repositories/openwrt/openwrt.git/refs/heads/main
Modify: 2026-02-27 15:33:49.506017172 +0000
In this situation, cgit displays "25 months" for this repository on the index
page.
I guess the internal format for HEAD has changed at some point, so it
needs to be taken into account when parsing it in cgit.
Signed-off-by: Baptiste Jonglez <[email protected]>
---
cgit.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cgit.c b/cgit.c
index c91897a..8df32e2 100644
--- a/cgit.c
+++ b/cgit.c
@@ -496,7 +496,7 @@ static char *guess_defbranch(void)
ref = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
"HEAD", 0, &oid, NULL);
- if (!ref || !skip_prefix(ref, "refs/heads/", &refname))
+ if (!ref || !skip_prefix(ref, "ref: refs/heads/", &refname))
return "master";
return xstrdup(refname);
}
--
2.47.3