summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore 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,34 +1,46 @@
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
@@ -90,49 +102,50 @@ OBJECTS += 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
@@ -146,49 +159,86 @@ else
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
@@ -740,24 +740,38 @@ table.ssdiff td.hunk {
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
@@ -419,132 +419,132 @@ repo.url::
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
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,26 +1,24 @@
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);