Signed-off-by: Jason A. Donenfeld <[email protected]>
---
 cgit.c       |  4 ++++
 cgit.h       |  1 +
 cgitrc.5.txt | 13 ++++++++-----
 scan-tree.c  |  2 ++
 shared.c     |  1 +
 ui-shared.c  |  5 +++++
 6 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/cgit.c b/cgit.c
index 7f83a2d..fc482be 100644
--- a/cgit.c
+++ b/cgit.c
@@ -41,6 +41,8 @@ static void repo_config(struct cgit_repo *repo, const char 
*name, const char *va
                repo->desc = xstrdup(value);
        else if (!strcmp(name, "owner"))
                repo->owner = xstrdup(value);
+       else if (!strcmp(name, "homepage"))
+               repo->homepage = xstrdup(value);
        else if (!strcmp(name, "defbranch"))
                repo->defbranch = xstrdup(value);
        else if (!strcmp(name, "snapshots"))
@@ -793,6 +795,8 @@ static void print_repo(FILE *f, struct cgit_repo *repo)
                fprintf(f, "repo.module-link=%s\n", repo->module_link);
        if (repo->section)
                fprintf(f, "repo.section=%s\n", repo->section);
+       if (repo->homepage)
+               fprintf(f, "repo.homepage=%s\n", repo->homepage);
        if (repo->clone_url)
                fprintf(f, "repo.clone-url=%s\n", repo->clone_url);
        fprintf(f, "repo.enable-commit-graph=%d\n",
diff --git a/cgit.h b/cgit.h
index d10c799..325432b 100644
--- a/cgit.h
+++ b/cgit.h
@@ -81,6 +81,7 @@ struct cgit_repo {
        char *path;
        char *desc;
        char *owner;
+       char *homepage;
        char *defbranch;
        char *module_link;
        struct string_list readme;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 47850a8..94901bd 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -205,11 +205,11 @@ enable-git-config::
        Flag which, when set to "1", will allow cgit to use git config to set
        any repo specific settings. This option is used in conjunction with
        "scan-path", and must be defined prior, to augment repo-specific
-       settings. The keys gitweb.owner, gitweb.category, and gitweb.description
-       will map to the cgit keys repo.owner, repo.section, and repo.desc,
-       respectively. All git config keys that begin with "cgit." will be mapped
-       to the corresponding "repo." key in cgit. Default value: "0". See also:
-       scan-path, section-from-path.
+       settings. The keys gitweb.owner, gitweb.category, gitweb.description,
+       and gitweb.homepage will map to the cgit keys repo.owner, repo.section,
+       repo.desc, and repo.homepage respectively. All git config keys that 
begin
+       with "cgit." will be mapped to the corresponding "repo." key in cgit.
+       Default value: "0". See also: scan-path, section-from-path.
 
 favicon::
        Url used as link to a shortcut icon for cgit. It is suggested to use
@@ -496,6 +496,9 @@ repo.defbranch::
 repo.desc::
        The value to show as repository description. Default value: none.
 
+repo.homepage::
+       The value to show as repository homepage. Default value: none.
+
 repo.email-filter::
        Override the default email-filter. Default value: none. See also:
        "enable-filter-overrides". See also: "FILTER API".
diff --git a/scan-tree.c b/scan-tree.c
index b5a10ff..2e87999 100644
--- a/scan-tree.c
+++ b/scan-tree.c
@@ -61,6 +61,8 @@ static int gitconfig_config(const char *key, const char 
*value, void *cb)
                config_fn(repo, "desc", value);
        else if (!strcmp(key, "gitweb.category"))
                config_fn(repo, "section", value);
+       else if (!strcmp(key, "gitweb.homepage"))
+               config_fn(repo, "homepage", value);
        else if (starts_with(key, "cgit."))
                config_fn(repo, key + 5, value);
 
diff --git a/shared.c b/shared.c
index a078a27..a63633b 100644
--- a/shared.c
+++ b/shared.c
@@ -54,6 +54,7 @@ struct cgit_repo *cgit_add_repo(const char *url)
        ret->path = NULL;
        ret->desc = cgit_default_repo_desc;
        ret->owner = NULL;
+       ret->homepage = NULL;
        ret->section = ctx.cfg.section;
        ret->snapshots = ctx.cfg.snapshots;
        ret->enable_commit_graph = ctx.cfg.enable_commit_graph;
diff --git a/ui-shared.c b/ui-shared.c
index 03dcc08..8c2d851 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -997,6 +997,11 @@ void cgit_print_pageheader(void)
                if (ctx.repo->max_stats)
                        cgit_stats_link("stats", NULL, hc("stats"),
                                        ctx.qry.head, ctx.qry.vpath);
+               if (ctx.repo->homepage) {
+                       html("<a href='");
+                       html_attr(ctx.repo->homepage);
+                       html("' target='_blank'>homepage &#x27a6;</a>");
+               }
                html("</td><td class='form'>");
                html("<form class='right' method='get' action='");
                if (ctx.cfg.virtual_root) {
-- 
2.7.1

_______________________________________________
CGit mailing list
[email protected]
http://lists.zx2c4.com/mailman/listinfo/cgit

Reply via email to