The K Desktop Environment

2.4. Commiting files

When you have made a certain amount of changes to your working copy, and you want other developers to have access to them, you 'commit' them. With a commit, you place your versions of the modified files as new revisions into the repository. A subsequent update by another developer will bring your modifications into his working copy.

In order to commit a couple of files, select them in Cervisia's main view and choose File->Commit....


Figure 2-1. A screenshot of Cervisia's commit dialog


You get a dialog that shows you on the top a list of the selected files and on the bottom a log message for your changes. When you have finished the dialog, the command

 cvs commit -m message filenames

is used. Cervisia helps you in several ways to find a meaningful log message: First, in the file list you can double-click a file or press Return in order to see the changes you have made to the file. Second, it gives you a list of log messages you have previously used in a combo box. Third, this dialog is integrated with Cervisia's changelog editor described below.

Note

A common error you may encounter when commiting is Up-to-date check failed. This indicates that someone has commited changes to the repository since you last updated. Or more technically, that your BASE revision is not the newest on its branch. In such a case, CVS refuses to merge your modifications into the repository. The solution is to update, resolve any conflicts and commit again. Of course, if you are working on a software project, it is normally good style to check if the program still works after you have updated - after all, there could be bad interactions between your modifications and the other modifications which break the code.

Note

Another popular mistake results in the error message Sticky tag 'X' for file 'X' is not a branch. This happens if you try to commit a file which you have previously brought to a certain revision or tag with the command

 %cvs update -r X

(which is e.g. used by the menu item Advanced->Update to Tag/Date...). In such a case, the tag on the file gets sticky, i.e. further updates do not bring you to the newest revision on the branch. If you want to commit further revisions to the branch, you have to update to the branch tag before you do further commits.

With Cervisia, it is quite easy to maintain a ChangeLog file that is compliant with the format layed out in the GNU coding guidelines. To use it, choose File->Insert ChangeLog entry.... If a file with the name ChangeLog exists in the toplevel directory of your sandbox, this file will be loaded and you have the possibility to edit it. To this end, at the top of the file, an entry with the current date and your user name (which can be configured as described in Section 5.1) is inserted. When you finish the dialog this dialog by clicking OK, the next commit dialog you open will have the log message set to the message you last entered in the change log.