Section 3.7. Moving Files or Directories


3.7. Moving Files or Directories

There is no CVS command designed specifically to move a file or file directory. In fact, CVS's design doesn't accommodate such moves. However, you can work around this limitation using a combination of CVS commands, or by altering the repository using operating-system commands. Moving files can make project history difficult to track, because then a file's history is recorded across two different files in different locations. Minimize this potential source of confusion by recording the new and old locations with meaningful log messages.

To rename a file or directory at the operating-system level, "move" it from the old filename to the new filename. For example, use the mv command on Unix, Linux, and Mac OS X; on Windows, you can use the move command.


3.7.1. Moving Files

The recommended way to move a file is to use cvs remove followed by cvs add, with messages that state where the file was moved from and to. This method preserves the file's history and allows reversion to earlier versions of the project in its old location. However, the messages stored with the add and remove commands are the only record of the move. Example 3-19 shows this method being used to rename the wizzard.h file.

Example 3-19. Renaming a file

 bash-2.05a$ mv wizzard.h config.h bash-2.05a$ cvs remove wizzard.h cvs server: scheduling 'wizzard.h' for removal cvs server: use 'cvs commit' to remove this file permanently bash-2.05a$ cvs add config.h cvs server: scheduling file 'config.h' for addition cvs server: use 'cvs commit' to add this file permanently bash-2.05a$ cvs commit . . . Moving src/wizzard.h to src/config.h CVS: --------------------------------------------------------------------- CVS: Enter Log.  Lines beginning with 'CVS:' are removed automatically CVS: CVS: Committing in . CVS: CVS: Added Files: CVS:  config.h CVS: Removed Files: CVS:  wizzard.h CVS: --------------------------------------------------------------------- . . . RCS file: /var/lib/cvs/wizzard/src/config.h,v done Checking in config.h; /var/lib/cvs/wizzard/src/config.h,v  <--  config.h initial revision: 1.1 done Removing wizzard.h; /var/lib/cvs/wizzard/src/wizzard.h,v  <--  wizzard.h new revision: delete; previous revision: 1.5 done 

3.7.2. Moving Directories

The recommended way to move a directory is to create the destination directory and add it to CVS. Use the technique described in the previous section to move all the files from the original directory to their new location, and use the -P flag for all checkouts and updates. By maintaining the old directory, previous releases of the project can be retrieved and the old copies of files that were in that directory are still stored in the repository.

Another way to move files or directories is to edit the repository directly. See Chapter 6 for editing methods and their advantages and consequences.




Essential CVS
Essential CVS (Essentials)
ISBN: 0596527039
EAN: 2147483647
Year: 2006
Pages: 148

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net