author | Lars Hjemli <hjemli@gmail.com> | 2008-12-06 16:38:19 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-12-06 16:38:19 (UTC) |
commit | f86a23ff537258d36bf8f1876fa7a4bede6673d8 (patch) (unidiff) | |
tree | 8328d415416058cdc5b0fd2c6564ddcab5766c7a /cmd.c | |
parent | 140012d7a8e51df5a9f9c556696778b86ade4fc9 (diff) | |
download | cgit-f86a23ff537258d36bf8f1876fa7a4bede6673d8.zip cgit-f86a23ff537258d36bf8f1876fa7a4bede6673d8.tar.gz cgit-f86a23ff537258d36bf8f1876fa7a4bede6673d8.tar.bz2 |
Add a 'stats' page to each repo
This new page, which is disabled by default, can be used to print some
statistics about the number of commits per period in the repository,
where period can be either weeks, months, quarters or years.
The function can be activated globally by setting 'enable-stats=1' in
cgitrc and disabled for individual repos by setting 'repo.enable-stats=0'.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cmd.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -12,24 +12,25 @@ | |||
12 | #include "ui-shared.h" | 12 | #include "ui-shared.h" |
13 | #include "ui-atom.h" | 13 | #include "ui-atom.h" |
14 | #include "ui-blob.h" | 14 | #include "ui-blob.h" |
15 | #include "ui-clone.h" | 15 | #include "ui-clone.h" |
16 | #include "ui-commit.h" | 16 | #include "ui-commit.h" |
17 | #include "ui-diff.h" | 17 | #include "ui-diff.h" |
18 | #include "ui-log.h" | 18 | #include "ui-log.h" |
19 | #include "ui-patch.h" | 19 | #include "ui-patch.h" |
20 | #include "ui-plain.h" | 20 | #include "ui-plain.h" |
21 | #include "ui-refs.h" | 21 | #include "ui-refs.h" |
22 | #include "ui-repolist.h" | 22 | #include "ui-repolist.h" |
23 | #include "ui-snapshot.h" | 23 | #include "ui-snapshot.h" |
24 | #include "ui-stats.h" | ||
24 | #include "ui-summary.h" | 25 | #include "ui-summary.h" |
25 | #include "ui-tag.h" | 26 | #include "ui-tag.h" |
26 | #include "ui-tree.h" | 27 | #include "ui-tree.h" |
27 | 28 | ||
28 | static void HEAD_fn(struct cgit_context *ctx) | 29 | static void HEAD_fn(struct cgit_context *ctx) |
29 | { | 30 | { |
30 | cgit_clone_head(ctx); | 31 | cgit_clone_head(ctx); |
31 | } | 32 | } |
32 | 33 | ||
33 | static void atom_fn(struct cgit_context *ctx) | 34 | static void atom_fn(struct cgit_context *ctx) |
34 | { | 35 | { |
35 | cgit_print_atom(ctx->qry.head, ctx->qry.path, 10); | 36 | cgit_print_atom(ctx->qry.head, ctx->qry.path, 10); |
@@ -100,24 +101,32 @@ static void plain_fn(struct cgit_context *ctx) | |||
100 | static void refs_fn(struct cgit_context *ctx) | 101 | static void refs_fn(struct cgit_context *ctx) |
101 | { | 102 | { |
102 | cgit_print_refs(); | 103 | cgit_print_refs(); |
103 | } | 104 | } |
104 | 105 | ||
105 | static void snapshot_fn(struct cgit_context *ctx) | 106 | static void snapshot_fn(struct cgit_context *ctx) |
106 | { | 107 | { |
107 | cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1, | 108 | cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1, |
108 | cgit_repobasename(ctx->repo->url), ctx->qry.path, | 109 | cgit_repobasename(ctx->repo->url), ctx->qry.path, |
109 | ctx->repo->snapshots, ctx->qry.nohead); | 110 | ctx->repo->snapshots, ctx->qry.nohead); |
110 | } | 111 | } |
111 | 112 | ||
113 | static void stats_fn(struct cgit_context *ctx) | ||
114 | { | ||
115 | if (ctx->repo->enable_stats) | ||
116 | cgit_show_stats(ctx); | ||
117 | else | ||
118 | cgit_print_error("Stats disabled for this repo"); | ||
119 | } | ||
120 | |||
112 | static void summary_fn(struct cgit_context *ctx) | 121 | static void summary_fn(struct cgit_context *ctx) |
113 | { | 122 | { |
114 | cgit_print_summary(); | 123 | cgit_print_summary(); |
115 | } | 124 | } |
116 | 125 | ||
117 | static void tag_fn(struct cgit_context *ctx) | 126 | static void tag_fn(struct cgit_context *ctx) |
118 | { | 127 | { |
119 | cgit_print_tag(ctx->qry.sha1); | 128 | cgit_print_tag(ctx->qry.sha1); |
120 | } | 129 | } |
121 | 130 | ||
122 | static void tree_fn(struct cgit_context *ctx) | 131 | static void tree_fn(struct cgit_context *ctx) |
123 | { | 132 | { |
@@ -136,24 +145,25 @@ struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx) | |||
136 | def_cmd(blob, 1, 0), | 145 | def_cmd(blob, 1, 0), |
137 | def_cmd(commit, 1, 1), | 146 | def_cmd(commit, 1, 1), |
138 | def_cmd(diff, 1, 1), | 147 | def_cmd(diff, 1, 1), |
139 | def_cmd(info, 1, 0), | 148 | def_cmd(info, 1, 0), |
140 | def_cmd(log, 1, 1), | 149 | def_cmd(log, 1, 1), |
141 | def_cmd(ls_cache, 0, 0), | 150 | def_cmd(ls_cache, 0, 0), |
142 | def_cmd(objects, 1, 0), | 151 | def_cmd(objects, 1, 0), |
143 | def_cmd(patch, 1, 0), | 152 | def_cmd(patch, 1, 0), |
144 | def_cmd(plain, 1, 0), | 153 | def_cmd(plain, 1, 0), |
145 | def_cmd(refs, 1, 1), | 154 | def_cmd(refs, 1, 1), |
146 | def_cmd(repolist, 0, 0), | 155 | def_cmd(repolist, 0, 0), |
147 | def_cmd(snapshot, 1, 0), | 156 | def_cmd(snapshot, 1, 0), |
157 | def_cmd(stats, 1, 1), | ||
148 | def_cmd(summary, 1, 1), | 158 | def_cmd(summary, 1, 1), |
149 | def_cmd(tag, 1, 1), | 159 | def_cmd(tag, 1, 1), |
150 | def_cmd(tree, 1, 1), | 160 | def_cmd(tree, 1, 1), |
151 | }; | 161 | }; |
152 | int i; | 162 | int i; |
153 | 163 | ||
154 | if (ctx->qry.page == NULL) { | 164 | if (ctx->qry.page == NULL) { |
155 | if (ctx->repo) | 165 | if (ctx->repo) |
156 | ctx->qry.page = "summary"; | 166 | ctx->qry.page = "summary"; |
157 | else | 167 | else |
158 | ctx->qry.page = "repolist"; | 168 | ctx->qry.page = "repolist"; |
159 | } | 169 | } |