CVS Tutorial - Questions

You have an account (jdoe) on cvs.mydomain.com. The project you are currently working on has a repository in /projects/myproj/cvsroot. The repository has two modules: src and doc.


How can you checkout your own working copy of all available modules to ~/myproj? Please note that the CVS server does allow only SSH connections.





You haven't worked on the code for a while. How can you get the latest sources into your previously checked-out working copy?





You have changed one of the original source files (src/main.c). How can you see the changes before commiting your version?





You know another project member has modifed the same file as you. How can you see his changes without updating your working copy?





You update your working copy before checking in your changes and you get a warning about conflicts. How can you find the conflicts in this file?





You have finally managed to resolve all conflicts and you want to commit your changes. Give two ways to do it: 1) type the commit message in emacs and 2) give a short commit message on the command line.





How can you see what tags are used for a file?





You have committed your changes and you want to put a symbolic tag on the sources before adding a new feature. How do you tag a single file? How do you tag all files in the current directory? How do you recursively tag all files in the current directory and all subdirectories?





You have finished with your experimental stuff. How can you see what has been changed since the previously defined tag?





At the same time as you made the (still uncommitted) weird changes someone else modified somethig. How can you see what was changed in the HEAD branch since your tag?





In your project you need a slightly modified KPhone. How can you import the KPhone 4.1.1 sources into the KPHONE branch so that they appear in src/kphone?





You would like to create a backup of the repository before importing the new KPhone. How can you do it?





After some time a new KPhone is released (version 4.2). How can you import it into the same KPHONE branch and merge the changes made between 4.1 and 4.2 into the HEAD branch?





Bonus question: what does the cvs -H admin -m 1.42:"New message" filename command do?