log
---
Synopsis: log [OPTIONS] [FILES]
* Alternate names - lo, rlog
* Requires - Working copy, repository
* Changes - Nothing
Shows log messages for a project, or for files within a project. The
output of log is not quite in the same style as the output of other CVS
commands, because log is based on an older RCS program (rlog). Its
output format gives a header, containing various pieces of
non-revision-specific information about the file, followed by the log
messages (arranged by revision). Each revision shows not merely the
revision number and log message, but also the author and date of the
change and the number of lines added or deleted. All times are printed
in UTC (GMT), not local time.
Because log output is per file, a single commit involving multiple files
may not immediately appear as a conceptually atomic change. However, if
you read all of the log messages and dates carefully, you may be able to
reconstruct what happened. (For information about a tool that can
reformat multifile log output into a more readable form, see Note:cvs2cl -- Generate GNU-Style ChangeLogs in Note:Third-Party Tools
for details.) (See also Note:history.)
Options:
As you read over the following filtering options, it may not be
completely clear how they behave when combined. A precise description
of log's behavior is that it takes the intersection of the revisions
selected by -d, -s, and -w, intersected with the union of those selected
by -b and -r.
* -b - Prints log information about the default branch only (usually
the highest branch on the trunk). This is usually done to avoid
printing the log messages for side branches of development.
* -dDATES - Prints log information for only those revisions that
match the date or date range given in DATES, a semicolon-separated
list. Dates can be given in any of the usual date formats (see
Note:Date Formats earlier in this section) and can be combined
into ranges as follows:
* DATE1<DATE2 - Selects revisions created between DATE1 and
DATE2. If DATE1 is after DATE2, use `>' instead; otherwise,
no log messages are retrieved.
* <DATE DATE> - All revisions from DATE or earlier.
* >DATE DATE< - All revisions from DATE or later.
* DATE - Just selects the most recent single revision from DATE
or earlier.
You may use `<=' and `>=' instead of `<' and `>' to indicate an
inclusive range (otherwise, ranges are exclusive). Multiple
ranges should be separated with semicolons, for example
floss$ cvs log -d"1999-06-01<1999-07-01;1999-08-01<1999-09-01"
selects log messages for revisions committed in June or August of
1999 (skipping July). There can be no space between -d and its
arguments.
* -h - Prints only the header information for each file, which
includes the file name, working directory, head revision, default
branch, access list, locks, symbolic names (tags), and the file's
default keyword substitution mode. No log messages are printed.
* -l - Local. Runs only on files in the current working directory.
* -N - Omits the list of symbolic names (tags) from the header.
This can be helpful when your project has a lot of tags but you're
only interested in seeing the log messages.
* -R - Prints the name of the RCS file in the repository.
This is different from the usual meaning of -R: "recursive".
There's no way to override a -l for this command, so don't put log
-l in your .cvsrc.
* -rREVS - Shows log information for the revisions specified in
REVS, a comma-separated list. REVS can contain both revision
numbers and tags. Ranges can be specified like this:
* REV1:REV2 - Revisions from REV1 to REV2 (they must be on the
same branch).
* :REV - Revisions from the start of REV's branch up to and
including REV.
* REV: - Revisions from REV to the end of REV's branch.
* BRANCH - All revisions on that branch, from root to tip.
* BRANCH1:BRANCH2 - A range of branches - all revisions on all
the branches in that range.
* BRANCH. - The latest (tip) revision on BRANCH.
Finally, a lone -r, with no argument, means select the latest
revision on the default branch (normally the trunk). There can be
no space between -r and its argument.
If the argument to -r is a list, it is comma-separated, not
semicolon-separated like -d.
* -sSTATES - Selects revisions whose state attribute matches one of
the states given in STATES, a comma-separated list. There can be
no space between -s and its argument.
If the argument to -s is a list, it is comma-separated, not
semicolon-separated like -d.
* -t - Like -h, but also includes the file's description (its
creation message).
* -wUSERS - Selects revisions committed by users whose usernames
appear in the comma-separated list USERS. A lone -w with no USERS
means to take the username of the person running cvs log.
Remember that when user aliasing is in effect (see the section
Note:The Password-Authenticating Server in Note:Repository
Administration), CVS records the CVS username, not the system
username, with each commit. There can be no space between -w and
its argument.
If the argument to -w is a list, it is comma-separated, not
semicolon-separated like -d.