Commit Graph

290 Commits

Author SHA1 Message Date
Lars Hjemli
8c2a1367c4 Makefile: Git dependency, take 3
In commit a1266edfe the build instructions for the git libs where moved
to their real targets, which in turn depended on the phony target `git`.
But since `git` is an actual directory in cgit the git libs wouldn't be
recompiled when needed.

So with this patch (third time lucky), cgit is declared to depend on the
really phony target `libgit` and the build instructions for `libgit` is
to unconditionally rebuild git/libgit.a and git/xdiff/lib.a.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-06 18:52:27 +02:00
Lars Hjemli
e5da4bca54 Implement plain view
This implements a way to access plain blobs by path (similar to the
tree view) instead of by sha1.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-06 11:21:30 +02:00
Lars Hjemli
02a545e634 Add support for cloning over http
This patch implements basic support for cloning over http, based on the
work on git-http-backend by Shawn O. Pearce.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-06 11:21:09 +02:00
Lars Hjemli
b2a3d31e88 Add atom-support
This enables a page which generates atom feeds for the current branch and
path, heavily inspired by the atom-support in gitweb.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-01 22:12:34 +02:00
Lars Hjemli
a1266edfe6 Makefile: another take on git dependency rules
When building cgit we depend on xdiff/lib.a and libgit.a in the git
directory, but the previous attempt on describing this dependency
failed since the build instructions for the libs was placed under the
phony `git` target.

