A CVS/RCS repository grapher
Changes for 1.4.1
- 19-Jul-2004: Fixed the version number to be 1.4.1
- Fix a longstanding date-bug in showing local time. Now timezone is
- Fix the CVSNT habbit of adding info to the tag in symbols. The trailing
data is skipped for now. I might use it later on; it contains a date and
comments on tags.
- Fix the author recognition for CVSNT with broken rcsfile(5) format. This
might not be a total remedy, but should fix some.
- Fix XHTML <br> to be <br /> and add HTML-izing '&' to
& and '"' to "
- Fix execution flags of regexec().
- Fix the sizeof(void *) vs sizeof(int) problem. Now look for int, long and
long long in configure.
- Add the arrow patch and adapted to be more configurable.
- Fix manual page typo. Documentation and other aesthetic related fixes.
Changes for 1.4.0
- Fix warnings in readconf on some 'older' compiler systems.
- Implement new option to generate proper maps for different levels of HTML.
The option -x[34x] determines HTML 3.x (default), HTML 4.x or XHTML style maps.
- Implement a scheme to visualize merges based on tag names. If tags are
consistently named at the mergepoint and the destination, then these points can
be detected using regular expressions. Several new configuration options,
merge_*, describe the tags. Thanks to Andy Wood for sending me an inspiring
patch, testing and discussions.
- Implemented HTMLizing of expansion with %(...%). This prevents a possible
cross site scripting exploit when you use '<', '>' or '"' in tagnames.
This is a remote chance (you must be stupid to use these characters in a
tagname) but anyway, your system can be under attack.
- Fixed backing up in the lexer. This improves speed slightly because no rule
requires lookahead over one character anymore.
- Fixed a bug in the initial placing of left to right displaying.
- Half-fixed a bug in the kerning code, where a loop-safeguard was triggered
way too soon (at 100 iterations). This has now been changed to 10000, but
should be dependent on the number of drawable branches, as the function is at
least order O(N^2). However, more analysis is required to ensure safe guarding
under all circumstances.
- Implemented folding of empty branches. Many uses of CVS create many
branches on the same revision but have no commits on them. This occurs often
with stable files like .cvsignore files and the like. A new configuration
option branch_fold enables imaging consequtive brances with no commits in the
same branch-box. This reduces images by a huge factor (28000x1700 ->
2100x2300, i.e. a factor of 10). It also speeds up drawing considerably. The
branch_fold option is on by default.
- Fix duplicate branch-boxes (branch_dupbox=true). No duplicates should be
created if there are no commits on a specific branch. There is no reason for
having two boxes on top of each other.
- Implement folding for all branches on the same branchpoint if empty. New
option branch_foldall controls this behavior. See cvsgraph.conf(5) for details.
The imagemap is configured to map all branches within the box.
Changes for 1.3.0
- Implement a workaround for browsers that do not understand unordered
y-coordinates in the imagemap when generated upside down.
- Fix the slowness of CvsGraph when parsing very large (typically -kb files) by
bypassing the parsing of the actual deltatext. On my machine (K6-2/500/256M
it makes a difference of 7.5s vs 0.04s on a 93MByte file, without counting
disk-overhead; with disk-overhead it takes 12.5s). Downside is that the
logentry cannot be expanded if the file is not parsed in full (see below).
Use option parse_logs to enable log-expansions.
- Implemented logentry expansions using %l and %L. You must enable full parsing
(option parse_logs) for this to work.
- Fixed a possible buffer overflow in the string expansion. However, this is a
very low-risk overflow, since it will trash the heap and _not_ the stack.
Furthermore, you need to pass strings from CGI directly to cvsgraph without
any checks to come even close to trash the heap.
- Fixed a segfault on IRIX in the bsearch calls. These lookups could be called
with a NULL pointer and IRIX's libc doesn't like that.
- Implement left to right and right to left images. The entire tree can now be
drawn horizontally when option left_right is set. Using both left_right and
upside_down results in right to left images.
- Implement limits on how many tags are printed in a revision box using new
config parameter rev_maxtags. Ellipsis (...) are printed if the limit becomes
- Changed the configure script to handle libraries more intelligently. This
should be able to handle static libraries better.
Changes for 1.2.0
- 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
- 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_*
- 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.
- Transparent backgrounds can now be generated by setting transparent_bg option
to true in the configuration.
Changes for 1.1.3
- Fixed a coredump in empty string handling
- Implemeted diffs from branches to branchpoint (thanks to Ed Rapoport for the diff)
Changes for 1.1.2
- Fixed quiet mode to shut up when dead tags are encountered
- Fixed configure bug not recognizing --with-xx arguments
- Fixed manpage link to homepage
- Fixed default configuration to contain entities for < and >
- Extended the string expansion for all paths to expand to either with or without trailing '/'
- Added the php3 wrappers to the repository
- Fixed the multiple root option and files in the Attic in cvsweb.cgi (diff on homepage)
Changes for 1.1.1
- Implemented background colors
- Implemented shadows for the revision/branch box
- Implemented diff links in the imagemap
- Revisions can now have extra text, like date of commit, state and author
Changes for 1.1.0
- Major rewrite of a lot of code. CvsGraph will no longer call rlog to get the
logs of a RCS/CVS file. Instead it will read the repository file directly. This
enables the proper evaluation of the tree structure in the repository when revision
numbers are not in order
- Branches are now compacted horizontally so that a tree with many branches doesn't
take too much space
- Branches with no revisions are now shown
- Branches and revisions which are not in sequence or do not start at 1.1 are now
- Minor configure updates
- Implementation of imagemaps. CvsGraph can now generate html-code that allows linking
in the form of imagemaps. You can test an example on this site when browsing the CvsGraph
- Some configuration parameters have changed. It is now also possible to add custom
expansion string from the command-line using -[0-9]. See cvsgraph.conf for details
- The executable has become significantly larger because of table optimization in flex.
You can disable the optimization in configure with '--disable-speed'. This will slow the
execution, but reduce the size (approx. 60k vs 350k)
Changes for 1.0.1
- Fixed sorting of revisions
- Now using autoconf to detect/select old/new versions of gd
- Capability to generate png and jpeg formats
Changes for 1.0.0
Copyright © 2001-2004 - Fortune Tales & Hacker's Fortune.
Page last updated: .
Comments: mail me