aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules8
-rw-r--r--Makefile102
-rw-r--r--cgit.c36
-rw-r--r--cgit.css75
-rw-r--r--cgit.h47
-rw-r--r--cgitrc9
-rwxr-xr-xgen-version.sh20
m---------git0
-rw-r--r--parsing.c2
-rw-r--r--shared.c45
-rwxr-xr-xsubmodules.sh181
-rw-r--r--ui-commit.c78
-rw-r--r--ui-diff.c66
-rw-r--r--ui-log.c26
-rw-r--r--ui-repolist.c66
-rw-r--r--ui-shared.c234
-rw-r--r--ui-snapshot.c156
-rw-r--r--ui-summary.c49
-rw-r--r--ui-tag.c74
-rw-r--r--ui-tree.c213
-rw-r--r--ui-view.c55
22 files changed, 929 insertions, 614 deletions
diff --git a/.gitignore b/.gitignore
index c4c9ac3..5664962 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
1# Files I don't care to see in git-status/commit 1# Files I don't care to see in git-status/commit
2cgit 2cgit
3VERSION
3*.o 4*.o
4*~ 5*~
diff --git a/.gitmodules b/.gitmodules
index 51dd1ef..1daea94 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,5 +1,3 @@
1# This file maps a submodule path to an url from where the submodule 1[submodule "git"]
2# can be obtained. The script "submodules.sh" finds the url in this file 2 url = git://git.kernel.org/pub/scm/git/git.git
3# when invoked with -i to clone the submodules. 3 path = git
4
5git git://git.kernel.org/pub/scm/git/git.git
diff --git a/Makefile b/Makefile
index 57f80f8..fcbe3e4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,87 +1,71 @@
1CGIT_VERSION = 0.5 1CGIT_VERSION = v0.5
2
3prefix = /var/www/htdocs/cgit
4
5SHA1_HEADER = <openssl/sha.h>
6CACHE_ROOT = /var/cache/cgit
7CGIT_CONFIG = /etc/cgitrc
8CGIT_SCRIPT_NAME = cgit.cgi 2CGIT_SCRIPT_NAME = cgit.cgi
3CGIT_SCRIPT_PATH = /var/www/htdocs/cgit
4CGIT_CONFIG = /etc/cgitrc
5CACHE_ROOT = /var/cache/cgit
6SHA1_HEADER = <openssl/sha.h>
7GIT_VER = 1.5.2
8GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2
9 9
10# 10#
11# Let the user override the above settings. 11# Let the user override the above settings.
12# 12#
13-include cgit.conf 13-include cgit.conf
14 14
15
15EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto 16EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto
16OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \ 17OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \
17 ui-summary.o ui-log.o ui-view.o ui-tree.o ui-commit.o ui-diff.o \ 18 ui-summary.o ui-log.o ui-tree.o ui-commit.o ui-diff.o \
18 ui-snapshot.o ui-blob.o 19 ui-snapshot.o ui-blob.o ui-tag.o
20
21
22.PHONY: all git install clean distclean force-version get-git
19 23
20CFLAGS += -Wall 24all: cgit git
21 25
22ifdef DEBUG 26VERSION: force-version
23 CFLAGS += -g 27 @./gen-version.sh "$(CGIT_VERSION)"
24endif 28-include VERSION
25 29
26CFLAGS += -Igit 30
31CFLAGS += -g -Wall -Igit
27CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)' 32CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)'
28CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"' 33CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"'
29CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"' 34CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"'
30CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"' 35CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"'
31 36
32 37
33# 38cgit: cgit.c $(OBJECTS)
34# If make is run on a nongit platform, get the git sources as a tarball.
35#
36GITVER = $(shell git version 2>/dev/null || echo nogit)
37ifeq ($(GITVER),nogit)
38GITURL = http://www.kernel.org/pub/software/scm/git/git-1.5.2.tar.bz2
39INITGIT = test -e git/git.c || ((curl "$(GITURL)" | tar -xj) && mv git-1.5.2 git)
40else
41INITGIT = ./submodules.sh -i
42endif
43
44
45#
46# basic build rules
47#
48all: cgit
49
50cgit: cgit.c cgit.h $(OBJECTS)
51 $(CC) $(CFLAGS) cgit.c -o cgit $(OBJECTS) $(EXTLIBS) 39 $(CC) $(CFLAGS) cgit.c -o cgit $(OBJECTS) $(EXTLIBS)
52 40
53$(OBJECTS): cgit.h git/libgit.a 41$(OBJECTS): cgit.h git/xdiff/lib.a git/libgit.a VERSION
54 42
55git/libgit.a: 43git/xdiff/lib.a: | git
56 $(INITGIT)
57 $(MAKE) -C git
58 44
59# 45git/libgit.a: | git
60# phony targets
61#
62install: all clean-cache
63 mkdir -p $(prefix)
64 install cgit $(prefix)/$(CGIT_SCRIPT_NAME)
65 install cgit.css $(prefix)/cgit.css
66 46
67clean-cgit: 47git:
68 rm -f cgit *.o 48 cd git && $(MAKE) xdiff/lib.a
49 cd git && $(MAKE) libgit.a
69 50
70distclean-cgit: clean-cgit 51install: all
71 git clean -d -x 52 mkdir -p $(CGIT_SCRIPT_PATH)
72 53 install cgit $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
73clean-sub: 54 install cgit.css $(CGIT_SCRIPT_PATH)/cgit.css
74 $(MAKE) -C git clean
75
76distclean-sub: clean-sub
77 $(shell cd git && git clean -d -x)
78
79clean-cache:
80 rm -rf $(CACHE_ROOT)/* 55 rm -rf $(CACHE_ROOT)/*
81 56
82clean: clean-cgit clean-sub 57uninstall:
58 rm -f $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
59 rm -f $(CGIT_SCRIPT_PATH)/cgit.css
60 rm -rf $(CACHE_ROOT)
61
62clean:
63 rm -f cgit VERSION *.o
64 cd git && $(MAKE) clean
83 65
84distclean: distclean-cgit distclean-sub 66distclean: clean
67 git clean -d -x
68 cd git && git clean -d -x
85 69
86.PHONY: all install clean clean-cgit clean-sub clean-cache \ 70get-git:
87 distclean distclean-cgit distclean-sub 71 curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git
diff --git a/cgit.c b/cgit.c
index 34e590e..c86d290 100644
--- a/cgit.c
+++ b/cgit.c
@@ -8,9 +8,6 @@
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11const char cgit_version[] = CGIT_VERSION;
12
13
14static int cgit_prepare_cache(struct cacheitem *item) 11static int cgit_prepare_cache(struct cacheitem *item)
15{ 12{
16 if (!cgit_repo && cgit_query_repo) { 13 if (!cgit_repo && cgit_query_repo) {
@@ -29,13 +26,15 @@ static int cgit_prepare_cache(struct cacheitem *item)
29 } 26 }
30 27
31 if (!cgit_cmd) { 28 if (!cgit_cmd) {
32 item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, 29 item->name = xstrdup(fmt("%s/%s/index.%s.html", cgit_cache_root,
33 cache_safe_filename(cgit_repo->url))); 30 cache_safe_filename(cgit_repo->url),
31 cache_safe_filename(cgit_querystring)));
34 item->ttl = cgit_cache_repo_ttl; 32 item->ttl = cgit_cache_repo_ttl;
35 } else { 33 } else {
36 item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, 34 item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root,
37 cache_safe_filename(cgit_repo->url), cgit_query_page, 35 cache_safe_filename(cgit_repo->url),
38 cache_safe_filename(cgit_querystring))); 36 cgit_query_page,
37 cache_safe_filename(cgit_querystring)));
39 if (cgit_query_has_symref) 38 if (cgit_query_has_symref)
40 item->ttl = cgit_cache_dynamic_ttl; 39 item->ttl = cgit_cache_dynamic_ttl;
41 else if (cgit_query_has_sha1) 40 else if (cgit_query_has_sha1)
@@ -69,8 +68,10 @@ static void cgit_print_repo_page(struct cacheitem *item)
69 setenv("GIT_DIR", cgit_repo->path, 1); 68 setenv("GIT_DIR", cgit_repo->path, 1);
70 69
71 if ((cgit_cmd == CMD_SNAPSHOT) && cgit_repo->snapshots) { 70 if ((cgit_cmd == CMD_SNAPSHOT) && cgit_repo->snapshots) {
72 cgit_print_snapshot(item, cgit_query_sha1, "zip", 71 cgit_print_snapshot(item, cgit_query_head, cgit_query_sha1,
73 cgit_repo->url, cgit_query_name); 72 cgit_repobasename(cgit_repo->url),
73 cgit_query_path,
74 cgit_repo->snapshots );
74 return; 75 return;
75 } 76 }
76 77
@@ -92,22 +93,21 @@ static void cgit_print_repo_page(struct cacheitem *item)
92 93
93 switch(cgit_cmd) { 94 switch(cgit_cmd) {
94 case CMD_LOG: 95 case CMD_LOG:
95 cgit_print_log(cgit_query_head, cgit_query_ofs, 96 cgit_print_log(cgit_query_sha1, cgit_query_ofs,
96 cgit_max_commit_count, cgit_query_search, 97 cgit_max_commit_count, cgit_query_search,
97 cgit_query_path, 1); 98 cgit_query_path, 1);
98 break; 99 break;
99 case CMD_TREE: 100 case CMD_TREE:
100 cgit_print_tree(cgit_query_head, cgit_query_sha1, cgit_query_path); 101 cgit_print_tree(cgit_query_sha1, cgit_query_path);
101 break; 102 break;
102 case CMD_COMMIT: 103 case CMD_COMMIT:
103 cgit_print_commit(cgit_query_head); 104 cgit_print_commit(cgit_query_sha1);
104 break; 105 break;
105 case CMD_VIEW: 106 case CMD_TAG:
106 cgit_print_view(cgit_query_sha1, cgit_query_path); 107 cgit_print_tag(cgit_query_sha1);
107 break; 108 break;
108 case CMD_DIFF: 109 case CMD_DIFF:
109 cgit_print_diff(cgit_query_head, cgit_query_sha1, cgit_query_sha2, 110 cgit_print_diff(cgit_query_sha1, cgit_query_sha2);
110 cgit_query_path);
111 break; 111 break;
112 default: 112 default:
113 cgit_print_error("Invalid request"); 113 cgit_print_error("Invalid request");
@@ -227,6 +227,7 @@ static void cgit_parse_args(int argc, const char **argv)
227int main(int argc, const char **argv) 227int main(int argc, const char **argv)
228{ 228{
229 struct cacheitem item; 229 struct cacheitem item;
230 const char *cgit_config_env = getenv("CGIT_CONFIG");
230 231
231 htmlfd = STDOUT_FILENO; 232 htmlfd = STDOUT_FILENO;
232 item.st.st_mtime = time(NULL); 233 item.st.st_mtime = time(NULL);
@@ -234,7 +235,8 @@ int main(int argc, const char **argv)
234 cgit_repolist.count = 0; 235 cgit_repolist.count = 0;
235 cgit_repolist.repos = NULL; 236 cgit_repolist.repos = NULL;
236 237
237 cgit_read_config(CGIT_CONFIG, cgit_global_config_cb); 238 cgit_read_config(cgit_config_env ? cgit_config_env : CGIT_CONFIG,
239 cgit_global_config_cb);
238 cgit_repo = NULL; 240 cgit_repo = NULL;
239 if (getenv("SCRIPT_NAME")) 241 if (getenv("SCRIPT_NAME"))
240 cgit_script_name = xstrdup(getenv("SCRIPT_NAME")); 242 cgit_script_name = xstrdup(getenv("SCRIPT_NAME"));
diff --git a/cgit.css b/cgit.css
index 8977533..54bbfcc 100644
--- a/cgit.css
+++ b/cgit.css
@@ -1,6 +1,7 @@
1body { 1body {
2 font-family: arial; 2 font-family: arial, sans-serif;
3 font-size: 11pt; 3 font-size: 11pt;
4 color: black;
4 background: white; 5 background: white;
5} 6}
6 7
@@ -94,6 +95,14 @@ td#header {
94 vertical-align: text-bottom; 95 vertical-align: text-bottom;
95} 96}
96 97
98td#header a {
99 color: #666;
100}
101
102td#header a:hoved {
103 text-decoration: underline;
104}
105
97td#logo { 106td#logo {
98 text-align: right; 107 text-align: right;
99 vertical-align: middle; 108 vertical-align: middle;
@@ -114,15 +123,19 @@ td#crumb {
114 123
115td#crumb a { 124td#crumb a {
116 color: #ccc; 125 color: #ccc;
126 background-color: #666;
127 padding: 0em 0.5em 0em 0.5em;
117} 128}
118 129
119td#crumb a:hover { 130td#crumb a:hover {
120 color: #eee; 131 color: #666;
132 background-color: #ccc;
133 text-decoration: none;
121} 134}
122 135
123td#search { 136td#search {
124 text-align: right; 137 text-align: right;
125 vertical-align: center; 138 vertical-align: middle;
126 padding-right: 0.5em; 139 padding-right: 0.5em;
127} 140}
128 141
@@ -171,35 +184,47 @@ div.error {
171 margin: 1em 2em; 184 margin: 1em 2em;
172} 185}
173 186
174td.ls-blob, td.ls-dir, td.ls-mod { 187a.ls-blob, a.ls-dir, a.ls-mod {
175 font-family: monospace; 188 font-family: monospace;
176} 189}
177 190
178div.ls-dir a { 191td.ls-size {
179 font-weight: bold; 192 text-align: right;
180} 193}
181 194
182th.filesize, td.filesize { 195td.ls-size {
183 text-align: right; 196 font-family: monospace;
184} 197}
185 198
186td.filesize { 199td.ls-mode {
187 font-family: monospace; 200 font-family: monospace;
188} 201}
189 202
190td.links { 203table.blob {
191 font-size: 80%; 204 margin-top: 0.5em;
192 padding-left: 2em; 205 border-top: solid 1px black;
193} 206}
194 207
195td.filemode { 208table.blob td.no {
196 font-family: monospace; 209 border-right: solid 1px black;
210 color: black;
211 background-color: #eee;
212 text-align: right;
213}
214
215table.blob td.no a {
216 color: black;
197} 217}
198 218
199td.blob { 219table.blob td.no a:hover {
220 color: black;
221 text-decoration: none;
222}
223
224table.blob td.txt {
200 white-space: pre; 225 white-space: pre;
201 font-family: monospace; 226 font-family: monospace;
202 background-color: white; 227 padding-left: 0.5em;
203} 228}
204 229
205table.nowrap td { 230table.nowrap td {
@@ -215,6 +240,7 @@ table.commit-info th {
215 text-align: left; 240 text-align: left;
216 font-weight: normal; 241 font-weight: normal;
217 padding: 0.1em 1em 0.1em 0.1em; 242 padding: 0.1em 1em 0.1em 0.1em;
243 vertical-align: top;
218} 244}
219 245
220table.commit-info td { 246table.commit-info td {
@@ -287,7 +313,7 @@ table.diffstat td.upd a {
287 313
288table.diffstat td.graph { 314table.diffstat td.graph {
289 width: 75%; 315 width: 75%;
290 vertical-align: center; 316 vertical-align: middle;
291} 317}
292 318
293table.diffstat td.graph table { 319table.diffstat td.graph table {
@@ -308,10 +334,6 @@ table.diffstat td.graph td.rem {
308 background-color: #c55; 334 background-color: #c55;
309} 335}
310 336
311table.diffstat td.graph td.none {
312 background-color: none;
313}
314
315div.diffstat-summary { 337div.diffstat-summary {
316 color: #888; 338 color: #888;
317 padding-top: 0.5em; 339 padding-top: 0.5em;
@@ -340,7 +362,7 @@ table.diff td div.del {
340} 362}
341 363
342.sha1 { 364.sha1 {
343 font-family: courier; 365 font-family: monospace;
344 font-size: 90%; 366 font-size: 90%;
345} 367}
346 368
@@ -359,16 +381,17 @@ table.list td.repogroup {
359 381
360a.button { 382a.button {
361 font-size: 80%; 383 font-size: 80%;
362 color: #333; 384 color: #aaa;
363 background-color: #ccc; 385 background-color: #eee;
364 border: solid 1px #999; 386 border: solid 1px #aaa;
365 padding: 0em 0.5em; 387 padding: 0em 0.5em;
366 margin: 0.1em 0.25em; 388 margin: 0.1em 0.25em;
367} 389}
368 390
369a.button:hover { 391a.button:hover {
370 text-decoration: none; 392 text-decoration: none;
371 background-color: #eee; 393 color: #333;
394 background-color: #ccc;
372} 395}
373 396
374a.primary { 397a.primary {
diff --git a/cgit.h b/cgit.h
index 2f3fca1..e3d9cb8 100644
--- a/cgit.h
+++ b/cgit.h
@@ -25,10 +25,9 @@
25#define CMD_COMMIT 2 25#define CMD_COMMIT 2
26#define CMD_DIFF 3 26#define CMD_DIFF 3
27#define CMD_TREE 4 27#define CMD_TREE 4
28#define CMD_VIEW 5 28#define CMD_BLOB 5
29#define CMD_BLOB 6 29#define CMD_SNAPSHOT 6
30#define CMD_SNAPSHOT 7 30#define CMD_TAG 7
31
32 31
33/* 32/*
34 * Dateformats used on misc. pages 33 * Dateformats used on misc. pages
@@ -99,7 +98,7 @@ struct taginfo {
99 char *msg; 98 char *msg;
100}; 99};
101 100
102extern const char cgit_version[]; 101extern const char *cgit_version;
103 102
104extern struct repolist cgit_repolist; 103extern struct repolist cgit_repolist;
105extern struct repoinfo *cgit_repo; 104extern struct repoinfo *cgit_repo;
@@ -119,6 +118,7 @@ extern char *cgit_repo_group;
119 118
120extern int cgit_nocache; 119extern int cgit_nocache;
121extern int cgit_snapshots; 120extern int cgit_snapshots;
121extern int cgit_enable_index_links;
122extern int cgit_enable_log_filecount; 122extern int cgit_enable_log_filecount;
123extern int cgit_enable_log_linecount; 123extern int cgit_enable_log_linecount;
124extern int cgit_max_lock_attempts; 124extern int cgit_max_lock_attempts;
@@ -157,8 +157,10 @@ extern void cgit_querystring_cb(const char *name, const char *value);
157 157
158extern int chk_zero(int result, char *msg); 158extern int chk_zero(int result, char *msg);
159extern int chk_positive(int result, char *msg); 159extern int chk_positive(int result, char *msg);
160extern int chk_non_negative(int result, char *msg);
160 161
161extern int hextoint(char c); 162extern int hextoint(char c);
163extern char *trim_end(const char *str, char c);
162 164
163extern void *cgit_free_commitinfo(struct commitinfo *info); 165extern void *cgit_free_commitinfo(struct commitinfo *info);
164 166
@@ -199,9 +201,26 @@ extern int cache_exist(struct cacheitem *item);
199extern int cache_expired(struct cacheitem *item); 201extern int cache_expired(struct cacheitem *item);
200 202
201extern char *cgit_repourl(const char *reponame); 203extern char *cgit_repourl(const char *reponame);
204extern char *cgit_fileurl(const char *reponame, const char *pagename,
205 const char *filename, const char *query);
202extern char *cgit_pageurl(const char *reponame, const char *pagename, 206extern char *cgit_pageurl(const char *reponame, const char *pagename,
203 const char *query); 207 const char *query);
204 208
209extern const char *cgit_repobasename(const char *reponame);
210
211extern void cgit_tree_link(char *name, char *title, char *class, char *head,
212 char *rev, char *path);
213extern void cgit_log_link(char *name, char *title, char *class, char *head,
214 char *rev, char *path, int ofs);
215extern void cgit_commit_link(char *name, char *title, char *class, char *head,
216 char *rev);
217extern void cgit_snapshot_link(char *name, char *title, char *class,
218 char *head, char *rev, char *archivename);
219extern void cgit_diff_link(char *name, char *title, char *class, char *head,
220 char *new_rev, char *old_rev, char *path);
221
222extern void cgit_object_link(struct object *obj);
223
205extern void cgit_print_error(char *msg); 224extern void cgit_print_error(char *msg);
206extern void cgit_print_date(time_t secs, char *format); 225extern void cgit_print_date(time_t secs, char *format);
207extern void cgit_print_age(time_t t, time_t max_relative, char *format); 226extern void cgit_print_age(time_t t, time_t max_relative, char *format);
@@ -215,14 +234,16 @@ extern void cgit_print_snapshot_start(const char *mimetype,
215extern void cgit_print_repolist(struct cacheitem *item); 234extern void cgit_print_repolist(struct cacheitem *item);
216extern void cgit_print_summary(); 235extern void cgit_print_summary();
217extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager); 236extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager);
218extern void cgit_print_view(const char *hex, char *path);
219extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); 237extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path);
220extern void cgit_print_tree(const char *rev, const char *hex, char *path); 238extern void cgit_print_tree(const char *rev, char *path);
221extern void cgit_print_commit(const char *hex); 239extern void cgit_print_commit(char *hex);
222extern void cgit_print_diff(const char *head, const char *old_hex, const char *new_hex, 240extern void cgit_print_tag(char *revname);
223 char *path); 241extern void cgit_print_diff(const char *new_hex, const char *old_hex);
224extern void cgit_print_snapshot(struct cacheitem *item, const char *hex, 242extern void cgit_print_snapshot(struct cacheitem *item, const char *head,
225 const char *format, const char *prefix, 243 const char *hex, const char *prefix,
226 const char *filename); 244 const char *filename, int snapshot);
245extern void cgit_print_snapshot_links(const char *repo, const char *head,
246 const char *hex, int snapshots);
247extern int cgit_parse_snapshots_mask(const char *str);
227 248
228#endif /* CGIT_H */ 249#endif /* CGIT_H */
diff --git a/cgitrc b/cgitrc
index 0f602e4..1040997 100644
--- a/cgitrc
+++ b/cgitrc
@@ -8,10 +8,15 @@
8#nocache=0 8#nocache=0
9 9
10 10
11## Enable/disable snapshots by default. This can be overridden per repo 11## Set allowed snapshot types by default. Can be overridden per repo
12# can be any combination of zip/tar.gz/tar.bz2/tar
12#snapshots=0 13#snapshots=0
13 14
14 15
16## Enable/disable extra links to summary/log/tree per repo on index page
17#enable-index-links=0
18
19
15## Enable/disable display of 'number of files changed' in log view 20## Enable/disable display of 'number of files changed' in log view
16#enable-log-filecount=0 21#enable-log-filecount=0
17 22
@@ -109,7 +114,7 @@
109#repo.desc=the caching cgi for git 114#repo.desc=the caching cgi for git
110#repo.path=/pub/git/cgit 115#repo.path=/pub/git/cgit
111#repo.owner=Lars Hjemli 116#repo.owner=Lars Hjemli
112#repo.snapshots=1 # override a sitewide snapshot-setting 117#repo.snapshots=tar.bz2 # override a sitewide snapshot-setting
113#repo.enable-log-filecount=0 # override the default filecount setting 118#repo.enable-log-filecount=0 # override the default filecount setting
114#repo.enable-log-linecount=0 # override the default linecount setting 119#repo.enable-log-linecount=0 # override the default linecount setting
115#repo.module-link=/git/%s/commit/?id=%s # override the standard module-link 120#repo.module-link=/git/%s/commit/?id=%s # override the standard module-link
diff --git a/gen-version.sh b/gen-version.sh
new file mode 100755
index 0000000..739c83e
--- /dev/null
+++ b/gen-version.sh
@@ -0,0 +1,20 @@
1#!/bin/sh
2
3# Get version-info specified in Makefile
4V=$1
5
6# Use `git describe` to get current version if we're inside a git repo
7if test -d .git
8then
9 V=$(git describe --abbrev=4 HEAD 2>/dev/null | sed -e 's/-/./g')
10fi
11
12new="CGIT_VERSION = $V"
13old=$(cat VERSION 2>/dev/null)
14
15# Exit if VERSION is uptodate
16test "$old" = "$new" && exit 0
17
18# Update VERSION with new version-info
19echo "$new" > VERSION<