This patch fixes the issue by moving the build instructions to their
real targets. It also makes it clear that only the `cgit` target
depends on the git binaries (since they're only used during linking).

And while at it, the patch also cleans up the list of phony targets.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-01 02:04:41 +02:00
Lars Hjemli
50989d3b47 Makefile: remove the distclean and emptycache targets
The `distclean` was hardly useful while the `emptycache` was actively harmful.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-22 20:06:16 +02:00
Lars Hjemli
a75968df10 Makefile: do not touch the git objects with make clean
I've been avoiding `make clean` for a long time due to its eagerness to kill
all the git objectfiles.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-22 19:58:37 +02:00
Lars Hjemli
bb7485e8d7 Makefile: fix git dependency rules
The objectfiles depends unconditionally on some specific git binaries while
those git binaries depends on the phony `git` target and this patch seems to
get these dependencies spelled out correctly.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-22 19:42:06 +02:00
Lars Hjemli
833b0d2732 Use GIT-1.5.6 2008-06-25 17:39:25 +02:00
Lars Hjemli
c3de425acb Use GIT-1.5.5.1
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-18 21:40:28 +02:00
Lars Hjemli
4a84228826 Use GIT-1.5.5 2008-04-09 18:06:26 +02:00
Lars Hjemli
23296ad648 Merge branch 'lh/cleanup'
* lh/cleanup: (21 commits)
  Reset ctx.repo to NULL when the config parser is finished
  Move cgit_parse_query() from parsing.c to html.c as http_parse_querystring()
  Move function for configfile parsing into configfile.[ch]
  Add cache.h
  Remove global and obsolete cgit_cmd
  Makefile: copy the QUIET constructs from the Makefile in git.git
  Move cgit_version from shared.c to cgit.c
  Makefile: autobuild dependency rules
  Initial Makefile cleanup
  Move non-generic functions from shared.c to cgit.c
  Add ui-shared.h
  Add separate header-files for each page/view
  Refactor snapshot support
  Add command dispatcher
  Remove obsolete cacheitem parameter to ui-functions
  Add struct cgit_page to cgit_context
  Introduce html.h
  Improve initialization of git directory
  Move cgit_repo into cgit_context
  Add all config variables into struct cgit_context
  ...
2008-04-08 21:29:21 +02:00
Lars Hjemli
20a33548b9 Move function for configfile parsing into configfile.[ch]
This is a generic function which wanted its own little object file.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-28 00:09:11 +01:00
Lars Hjemli
c60781d677 Makefile: copy the QUIET constructs from the Makefile in git.git
These constructs were introduced by Shawn O. Pearce in commit
74f2b2a8d006a49e1be7e30731c2f7365d2741d1.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-25 01:41:10 +01:00
Lars Hjemli
92908af455 Move cgit_version from shared.c to cgit.c
With the matching Makefile change, this makes sure that only cgit.o and cgit
proper needs to be rebuildt when VERSION has been modified.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24 23:27:16 +01:00
Lars Hjemli
df90b51baf Makefile: autobuild dependency rules
This uses gcc to generate dependency rules for each `.o` file, based on the
corresponding `.c` file, into a new set of `.d` files (which are also defined
to depend on the same set of source files as their `.o` files).

Result:
* all objectfile dependencies are correctly calculated
* only the necessary dependencies are recalculated when a sourcefile is updated

Inspiration for the build rules:
* http://www.gnu.org/software/make/manual/make.html#Automatic-Prerequisites
* http://make.paulandlesley.org/autodep.html

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24 23:27:12 +01:00
Lars Hjemli
271818693d Initial Makefile cleanup
Sort the list of object files to improve readability/mergeability and remove
manual dependency information which will soon be generated automatically.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24 23:16:30 +01:00
Lars Hjemli
e0e4478e7b Add command dispatcher
This simplifies the code in cgit.c and makes it easier to extend cgit with
new pages/commands.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24 01:43:48 +01:00
Lars Hjemli
cb41af16d9 Use GIT-1.5.5.rc1 2008-03-23 11:36:38 +01:00
Lars Hjemli
0537a7d1cf Use GIT-1.5.4.4 2008-03-17 23:01:25 +01:00
Lars Hjemli
e5ed227ef0 Use GIT-1.5.4.1 2008-02-16 11:28:16 +01:00
Lars Hjemli
2106c96ca0 Use GIT-1.5.4 2008-02-02 08:55:09 +01:00
Lars Hjemli
ac195ce710 Use GIT-1.5.4.rc5 2008-01-28 21:18:28 +01:00
Lars Hjemli
776200b1c1 Use GIT-1.5.4.rc4 2008-01-21 08:52:09 +01:00
Lars Hjemli
2122c696a3 Merge branch 'stable'
* stable:
  CGIT 0.7.2
  Use GIT-1.5.3.8
  Compare string lengths when parsing the snapshot mask
  Default repo description to "[no description]"
2008-01-13 18:34:37 +01:00
Lars Hjemli
b74cc91574 CGIT 0.7.2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-01-10 13:50:22 +01:00
Lars Hjemli
edf0ae3bd7 Use GIT-1.5.3.8 2008-01-10 13:47:18 +01:00
Lars Hjemli
620bb3e5e4 Add plain patch view
The new view mimics the output from `git format-patch`, making it possible
to cherry-pick directly from cgit with something like `curl $url | git am`.

Inspired by a patch to `git-apply` by Mike Hommey:
  http://thread.gmane.org/gmane.comp.version-control.git/67611/focus=67610

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-12-11 02:43:24 +01:00
Lars Hjemli
b4649fc905 Create initial testsuite
This creates a simple testsuite, heavily inspired by the testsuite in git.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-11 12:00:13 +01:00
Lars Hjemli
ab21082c21 Merge branch 'stable'
* stable:
  CGIT 0.7.1
  Makefile install: include cgit.png, do not empty cache

Conflicts:

	Makefile
2007-11-09 13:52:48 +01:00
Lars Hjemli
2919b91d20 CGIT 0.7.1
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-09 13:51:00 +01:00
Lars Hjemli
9b18632b7e Makefile install: include cgit.png, do not empty cache
The cache-cleaning is potentially dangerous, so lets move it away from the
install target. A special emptycache target can be used to run the rm -rf.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-09 13:47:58 +01:00
Lars Hjemli
1ae41a0d1e Makefile: link with libiconv if NEEDS_LIBICONV is defined
This seems to be needed to compile on cygwin.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-06 09:38:46 +01:00
Lars Hjemli
e36365c684 CGIT 0.7 2007-11-03 11:35:55 +01:00
Lars Hjemli
c2f75225b4 Use GIT-1.5.3.5
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-03 11:33:54 +01:00
Lars Hjemli
7937d06090 Add support for refs view
This enables the new urls $repo/refs, $repo/refs/heads and $repo/refs/tags,
which can be used to print _all_ branches and/or tags.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-10-27 10:53:27 +02:00
Lars Hjemli
2e3b6fc424 Use git-1.5.3.3 2007-10-01 12:50:07 +02:00
Lars Hjemli
b65aa5d16f cgit v0.6.3
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-20 01:04:54 +02:00
Lars Hjemli
08b67765f9 Upgrade to GIT 1.5.3.2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-20 01:03:25 +02:00
Lars Hjemli
4beecc9a18 cgit v0.6.2 2007-09-08 19:10:37 +02:00
Lars Hjemli
6bfed7d233 Revert part of "Makefile: add support for DESTDIR"
This removes my editing on the patch received by Chris Pickel, as I didn't
understand the purpose of DESTDIR.

Noticed-by: Chris Pickel <sfiera@macports.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-08 18:42:55 +02:00
Lars Hjemli
152c5e2aca Revert "Makefile: add missing references to DESTDIR"
This reverts commit fa31c5ed48, as I
totally misunderstood the purpose of DESTDIR.

Noticed-by: Chris Pickel <sfiera@macports.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-08 18:38:10 +02:00
Lars Hjemli
af38d6565f cgit v0.6.1 2007-09-08 15:54:28 +02:00
Lars Hjemli
fa31c5ed48 Makefile: add missing references to DESTDIR
When cgit is built it needs to get CGIT_CONFIG and CGIT_CACHE_ROOT prefix
with DESTDIR.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-08 11:59:04 +02:00
Chris Pickel
898f5f89d3 Make cgit honor CACHE_ROOT as defined in Makefile
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-08 11:53:40 +02:00
Chris Pickel
97ded7c1c3 Makefile: add support for DESTDIR
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-08 11:34:27 +02:00
Lars Hjemli
96a24212fd cgit v0.6
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-04 11:54:37 +02:00
Lars Hjemli
95eaf2735e Makefile: add target "get-git"
The new target downloads a suitable git.git tarball from kernel.org and
unpacks it in the git directory.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-03 22:49:19 +02:00
Lars Hjemli
e8920b5262 Rewrite the makefile + gen-version.sh
The old files were simply broken, hopefully the new ones will work out
somewhat better.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-09-03 22:17:04 +02:00
Lars Hjemli
4e9107abfe Add ui-tag.c
This file implements the tag-command, i.e. printing of annotated tags.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-07-22 23:44:57 +02:00
Michael Krelin
71ebcbe23a make gen-version.sh run even if . is not in PATH
Signed-off-by: Michael Krelin <hacker@klever.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-07-03 21:30:05 +02:00
Lars Hjemli
f69250358a Add version info from git-describe
A new script, gen-version.sh, is now invoked from 'make version' to generate
the file VERSION. This file contains a version identifier generated by
git-describe and is included in the Makefile.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-18 10:38:40 +02:00
Lars Hjemli
ffc69736a6 ui-tree: unify with ui-view, use path to select tree/blob
This teaches ui-tree to show both trees and blobs, thereby making ui-view
superfluous. At the same time, ui-tree is extended to honour the specified
path instead of requiering a tree/blob sha1.
2007-06-16 20:20:42 +02:00
Lars Hjemli
2a09c0d184 cgit v0.5
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-24 00:18:16 +02:00
Lars Hjemli
d4dbfdfbae Use git-1.5.2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-20 13:41:05 +02:00
Lars Hjemli
ad3b39d3b8 Include cgit.conf in Makefile
This allows persistent overrides of Makefile settings without touching
the Makefile.

Suggested in a patch by Kristian Høgsberg <krh@bitplanet.net>

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-15 18:41:31 +02:00
Lars Hjemli
e903011c44 Use tables and css to create the diffstat graph, fix scaling
There was no need to use image-files for the graphs, so lets drop them.
At the same time, fix scaling of the graphs so that the full width is
used only if atleast 100 LOC are changed in one of the files.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-15 09:09:42 +02:00
Lars Hjemli
ea2831f1c8 Don't hardcode urls when SCRIPT_NAME is available
Also, let the makefile define the name of the installed cgi and
use that definition as a default value for cgit_script_name variable.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-15 00:48:31 +02:00
Lars Hjemli
9ecde6568a Let makefile override the configfile location
Pass CGIT_CONFIG from makefile during build, to enable stuff like

  make CGIT_CONFIG=/var/cgit/cgit.conf

Noticed by Kristian Høgsberg <krh@bitplanet.net>

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-14 23:09:49 +02:00
Lars Hjemli
4fdf571c88 cgit v0.4
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-13 23:28:19 +02:00
Lars Hjemli
8a3685bcf2 Add graphical diffstat to commit view
The diffstat is calculated against the leftmost parent of the commit. This
gives nice information for "normal" merges while octopus merges are less
than optimal, so the diffstat isn't calculated for those merges.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-13 22:31:11 +02:00
Lars Hjemli
f596d10d73 Makefile: add support for building w.o. preinstalled git
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-11 20:41:14 +02:00
Lars Hjemli
dad80d1ff8 Tag release v0.3
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-11 12:15:44 +02:00
Lars Hjemli
cc1dbd1b5d Add submodules.sh and use it during builds
This adds a shell script which can be be used to initialize, list and
update submodules in a git repository. It reads the file .gitmodules
to find a mapping between submodule path and repository url for the
initial clone of all submodules.

The script is used during cgit builds to enable automatic download and
checkout of the git git repository.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-11 11:03:52 +02:00
Lars Hjemli
e743443811 Added git as a submodule
This commit adds the subdirectory 'git' as a submodule containing
the git git repository, but doesn't add support for automatically
cloning the submodule.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-11 10:59:10 +02:00
Lars Hjemli
ca8eb8fc8f Add support for downloading single blobs
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-09 00:48:09 +02:00
Lars Hjemli
61c3ca978c Update to libgit 1.5.2-rc2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-08 23:38:49 +02:00
Lars Hjemli
ab2ab95f09 Add support for snapshots
Make a link from the commit viewer to a snapshot of the corresponding tree.

Currently only zip-format is supported.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-02-08 13:58:58 +01:00
Lars Hjemli
14d360df60 cgit v0.2
Main changes since v0.1:
  -list tags in repo summary
  -allow search in log-view
  -read repository paths from cgitrc

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-02-05 00:22:08 +01:00
Lars Hjemli
c52e84135e Add support for prefix and gitsrc arguments to 'make'
This should improve the installation a little, especially since the new
options are mentioned in the README. Also, add a make-rule to build the
git binaries if necessary + a dependency between cgit and libgit.a.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-02-05 00:12:04 +01:00
Lars Hjemli
4a9dea5c01 Unified install path
Install all files into single directory

Signed-off-by: Lars Hjemli <larsh@slaptop.hjemli.net>
2007-01-28 11:31:57 +01:00
Lars Hjemli
447025f62c Enable building with debuginfo
Add -g to CFLAGS when running make with DEBUG=1

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-01-17 01:13:05 +01:00
Lars Hjemli
8e495b075d cgit 0.1
With a working diff, it really has all the basics.

Next steps will be to make it more usable and less ugly :)

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-21 00:53:34 +01:00
Lars Hjemli
40dea5254a Let make know that ui-diff.c depends on xdiff.h
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-21 00:47:05 +01:00
Lars Hjemli
36aba00273 Add basic diff view
Finally, xdiff is used to show per-file diffs via commit view.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-20 22:48:27 +01:00
Lars Hjemli
9a8f88658d Add ui-commit.c + misc ui cleanups
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-16 00:19:56 +01:00
Lars Hjemli
c45b8178d0 Add separate makefile-rule to clear current cache
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-13 14:39:41 +01:00
Lars Hjemli
06fe0c2f47 Add display of tree content w/ui-tree.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-13 00:13:27 +01:00
Lars Hjemli
44923f8953 Move global variables + callback functions into shared.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 17:25:51 +01:00
Lars Hjemli
df63119302 Move functions for generic object output into ui-view.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 17:12:26 +01:00
Lars Hjemli
d14c5f6d3a Move log-functions into ui-log.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 17:04:19 +01:00
Lars Hjemli
1418034e64 Move repo summary functions into ui-summary.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 16:55:33 +01:00
Lars Hjemli
74620f12e4 Move functions for repolist output into ui-repolist.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 16:49:18 +01:00
Lars Hjemli
5a106eb09b Move common output-functions into ui-shared.c
While at it, replace the cgit_[lib_]error constants with a proper function

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 16:38:30 +01:00
Lars Hjemli
51ada4fda2 Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 16:11:40 +01:00
Lars Hjemli
a581ed8d6c Let 'make install' clear all cachefiles
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11 11:23:05 +01:00
Lars Hjemli
76827d8679 Add version identifier in generated files
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-10 23:54:45 +01:00
Lars Hjemli
25105d7eca Add caching infrastructure
This enables internal caching of page output.

Page requests are split into four groups:
  1) repo listing (front page)
  2) repo summary
  3) repo pages w/symbolic references in query string
  4) repo pages w/constant sha1's in query string

Each group has a TTL specified in minutes. When a page is requested, a cached
filename is stat(2)'ed and st_mtime is compared to time(2). If TTL has expired
(or the file didn't exist), the cached file is regenerated.

When generating a cached file, locking is used to avoid parallell processing
of the request. If multiple processes tries to aquire the same lock, the ones
who fail to get the lock serves the (expired) cached file. If the cached file
don't exist, the process instead calls sched_yield(2) before restarting the
request processing.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-10 22:31:36 +01:00
Lars Hjemli
c76a52be5b Replace useless make rules with generic $(OBJECTS) dependency
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-09 15:29:05 +01:00
Lars Hjemli
0d169ada2b Import cgit prototype from git tree
This enables basic cgit functionality, using libgit.a and xdiff/lib.a from
git + a custom "git.h" + openssl for sha1 routines.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-09 15:18:17 +01:00