aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgit.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index 540200e..d428019 100644
--- a/cgit.c
+++ b/cgit.c
@@ -587,7 +587,39 @@ static int prepare_repo_cmd(void)
* load local configuration from the git repository, so we do them both while
* the HOME variables are unset. */
setup_git_directory_gently(&nongit);
- init_display_notes(NULL);
+ if (get_git_namespace()) {
+ struct display_notes_opt opt = {
+ .use_default_notes = 0,
+ .extra_notes_refs = STRING_LIST_INIT_NODUP,
+ };
+ struct strbuf namespaced_note_ref = STRBUF_INIT;
+ struct strbuf glob_escaped = STRBUF_INIT;
+
+ strbuf_add(&namespaced_note_ref, get_git_namespace(),
+ strlen(get_git_namespace()));
+ strbuf_add(&namespaced_note_ref, "refs/notes/commits",
+ strlen("refs/notes/commits"));
+
+ if (ref_exists(namespaced_note_ref.buf)) {
+ if (has_glob_specials(namespaced_note_ref.buf)) {
+ for (const char *c = namespaced_note_ref.buf; *c; c++) {
+ if (is_glob_special(*c))
+ strbuf_addchars(&glob_escaped, '\\', 1);
+ strbuf_addchars(&glob_escaped, *c, 1);
+ }
+ string_list_append(&opt.extra_notes_refs, glob_escaped.buf);
+ } else {
+ string_list_append(&opt.extra_notes_refs, namespaced_note_ref.buf);
+ }
+ }
+
+ init_display_notes(&opt);
+ string_list_clear(&opt.extra_notes_refs, 1);
+ strbuf_release(&glob_escaped);
+ strbuf_release(&namespaced_note_ref);
+ } else {
+ init_display_notes(NULL);
+ }
if (nongit) {
const char *name = ctx.repo->name;