Synopsis: log [OPTIONS] [FILES]
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 cvs2cl – Generate GNU-Style ChangeLogs in Third-Party Tools for details.) (See also history.)
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.
>instead; otherwise, no log messages are retrieved.
You may use
>= instead of
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.
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.
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.
If the argument to -s is a list, it is comma-separated, not semicolon-separated like -d.
Remember that when user aliasing is in effect (see the section The Password-Authenticating Server in 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.