=head1 NAME

cvsdelta - Manage and summarize the differences between a CVS project and local
files.

=head1 SYNOPSIS

B<cvsdelta> [options] [file ...]

=head1 DESCRIPTION

Manages and summarizes the differences between a CVS project and local files,
showing the changes of the files themselves and of their contents. Added,
changed, and deleted files are denoted with `+', `*', and `-' respectively. The
number of lines are displayed.

=head1 OPTIONS

=over 4

=item B<-a>, B<--adds>

Display the files that were added. This is done by default.

=item B<-A>, B<--no-adds>

Do not display the files that were added. The default is to show the added
files.

=item B<--banner>, B<--no-banner>

Whether to show the banner, i.e., the header and footer of the output table. By
default, the banner is displayed.

=item B<-c>, B<--changes>

Display the files that were changed. This is done by default.

=item B<-C>, B<--no-changes>, B<--nodiff>

Do not compare files that exist locally and in CVS. This executes significantly
faster, and is useful for when one only wants to add and remove files, without
getting the summary of the changes. It is also helpful for dealing with
situations where CVS seems to hang after producing diff output, although
changing the compression level can help with this. The default is to show the
changed files.

=item B<-d>, B<--deletes>

Display the files that were deleted. This is done by default.

=item B<-D>, B<--no-deletes>

Do not display the files that were deleted. The default is to show the files
that were deleted.

=item B<-e>, B<--execute>

Execute the associated CVS commands ("add" and "remove") for the added and
deleted files.

=item B<-f DATE>, B<--from-date DATE>

Compare the files to their version as of the given date, rather than their
current version in CVS. The date is expected to be in CVS format, for example,
2002/12/31.

=item B<-F REVISION>, B<--from-revision REVISION>

Compare the files to their version as of the given revision, rather than their
current version in CVS.

=item B<-h>, B<--help>

Display a help message.

=item B<-i>, B<--confirm>

Interactively confirm deleted files with the user before removing them from CVS.
The default is simply to execute the remove command for relevant files. This
option is valid only with the --execute option.

=item B<--progress>, B<--no-progress>

Whether to show the progress meter as the program is working with CVS. By
default, this is not shown.

=item B<-q>, B<--quiet>

Run with minimum output. In quiet mode, the progress meter is not displayed.

=item B<-s>, B<--skip-unknown-directories>

Skip directories that are not in CVS. The default behavior is to process all
subdirectories.

=item B<-t DATE>, B<--to-date DATE>

Compare the files to their version as of the given date, rather than to the
local files. The date is expected to be in CVS format, for example, 2001/08/21.
This option is valid only with the --from-date or --from-revision options.

=item B<-T REVISION>, B<--to-revision REVISION>

Compare the files to their version as of the given revision, rather than to the
local files. This is valid only with the --from-date or --from-revision options.

=item B<-v>, B<--version>

Display the version and exit.

=item B<-V>, B<--verbose>

Run with maximum output, which is written to standard error.

=item B<-z [LEVEL]>, -B<--compression [LEVEL]>

Set the compression to the given level for net traffic. This can be useful if
the CVS server seems to hang. The default level is 3; 0 and 9 work well.

=back

=head1 ARGUMENTS

Arguments may be either files or directories.

=over 4

=item B<File>

If a file is provided, it is compared against the equivalent in CVS, if any. The
.cvsignore files are applied, so that although the file was explicitly provided,
it may be ignored.

=item B<Directory>

Directories are processed recursively for files that are not filtered out by
.cvsignore files.

=back

=head1 EXAMPLES

    % cvsdelta

Lists the changed files.

    % cvsdelta --execute

Lists the changed files, and executes the associated add and remove commands.

    % cvsdelta --compression 9 --execute --confirm --no-changes

Run with the maximum compression level. Add and remove the appropriate files,
but get confirmation from the user before removing any files. Do not compare
files that exist both locally and in CVS.

=head1 ENVIRONMENT

=over 4

=item $HOME/.cvsdeltarc, .../project/.cvsdeltarc

Resource files containing name/value pairs, separated by either ':' or '='. The
valid fields of a .cvsdeltarc file are as follows, with their default values:

    quiet:                    false
    verbose:                  false
    execute:                  false
    confirm:                  false
    diff:                     true
    compression:              3
    adds:                     true
    changes:                  true
    deletes:                  true
    skip-unknown-directories: false
    banner:                   true

"yes" and "on" are synonymnous with "true". "no" and "off" signify "false".

The values in the project .cvsdeltarc file will override those in the user's
.cvsdeltarc file. The project .cvsdeltarc is assumed to be at the topmost
directory in the local file hierarchy.

=item CVSDELTAOPTS

A string of whitespace-delimited options, the same as listed above. These values
override those of the resource files.

=back

=head1 NOTES

If a file exists in the CVS project but not locally, it is assumed that the file
has been deleted, not that it may have been recently added by another user. The
--confirm option can be used to deal with this situation.

=head1 AUTHOR

Jeff Pace <jpace@incava.org>

=head1 COPYRIGHT

Copyright (c) 2002, Jeff Pace.

All Rights Reserved. This module is free software. It may be used, redistributed
and/or modified under the terms of the Lesser GNU Public License. See
http://www.gnu.org/licenses/lgpl.html for more information.

=cut
