CvsGraph 1.2.0, 18-Feb-2002
===========================
CvsGraph creates a graphic representation of the revisions and branches in a
cvs/rcs repository. CvsGraph is inspired on the 'graph'-option from WinCVS. I
could not find something right away on the web and decided that it was time to
write a stand-alone version. I might have been doing some double work, but hey,
I like a hack.



New in this version
-------------------
- The entire tree can now be drawn upside-down. This is usefull if you have
  many revisions in a trunk and want to see the latest first. The configuration
  includes an option 'upside_down' with a boolean argument. You can override the
  default value on the command-line with the '-u' switch, which will negate the
  configured value.
  The imagemap generation also supports this, so you will still be able to point
  and shoot on and between the revisions.

- You can now instruct CvsGraph to ommit all revisions that are not tagged. This
  is highly usefull for very large trees/trunks to reduce the produced image
  size. Note that the first and the last revision in a trunk are not hidden.
  A new configuration option 'strip_untagged' with boolean argument enables this
  feature. Alternatively, the command-line provides option '-s' wich negates the
  value set in the configuration file. You can also strip the first revision if
  it is untagged using '-S' and/or strip_first_rev.

- The boxes to identify the branches can now be drawn on both sides of the trunk.
  Configuration option 'branch_dupbox' with boolean argument activates this
  feature, which is usefull when the tree is drawn upside-down.The command-line
  option '-b' negated the configured value.

- Configuration no longer requires a configuration file. All options can now be
  entered on the commandline using '-O'. CvsGraph will still read the
  configuration file if one is avaliable, but it is no longer an error if none
  is found.

- If no file is entered on the command-line, then the input is taken from
  standard input, like all decent *nix programs.

- ViewCVS (http://viewcvs.sourceforge.net) is now officially supporting the use
  of CvsGraph in their code as of version 0.8. So, no bad hacks needed anymore
  to get it working, and it always looks nice :-)

- Implemented string drawing using freetype interface of libgd. It looks very
  nice, but it is significantly slower than gd's standard bitmap fonts. Extra
  configuration parameters *_ttfont and *_ttsize set font and size. Option
  use_ttf enables ttf rendering. Note that gd's bitmap fonts are used as a
  fallback in case where the ttfont contains errors or is not found.

- The branch tag color and font can now be set separately using branch_tag_*
  configuration options.

- It is now possible to draw the connector lines between the boxes thicker
  by setting thick_lines to something else than 1. Maximum thickness is
  limited to lines of 11 pixels wide.



Compiling
---------

create directory:
	$ cd /where/ever/you/want
	$ tar xzf cvsgraph-1.2.0.tar.gz
	$ cd cvsgraph-1.2.0
	$ ./configure
	$ make

This should do the trick and you have an executable file 'cvsgraph' in the
current directory.

NOTE:	The GD library is required for CvsGraph to function. Get it from
	http://www.boutell.com, compile it and use either --with-gd-lib=DIR
	and --with-gd-inc=DIR to specify its location. You might also have
	to use --with-z-inc, --with-z-lib and --with-png-inc, --with-png-lib
	for gd versions 1.6 and higher.
	If you build with static libgd (i.e. libgd.a) and already have
	libpng.so and/or libjpeg6b.so (i.e. dynamic), then you might want to
	try to trick configure into adding these libs to the tests by adding
	commandline options '--with-png-lib=.' and '--with-jpeg-lib=.'.
	If you have linked libgd with freetype, then you might also need
	either --with-freetype-lib or --with-freetype2-lib.



Installing
----------
Put the executable file 'cvsgraph' somewhere where you think it should go.
Normally this would be "/usr/local/bin" or "/usr/bin". The configuration file
ought to be put in "/usr/local/etc" or "/etc". The exact position can be
overriden on the commandline anyway. Edit the configuration file to your liking
and you should be all set.



Running CvsGraph
----------------
Do *NOT* execute the program directly from a webserver. Direct execution would
be very insecure. Make a wrapper cgi-script in php, perl, or whatever you
normally use. The easiest way is to get the ViewCVS package from their website
at http://viewcvs.sourceforge.net and follow the instructions.

Alternately, you can hack the 'cvsweb' package to call CvsGraph. There are
several scripts and patches available from the CvsGraph homepage (see below for
address). However, the scripts are no longer maintained because ViewCVS has
native support now.

To generate an image do something like:
	$ cvsgraph -r /home/to/repository -m module -o mygraph.png myfile.c,v

This generates a revison/branch image of the rcs file 'myfile.c,v' and puts it
into 'mygraph.png'. The '-r' option is the path to the repository *located and
accessible* on your filesystem. The '-m' is the module in the repository. Note
that the extension of the file ends with ",v".

Just to make it clear:	You cannot make images from a cvs-repository over the
			internet as if you were using cvs. The repository files
			must be on a locally mounted filesystem. However, you
			can use cvsup or rsync to get a repository to your
			local filesystem and make then image from there.

Type 'cvsgraph -h' to get a full list of options. If the output is not given
(no '-o'), then the output is written to standard output.

Please read the manual pages cvsgraph(1) and cvsgraph.conf(5) for more
information on execution and configuration.



Todo
----
- do a better job in making a layout (auto moving branches and rubber banding
  revision-connectors to make place). A start is made, but this is not very
  functional yet.

- draw only a part or parts of the tree.



License
-------
CvsGraph is distributed under GNU GPL v2. See 'LICENSE' for more information.



Contact
-------
HomePage: http://www.akhphd.au.dk/~bertho/cvsgraph
E-mail: cvsgraph@akhphd.au.dk

Greetings Bertho

