]> gitweb.ps.run Git - ps-cgit/blobdiff - shared.c
log: allow users to follow a file
[ps-cgit] / shared.c
index 8ed14c0bdbcbf378dd2adc439e21f5895b6e4ac9..0431b59baf519442e80fbbed13df4ea3bdb56097 100644 (file)
--- a/shared.c
+++ b/shared.c
@@ -72,8 +72,10 @@ struct cgit_repo *cgit_add_repo(const char *url)
        ret->commit_filter = ctx.cfg.commit_filter;
        ret->source_filter = ctx.cfg.source_filter;
        ret->email_filter = ctx.cfg.email_filter;
        ret->commit_filter = ctx.cfg.commit_filter;
        ret->source_filter = ctx.cfg.source_filter;
        ret->email_filter = ctx.cfg.email_filter;
+       ret->owner_filter = ctx.cfg.owner_filter;
        ret->clone_url = ctx.cfg.clone_url;
        ret->submodules.strdup_strings = 1;
        ret->clone_url = ctx.cfg.clone_url;
        ret->submodules.strdup_strings = 1;
+       ret->hide = ret->ignore = 0;
        return ret;
 }
 
        return ret;
 }
 
@@ -84,6 +86,8 @@ struct cgit_repo *cgit_get_repoinfo(const char *url)
 
        for (i = 0; i < cgit_repolist.count; i++) {
                repo = &cgit_repolist.repos[i];
 
        for (i = 0; i < cgit_repolist.count; i++) {
                repo = &cgit_repolist.repos[i];
+               if (repo->ignore)
+                       continue;
                if (!strcmp(repo->url, url))
                        return repo;
        }
                if (!strcmp(repo->url, url))
                        return repo;
        }
@@ -181,13 +185,13 @@ void cgit_add_ref(struct reflist *list, struct refinfo *ref)
        list->refs[list->count++] = ref;
 }
 
        list->refs[list->count++] = ref;
 }
 
-static struct refinfo *cgit_mk_refinfo(const char *refname, const unsigned char *sha1)
+static struct refinfo *cgit_mk_refinfo(const char *refname, const struct object_id *oid)
 {
        struct refinfo *ref;
 
        ref = xmalloc(sizeof (struct refinfo));
        ref->refname = xstrdup(refname);
 {
        struct refinfo *ref;
 
        ref = xmalloc(sizeof (struct refinfo));
        ref->refname = xstrdup(refname);
-       ref->object = parse_object(sha1);
+       ref->object = parse_object(oid->hash);
        switch (ref->object->type) {
        case OBJ_TAG:
                ref->tag = cgit_parse_tag((struct tag *)ref->object);
        switch (ref->object->type) {
        case OBJ_TAG:
                ref->tag = cgit_parse_tag((struct tag *)ref->object);
@@ -235,19 +239,19 @@ void cgit_free_reflist_inner(struct reflist *list)
        free(list->refs);
 }
 
        free(list->refs);
 }
 
-int cgit_refs_cb(const char *refname, const unsigned char *sha1, int flags,
+int cgit_refs_cb(const char *refname, const struct object_id *oid, int flags,
                  void *cb_data)
 {
        struct reflist *list = (struct reflist *)cb_data;
                  void *cb_data)
 {
        struct reflist *list = (struct reflist *)cb_data;
-       struct refinfo *info = cgit_mk_refinfo(refname, sha1);
+       struct refinfo *info = cgit_mk_refinfo(refname, oid);
 
        if (info)
                cgit_add_ref(list, info);
        return 0;
 }
 
 
        if (info)
                cgit_add_ref(list, info);
        return 0;
 }
 
-static void cgit_diff_tree_cb(struct diff_queue_struct *q,
-                             struct diff_options *options, void *data)
+void cgit_diff_tree_cb(struct diff_queue_struct *q,
+                      struct diff_options *options, void *data)
 {
        int i;
 
 {
        int i;
 
@@ -280,8 +284,8 @@ static int load_mmfile(mmfile_t *file, const unsigned char *sha1)
  * ripped from git and modified to use globals instead of
  * a special callback-struct.
  */
  * ripped from git and modified to use globals instead of
  * a special callback-struct.
  */
-char *diffbuf = NULL;
-int buflen = 0;
+static char *diffbuf = NULL;
+static int buflen = 0;
 
 static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
 {
 
 static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
 {