summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--Makefile66
-rw-r--r--cgit.css14
-rw-r--r--cgitrc.5.txt10
m---------git0
-rw-r--r--ui-stats.c2
5 files changed, 77 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index 31d88ef..a988751 100644
--- a/Makefile
+++ b/Makefile
@@ -1,58 +1,70 @@
1CGIT_VERSION = v0.8.3.4 1CGIT_VERSION = v0.8.3.4
2CGIT_SCRIPT_NAME = cgit.cgi 2CGIT_SCRIPT_NAME = cgit.cgi
3CGIT_SCRIPT_PATH = /var/www/htdocs/cgit 3CGIT_SCRIPT_PATH = /var/www/htdocs/cgit
4CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH) 4CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH)
5CGIT_CONFIG = /etc/cgitrc 5CGIT_CONFIG = /etc/cgitrc
6CACHE_ROOT = /var/cache/cgit 6CACHE_ROOT = /var/cache/cgit
7prefix = /usr
8libdir = $(prefix)/lib
9filterdir = $(libdir)/cgit/filters
10docdir = $(prefix)/share/doc/cgit
11htmldir = $(docdir)
12pdfdir = $(docdir)
13mandir = $(prefix)/share/man
7SHA1_HEADER = <openssl/sha.h> 14SHA1_HEADER = <openssl/sha.h>
8GIT_VER = 1.7.3 15GIT_VER = 1.7.4
9GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 16GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2
10INSTALL = install 17INSTALL = install
18MAN5_TXT = $(wildcard *.5.txt)
19MAN_TXT = $(MAN5_TXT)
20DOC_MAN5 = $(patsubst %.txt,%,$(MAN5_TXT))
21DOC_HTML = $(patsubst %.txt,%.html,$(MAN_TXT))
22DOC_PDF = $(patsubst %.txt,%.pdf,$(MAN_TXT))
11 23
12# Define NO_STRCASESTR if you don't have strcasestr. 24# Define NO_STRCASESTR if you don't have strcasestr.
13# 25#
14# Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1 26# Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1
15# implementation (slower). 27# implementation (slower).
16# 28#
17# Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin). 29# Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin).
18# 30#
19# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.) 31# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.)
20# do not support the 'size specifiers' introduced by C99, namely ll, hh, 32# do not support the 'size specifiers' introduced by C99, namely ll, hh,
21# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t). 33# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t).
22# some C compilers supported these specifiers prior to C99 as an extension. 34# some C compilers supported these specifiers prior to C99 as an extension.
23# 35#
24 36
25#-include config.mak 37#-include config.mak
26 38
27# 39#
28# Platform specific tweaks 40# Platform specific tweaks
29# 41#
30 42
31uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') 43uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
32uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not') 44uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
33uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not') 45uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
34 46
35ifeq ($(uname_O),Cygwin) 47ifeq ($(uname_O),Cygwin)
36 NO_STRCASESTR = YesPlease 48 NO_STRCASESTR = YesPlease
37 NEEDS_LIBICONV = YesPlease 49 NEEDS_LIBICONV = YesPlease
38endif 50endif
39 51
40# 52#
41# Let the user override the above settings. 53# Let the user override the above settings.
42# 54#
43-include cgit.conf 55-include cgit.conf
44 56
45# 57#
46# Define a way to invoke make in subdirs quietly, shamelessly ripped 58# Define a way to invoke make in subdirs quietly, shamelessly ripped
47# from git.git 59# from git.git
48# 60#
49QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir 61QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
50QUIET_SUBDIR1 = 62QUIET_SUBDIR1 =
51 63
52ifneq ($(findstring $(MAKEFLAGS),w),w) 64ifneq ($(findstring $(MAKEFLAGS),w),w)
53PRINT_DIR = --no-print-directory 65PRINT_DIR = --no-print-directory
54else # "make -w" 66else # "make -w"
55NO_SUBDIR = : 67NO_SUBDIR = :
56endif 68endif
57 69
58ifndef V 70ifndef V
@@ -66,129 +78,167 @@ endif
66# 78#
67# Define a pattern rule for automatic dependency building 79# Define a pattern rule for automatic dependency building
68# 80#
69%.d: %.c 81%.d: %.c
70 $(QUIET_MM)$(CC) $(CFLAGS) -MM -MP $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@ 82 $(QUIET_MM)$(CC) $(CFLAGS) -MM -MP $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@
71 83
72# 84#
73# Define a pattern rule for silent object building 85# Define a pattern rule for silent object building
74# 86#
75%.o: %.c 87%.o: %.c
76 $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $< 88 $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $<
77 89
78 90
79EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lpthread 91EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lpthread
80OBJECTS = 92OBJECTS =
81OBJECTS += cache.o 93OBJECTS += cache.o
82OBJECTS += cgit.o 94OBJECTS += cgit.o
83OBJECTS += cmd.o 95OBJECTS += cmd.o
84OBJECTS += configfile.o 96OBJECTS += configfile.o
85OBJECTS += html.o 97OBJECTS += html.o
86OBJECTS += parsing.o 98OBJECTS += parsing.o
87OBJECTS += scan-tree.o 99OBJECTS += scan-tree.o
88OBJECTS += shared.o 100OBJECTS += shared.o
89OBJECTS += ui-atom.o 101OBJECTS += ui-atom.o
90OBJECTS += ui-blob.o 102OBJECTS += ui-blob.o
91OBJECTS += ui-clone.o 103OBJECTS += ui-clone.o
92OBJECTS += ui-commit.o 104OBJECTS += ui-commit.o
93OBJECTS += ui-diff.o 105OBJECTS += ui-diff.o
94OBJECTS += ui-log.o 106OBJECTS += ui-log.o
95OBJECTS += ui-patch.o 107OBJECTS += ui-patch.o
96OBJECTS += ui-plain.o 108OBJECTS += ui-plain.o
97OBJECTS += ui-refs.o 109OBJECTS += ui-refs.o
98OBJECTS += ui-repolist.o 110OBJECTS += ui-repolist.o
99OBJECTS += ui-shared.o 111OBJECTS += ui-shared.o
100OBJECTS += ui-snapshot.o 112OBJECTS += ui-snapshot.o
101OBJECTS += ui-ssdiff.o 113OBJECTS += ui-ssdiff.o
102OBJECTS += ui-stats.o 114OBJECTS += ui-stats.o
103OBJECTS += ui-summary.o 115OBJECTS += ui-summary.o
104OBJECTS += ui-tag.o 116OBJECTS += ui-tag.o
105OBJECTS += ui-tree.o 117OBJECTS += ui-tree.o
106OBJECTS += vector.o 118OBJECTS += vector.o
107 119
108ifdef NEEDS_LIBICONV 120ifdef NEEDS_LIBICONV
109 EXTLIBS += -liconv 121 EXTLIBS += -liconv
110endif 122endif
111 123
112 124
113.PHONY: all libgit test install uninstall clean force-version get-git \ 125.PHONY: all libgit test install uninstall clean force-version get-git \
114 doc man-doc html-doc clean-doc 126 doc clean-doc install-doc install-man install-html install-pdf \
127 uninstall-doc uninstall-man uninstall-html uninstall-pdf
115 128
116all: cgit 129all: cgit
117 130
118VERSION: force-version 131VERSION: force-version
119 @./gen-version.sh "$(CGIT_VERSION)" 132 @./gen-version.sh "$(CGIT_VERSION)"
120-include VERSION 133-include VERSION
121 134
122 135
123CFLAGS += -g -Wall -Igit 136CFLAGS += -g -Wall -Igit
124CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)' 137CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)'
125CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"' 138CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"'
126CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"' 139CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"'
127CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"' 140CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"'
128CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' 141CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"'
129 142
130GIT_OPTIONS = prefix=/usr 143GIT_OPTIONS = prefix=/usr
131 144
132ifdef NO_ICONV 145ifdef NO_ICONV
133 CFLAGS += -DNO_ICONV 146 CFLAGS += -DNO_ICONV
134endif 147endif
135ifdef NO_STRCASESTR 148ifdef NO_STRCASESTR
136 CFLAGS += -DNO_STRCASESTR 149 CFLAGS += -DNO_STRCASESTR
137endif 150endif
138ifdef NO_C99_FORMAT 151ifdef NO_C99_FORMAT
139 CFLAGS += -DNO_C99_FORMAT 152 CFLAGS += -DNO_C99_FORMAT
140endif 153endif
141ifdef NO_OPENSSL 154ifdef NO_OPENSSL
142 CFLAGS += -DNO_OPENSSL 155 CFLAGS += -DNO_OPENSSL
143 GIT_OPTIONS += NO_OPENSSL=1 156 GIT_OPTIONS += NO_OPENSSL=1
144else 157else
145 EXTLIBS += -lcrypto 158 EXTLIBS += -lcrypto
146endif 159endif
147 160
148cgit: $(OBJECTS) libgit 161cgit: $(OBJECTS) libgit
149 $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) 162 $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o cgit $(OBJECTS) $(EXTLIBS)
150 163
151cgit.o: VERSION 164cgit.o: VERSION
152 165
153ifneq "$(MAKECMDGOALS)" "clean" 166ifneq "$(MAKECMDGOALS)" "clean"
154 -include $(OBJECTS:.o=.d) 167 -include $(OBJECTS:.o=.d)
155endif 168endif
156 169
157libgit: 170libgit:
158 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) libgit.a 171 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) libgit.a
159 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) xdiff/lib.a 172 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) xdiff/lib.a
160 173
161test: all 174test: all
162 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all 175 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all
163 176
164install: all 177install: all
165 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_SCRIPT_PATH) 178 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_SCRIPT_PATH)
166 $(INSTALL) -m 0755 cgit $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME) 179 $(INSTALL) -m 0755 cgit $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
167 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_DATA_PATH) 180 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_DATA_PATH)
168 $(INSTALL) -m 0644 cgit.css $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css 181 $(INSTALL) -m 0644 cgit.css $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css
169 $(INSTALL) -m 0644 cgit.png $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png 182 $(INSTALL) -m 0644 cgit.png $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png
183 $(INSTALL) -m 0755 -d $(DESTDIR)$(filterdir)
184 $(INSTALL) -m 0755 filters/* $(DESTDIR)$(filterdir)
185
186install-doc: install-man install-html install-pdf
187
188install-man: doc-man
189 $(INSTALL) -m 0755 -d $(DESTDIR)$(mandir)/man5
190 $(INSTALL) -m 0644 $(DOC_MAN5) $(DESTDIR)$(mandir)/man5
191
192install-html: doc-html
193 $(INSTALL) -m 0755 -d $(DESTDIR)$(htmldir)
194 $(INSTALL) -m 0644 $(DOC_HTML) $(DESTDIR)$(htmldir)
195
196install-pdf: doc-pdf
197 $(INSTALL) -m 0755 -d $(DESTDIR)$(pdfdir)
198 $(INSTALL) -m 0644 $(DOC_PDF) $(DESTDIR)$(pdfdir)
170 199
171uninstall: 200uninstall:
172 rm -f $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME) 201 rm -f $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
173 rm -f $(CGIT_DATA_PATH)/cgit.css 202 rm -f $(CGIT_DATA_PATH)/cgit.css
174 rm -f $(CGIT_DATA_PATH)/cgit.png 203 rm -f $(CGIT_DATA_PATH)/cgit.png
175 204
176doc: man-doc html-doc pdf-doc 205uninstall-doc: uninstall-man uninstall-html uninstall-pdf
206
207uninstall-man:
208 @for i in $(DOC_MAN5); do \
209 rm -fv $(DESTDIR)$(mandir)/man5/$$i; \
210 done
211
212uninstall-html:
213 @for i in $(DOC_HTML); do \
214 rm -fv $(DESTDIR)$(htmldir)/$$i; \
215 done
216
217uninstall-pdf:
218 @for i in $(DOC_PDF); do \
219 rm -fv $(DESTDIR)$(pdfdir)/$$i; \
220 done
221
222doc: doc-man doc-html doc-pdf
223doc-man: doc-man5
224doc-man5: $(DOC_MAN5)
225doc-html: $(DOC_HTML)
226doc-pdf: $(DOC_PDF)
177 227
178man-doc: cgitrc.5.txt 228%.5 : %.5.txt
179 a2x -f manpage cgitrc.5.txt 229 a2x -f manpage $<
180 230
181html-doc: cgitrc.5.txt 231$(DOC_HTML): %.html : %.txt
182 a2x -f xhtml --stylesheet=cgit-doc.css cgitrc.5.txt 232 a2x -f xhtml --stylesheet=cgit-doc.css $<
183 233
184pdf-doc: cgitrc.5.txt 234$(DOC_PDF): %.pdf : %.txt
185 a2x -f pdf cgitrc.5.txt 235 a2x -f pdf cgitrc.5.txt
186 236
187clean: clean-doc 237clean: clean-doc
188 rm -f cgit VERSION *.o *.d 238 rm -f cgit VERSION *.o *.d
189 239
190clean-doc: 240clean-doc:
191 rm -f cgitrc.5 cgitrc.5.html cgitrc.5.pdf cgitrc.5.xml cgitrc.5.fo 241 rm -f cgitrc.5 cgitrc.5.html cgitrc.5.pdf cgitrc.5.xml cgitrc.5.fo
192 242
193get-git: 243get-git:
194 curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git 244 curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git
diff --git a/cgit.css b/cgit.css
index 1ebef55..008cff8 100644
--- a/cgit.css
+++ b/cgit.css
@@ -716,48 +716,62 @@ table.ssdiff td.changed {
716 min-width: 50%; 716 min-width: 50%;
717} 717}
718 718
719table.ssdiff td.changed_dark { 719table.ssdiff td.changed_dark {
720 color: black; 720 color: black;
721 background: #cca; 721 background: #cca;
722 min-width: 50%; 722 min-width: 50%;
723} 723}
724 724
725table.ssdiff td.lineno { 725table.ssdiff td.lineno {
726 color: black; 726 color: black;
727 background: #eee; 727 background: #eee;
728 text-align: right; 728 text-align: right;
729 width: 3em; 729 width: 3em;
730 min-width: 3em; 730 min-width: 3em;
731} 731}
732 732
733table.ssdiff td.hunk { 733table.ssdiff td.hunk {
734 color: #black; 734 color: #black;
735 background: #ccf; 735 background: #ccf;
736 border-top: solid 1px #aaa; 736 border-top: solid 1px #aaa;
737 border-bottom: solid 1px #aaa; 737 border-bottom: solid 1px #aaa;
738} 738}
739 739
740table.ssdiff td.head { 740table.ssdiff td.head {
741 border-top: solid 1px #aaa; 741 border-top: solid 1px #aaa;
742 border-bottom: solid 1px #aaa; 742 border-bottom: solid 1px #aaa;
743} 743}
744 744
745table.ssdiff td.head div.head { 745table.ssdiff td.head div.head {
746 font-weight: bold; 746 font-weight: bold;
747 color: black; 747 color: black;
748} 748}
749 749
750table.ssdiff td.foot { 750table.ssdiff td.foot {
751 border-top: solid 1px #aaa; 751 border-top: solid 1px #aaa;
752 border-left: none; 752 border-left: none;
753 border-right: none; 753 border-right: none;
754 border-bottom: none; 754 border-bottom: none;
755} 755}
756 756
757table.ssdiff td.space { 757table.ssdiff td.space {
758 border: none; 758 border: none;
759} 759}
760 760
761table.ssdiff td.space div { 761table.ssdiff td.space div {
762 min-height: 3em; 762 min-height: 3em;
763} 763}
764
765/* Syntax highlighting */
766table.blob .num { color:#2928ff; }
767table.blob .esc { color:#ff00ff; }
768table.blob .str { color:#ff0000; }
769table.blob .dstr { color:#818100; }
770table.blob .slc { color:#838183; font-style:italic; }
771table.blob .com { color:#838183; font-style:italic; }
772table.blob .dir { color:#008200; }
773table.blob .sym { color:#000000; }
774table.blob .kwa { color:#000000; font-weight:bold; }
775table.blob .kwb { color:#830000; }
776table.blob .kwc { color:#000000; font-weight:bold; }
777table.blob .kwd { color:#010181; }
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index b45c46b..3c20fe1 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -395,180 +395,180 @@ repo.path::
395 An absolute path to the repository directory. For non-bare repositories 395 An absolute path to the repository directory. For non-bare repositories
396 this is the .git-directory. Default value: none. 396 this is the .git-directory. Default value: none.
397 397
398repo.readme:: 398repo.readme::
399 A path (relative to <repo.path>) which specifies a file to include 399 A path (relative to <repo.path>) which specifies a file to include
400 verbatim as the "About" page for this repo. You may also specify a 400 verbatim as the "About" page for this repo. You may also specify a
401 git refspec by head or by hash by prepending the refspec followed by 401 git refspec by head or by hash by prepending the refspec followed by
402 a colon. For example, "master:docs/readme.mkd" Default value: <readme>. 402 a colon. For example, "master:docs/readme.mkd" Default value: <readme>.
403 403
404repo.snapshots:: 404repo.snapshots::
405 A mask of allowed snapshot-formats for this repo, restricted by the 405 A mask of allowed snapshot-formats for this repo, restricted by the
406 "snapshots" global setting. Default value: <snapshots>. 406 "snapshots" global setting. Default value: <snapshots>.
407 407
408repo.section:: 408repo.section::
409 Override the current section name for this repository. Default value: 409 Override the current section name for this repository. Default value:
410 none. 410 none.
411 411
412repo.source-filter:: 412repo.source-filter::
413 Override the default source-filter. Default value: none. See also: 413 Override the default source-filter. Default value: none. See also:
414 "enable-filter-overrides". 414 "enable-filter-overrides".
415 415
416repo.url:: 416repo.url::
417 The relative url used to access the repository. This must be the first 417 The relative url used to access the repository. This must be the first
418 setting specified for each repo. Default value: none. 418 setting specified for each repo. Default value: none.
419 419
420 420
421REPOSITORY-SPECIFIC CGITRC FILE 421REPOSITORY-SPECIFIC CGITRC FILE
422------------------------------- 422-------------------------------
423When the option "scan-path" is used to auto-discover git repositories, cgit 423When the option "scan-path" is used to auto-discover git repositories, cgit
424will try to parse the file "cgitrc" within any found repository. Such a 424will try to parse the file "cgitrc" within any found repository. Such a
425repo-specific config file may contain any of the repo-specific options 425repo-specific config file may contain any of the repo-specific options
426described above, except "repo.url" and "repo.path". Additionally, the "filter" 426described above, except "repo.url" and "repo.path". Additionally, the "filter"
427options are only acknowledged in repo-specific config files when 427options are only acknowledged in repo-specific config files when
428"enable-filter-overrides" is set to "1". 428"enable-filter-overrides" is set to "1".
429 429
430Note: the "repo." prefix is dropped from the option names in repo-specific 430Note: the "repo." prefix is dropped from the option names in repo-specific
431config files, e.g. "repo.desc" becomes "desc". 431config files, e.g. "repo.desc" becomes "desc".
432 432
433 433
434EXAMPLE CGITRC FILE 434EXAMPLE CGITRC FILE
435------------------- 435-------------------
436 436
437.... 437....
438# Enable caching of up to 1000 output entriess 438# Enable caching of up to 1000 output entriess
439cache-size=1000 439cache-size=1000
440 440
441 441
442# Specify some default clone prefixes 442# Specify some default clone prefixes
443clone-prefix=git://foobar.com ssh://foobar.com/pub/git http://foobar.com/git 443clone-prefix=git://example.com ssh://example.com/pub/git http://example.com/git
444 444
445# Specify the css url 445# Specify the css url
446css=/css/cgit.css 446css=/css/cgit.css
447 447
448 448
449# Show extra links for each repository on the index page 449# Show extra links for each repository on the index page
450enable-index-links=1 450enable-index-links=1
451 451
452 452
453# Enable ASCII art commit history graph on the log pages 453# Enable ASCII art commit history graph on the log pages
454enable-commit-graph=1 454enable-commit-graph=1
455 455
456 456
457# Show number of affected files per commit on the log pages 457# Show number of affected files per commit on the log pages
458enable-log-filecount=1 458enable-log-filecount=1
459 459
460 460
461# Show number of added/removed lines per commit on the log pages 461# Show number of added/removed lines per commit on the log pages
462enable-log-linecount=1 462enable-log-linecount=1
463 463
464 464
465# Add a cgit favicon 465# Add a cgit favicon
466favicon=/favicon.ico 466favicon=/favicon.ico
467 467
468 468
469# Use a custom logo 469# Use a custom logo
470logo=/img/mylogo.png 470logo=/img/mylogo.png
471 471
472 472
473# Enable statistics per week, month and quarter 473# Enable statistics per week, month and quarter
474max-stats=quarter 474max-stats=quarter
475 475
476 476
477# Set the title and heading of the repository index page 477# Set the title and heading of the repository index page
478root-title=foobar.com git repositories 478root-title=example.com git repositories
479 479
480 480
481# Set a subheading for the repository index page 481# Set a subheading for the repository index page
482root-desc=tracking the foobar development 482root-desc=tracking the foobar development
483 483
484 484
485# Include some more info about foobar.com on the index page 485# Include some more info about example.com on the index page
486root-readme=/var/www/htdocs/about.html 486root-readme=/var/www/htdocs/about.html
487 487
488 488
489# Allow download of tar.gz, tar.bz2 and zip-files 489# Allow download of tar.gz, tar.bz2 and zip-files
490snapshots=tar.gz tar.bz2 zip 490snapshots=tar.gz tar.bz2 zip
491 491
492 492
493## 493##
494## List of common mimetypes 494## List of common mimetypes
495## 495##
496 496
497mimetype.gif=image/gif 497mimetype.gif=image/gif
498mimetype.html=text/html 498mimetype.html=text/html
499mimetype.jpg=image/jpeg 499mimetype.jpg=image/jpeg
500mimetype.jpeg=image/jpeg 500mimetype.jpeg=image/jpeg
501mimetype.pdf=application/pdf 501mimetype.pdf=application/pdf
502mimetype.png=image/png 502mimetype.png=image/png
503mimetype.svg=image/svg+xml 503mimetype.svg=image/svg+xml
504 504
505 505
506## 506##
507## List of repositories. 507## List of repositories.
508## PS: Any repositories listed when section is unset will not be 508## PS: Any repositories listed when section is unset will not be
509## displayed under a section heading 509## displayed under a section heading
510## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos') 510## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos')
511## and included like this: 511## and included like this:
512## include=/etc/cgitrepos 512## include=/etc/cgitrepos
513## 513##
514 514
515 515
516repo.url=foo 516repo.url=foo
517repo.path=/pub/git/foo.git 517repo.path=/pub/git/foo.git
518repo.desc=the master foo repository 518repo.desc=the master foo repository
519repo.owner=fooman@foobar.com 519repo.owner=fooman@example.com
520repo.readme=info/web/about.html 520repo.readme=info/web/about.html
521 521
522 522
523repo.url=bar 523repo.url=bar
524repo.path=/pub/git/bar.git 524repo.path=/pub/git/bar.git
525repo.desc=the bars for your foo 525repo.desc=the bars for your foo
526repo.owner=barman@foobar.com 526repo.owner=barman@example.com
527repo.readme=info/web/about.html 527repo.readme=info/web/about.html
528 528
529 529
530# The next repositories will be displayed under the 'extras' heading 530# The next repositories will be displayed under the 'extras' heading
531section=extras 531section=extras
532 532
533 533
534repo.url=baz 534repo.url=baz
535repo.path=/pub/git/baz.git 535repo.path=/pub/git/baz.git
536repo.desc=a set of extensions for bar users 536repo.desc=a set of extensions for bar users
537 537
538repo.url=wiz 538repo.url=wiz
539repo.path=/pub/git/wiz.git 539repo.path=/pub/git/wiz.git
540repo.desc=the wizard of foo 540repo.desc=the wizard of foo
541 541
542 542
543# Add some mirrored repositories 543# Add some mirrored repositories
544section=mirrors 544section=mirrors
545 545
546 546
547repo.url=git 547repo.url=git
548repo.path=/pub/git/git.git 548repo.path=/pub/git/git.git
549repo.desc=the dscm 549repo.desc=the dscm
550 550
551 551
552repo.url=linux 552repo.url=linux
553repo.path=/pub/git/linux.git 553repo.path=/pub/git/linux.git
554repo.desc=the kernel 554repo.desc=the kernel
555 555
556# Disable adhoc downloads of this repo 556# Disable adhoc downloads of this repo
557repo.snapshots=0 557repo.snapshots=0
558 558
559# Disable line-counts for this repo 559# Disable line-counts for this repo
560repo.enable-log-linecount=0 560repo.enable-log-linecount=0
561 561
562# Restrict the max statistics period for this repo 562# Restrict the max statistics period for this repo
563repo.max-stats=month 563repo.max-stats=month
564.... 564....
565 565
566 566
567BUGS 567BUGS
568---- 568----
569Comments currently cannot appear on the same line as a setting; the comment 569Comments currently cannot appear on the same line as a setting; the comment
570will be included as part of the value. E.g. this line: 570will be included as part of the value. E.g. this line:
571 571
572 robots=index # allow indexing 572 robots=index # allow indexing
573 573
574will generate the following html element: 574will generate the following html element:
diff --git a/git b/git
Subproject 87b50542a08ac6caa083ddc376e674424e37940 Subproject 7ed863a85a6ce2c4ac4476848310b8f917ab41f
diff --git a/ui-stats.c b/ui-stats.c
index 946a6ea..2a0c174 100644
--- a/ui-stats.c
+++ b/ui-stats.c
@@ -1,50 +1,48 @@
1#include <string-list.h>
2
3#include "cgit.h" 1#include "cgit.h"
4#include "html.h" 2#include "html.h"
5#include "ui-shared.h" 3#include "ui-shared.h"
6#include "ui-stats.h" 4#include "ui-stats.h"
7 5
8#ifdef NO_C99_FORMAT 6#ifdef NO_C99_FORMAT
9#define SZ_FMT "%u" 7#define SZ_FMT "%u"
10#else 8#else
11#define SZ_FMT "%zu" 9#define SZ_FMT "%zu"
12#endif 10#endif
13 11
14#define MONTHS 6 12#define MONTHS 6
15 13
16struct authorstat { 14struct authorstat {
17 long total; 15 long total;
18 struct string_list list; 16 struct string_list list;
19}; 17};
20 18
21#define DAY_SECS (60 * 60 * 24) 19#define DAY_SECS (60 * 60 * 24)
22#define WEEK_SECS (DAY_SECS * 7) 20#define WEEK_SECS (DAY_SECS * 7)
23 21
24static void trunc_week(struct tm *tm) 22static void trunc_week(struct tm *tm)
25{ 23{
26 time_t t = timegm(tm); 24 time_t t = timegm(tm);
27 t -= ((tm->tm_wday + 6) % 7) * DAY_SECS; 25 t -= ((tm->tm_wday + 6) % 7) * DAY_SECS;
28 gmtime_r(&t, tm); 26 gmtime_r(&t, tm);
29} 27}
30 28
31static void dec_week(struct tm *tm) 29static void dec_week(struct tm *tm)
32{ 30{
33 time_t t = timegm(tm); 31 time_t t = timegm(tm);
34 t -= WEEK_SECS; 32 t -= WEEK_SECS;
35 gmtime_r(&t, tm); 33 gmtime_r(&t, tm);
36} 34}
37 35
38static void inc_week(struct tm *tm) 36static void inc_week(struct tm *tm)
39{ 37{
40 time_t t = timegm(tm); 38 time_t t = timegm(tm);
41 t += WEEK_SECS; 39 t += WEEK_SECS;
42 gmtime_r(&t, tm); 40 gmtime_r(&t, tm);
43} 41}
44 42
45static char *pretty_week(struct tm *tm) 43static char *pretty_week(struct tm *tm)
46{ 44{
47 static char buf[10]; 45 static char buf[10];
48 46
49 strftime(buf, sizeof(buf), "W%V %G", tm); 47 strftime(buf, sizeof(buf), "W%V %G", tm);
50 return buf; 48 return buf;