Obtaining information about files

Browsing cvs logs
When you mark a file in the main view and choose Browse log from the View menu, a

cvs log filenames

command is issued and a dialog is shown which reflects the version history of the marked file.

A screenshot of 's browse logs dialog
You can choose to see the history as a tree or in list form. What you prefer is of course a matter of taste and it depends on what information you are interested in. The tree is an intuitive representation of what has been done on different branches by which authors. As tooltips, you can see the according log messages. The list is by its nature linear and therefore does not give an immediate view of branches. On the other hand, it concentrates more otherwise relevant information on less screen estate, namely the time of each change of the file and the first part of the log message.
To obtain more information about a certain revision, you can click on it either in the list or the tree view. The fields in the middle of the dialog are then filled with the complete information provided by cvs log. You can mark two revisions, called 'A' and 'B', which are relevant if you make use of further features provided by the push buttons. Revision 'A' can be chosen with the left mouse button, revision 'B' with the middle one. In the list view, you can also navigate with with your cursor keys. In order to mark revisions 'A' and 'B', use the keybindings Ctrl A, Ctrl B, resp.
If you press the button Annotate, you get a dialog showing the text of file belonging to the revision marked as 'A'. Every line is prefixed with the information about who edited this last time, and at which revision this happened.
If you press the button Diff, a cvs diff call is issued and you get a dialog in which all the modifications between the two marked revisions are shown. To make it easy to see the changes, different colors are used to mark lines which have been added, removed or simply changed.

Browsing the history
If the used repository has logging enabled, can present you a history of certain events like checkouts, commits, rtags, updates and releases. Choose History from the View menu, and will issue the command

cvs history -e -a

This fetches the complete logging file from the server, i.e. a list of the events for all users and all modules. This can be a huge amount of data!
Now you can see the list of events, sorted by date. In the second column, the type of the event is shown:
Checkout - The user who is displayed in the 'Author' column has checked out a module
Tag - A user has used the command cvs rtag. Note that the usage of cvs tag (as done by 's Advanced Tag/Branch... command) is not recorded in the history database. This has historical reasons (see the CVS FAQ).
Release - A user has released a module. Actually, this command is rarely used and not of much value.
Update, Deleted - A user has made an update on a file which was deleted in the repository. As a consequence, the file was deleted in his working copy.
Update, Copied - A user has made an update on a file. A new version was copied into working directory.
Update, Merged - A user has made an update on a file. The modifications in the repository version on the file were merged into his working copy.
Update, Conflict - A user has made an update on a file, and a conflict with his own modifications was detected.
Commit, Modified - A user commited a modified file.
Commit, Added - A user added a file and commited it.
Commit, Removed - A user removed a file and commited it.

A screenshot of 's history dialog
You can sort the list by other criteria simply by clicking on the respective column header. In order to sort out the history entries you are interested in, there are various filter options activated by check boxes:
Show commit events - shows commits
Show checkout events - shows checkouts
Show tag events - shows taggings
Show other events - shows events not included in the above
Only user - shows only events caused by a certain usere
Only filenames matching - filters file names by a regular expression
Only dirnames matching - filters directory names by a regular expression
Special characters recognized by the regular expression matcher are:
x* matches any number of occurences of the character x.
x+ matches one or more of occurences of the character x.
x? matches zero or one occurences of the character x.
^ matches the start of the string.
$ matches the end of the string.
[a-cx-z] matches a set of characters, e.g. here the set consisting of a,b,c,x,y,z.

Watching differences between revisions
There are several places in where you can ask for a window showing the differences between revisions of a file:
In the main view, you can choose View Difference to repository.... This is based on the command cvs diff and shows you the differences between the version in your sandbox and the version to which you last updated (also known as BASE). This is in particular useful just before you commit a file, so you can find an appropriate log message.
In the dialog that is shown when a you commit a set of files, you can request a difference window by selecting a file name in the selection list, either by double-clicking it or by pressing Return. This is quite similar to using View Difference to repository... with the respective file in the main view.
In the Browse logs dialog, you can mark two revisions of a file and request a dialog showing the differences between them (see the section Browsing cvs logs).
As you may have expected, does not just dump the output of the diff command into your terminal, but shows you a graphical view as seen in A screenshot of 's diff dialog.

A screenshot of 's diff dialog
The text in the dialog is an improved variant of the text given by the diff command with the -u option. You can see the differing versions in two windows, with lines arranged such that you can do a side-by-side comparison. That means, where text has been added or deleted, the respective window shows empty lines with the marker +++++ at the left hand side. Elsewhere, you can see the running number of each line in the left column.
In the second column in the right window, you can see which kind of change has been made. Possible types are Add, Delete and Change. The respective lines are marked in blue, green and red color. In the middle of the dialog a compressed image of the color markers is shown. In this way, you can get a quick overview of the overall changes to the file. You can also use the position of the colored regions in the compressed image as an orientation when you using the scroll bars.
Normally, the scrollbars at the left and the right window are synchronized, i.e. if you scroll on the left hand side, the right hand side is scrolled by the same amount. You can change this by checking the box Synchronize scroll bars.
For information about how to customize the diff dialog, see Customizing various commands.

Watching an annotated view of a file
's annotate view is currently is simple frontend to the respective CVS command. It will be improved beyond these capabilities after the 1.0 release. For a preview, look at the script kdesdk/scripts/cvsblame in the KDE repository.
You can get to the annotate view either by choosing View Annotate from the main view or from the Browse logs dialog. Then you see in a window the latest version of the selected file. In the columns before the text, you get some information related to the latest change in each line. In the first column the revision number is displayed. In the second column you see the name of the author of that revision. Finally, in the third column you see the date of the latest change in the line.