[LLVMdev] Moving CVS Files
John Criswell
criswell at cs.uiuc.edu
Tue Nov 15 13:18:24 PST 2005
Dear All,
For those of you who have write access to the LLVM CVS repository, I
need to ask you to take more care when moving or renaming files. If
done improperly, moving files can cause headaches when doing updates
from the repository or merging revisions between branches (which is
becoming more common with the vector_llvm branch).
There are two ways that you can move a CVS file:
1) Use the CVS commands:
a) cd into your working directory. Move the file from the old location
to the new location.
b) Use cvs rm to remove the file from its old location.
c) Use cvs add to add the file to its new location.
d) Use cvs ci to commit the remove and addition of the file. In the
logs, note the old and new locations of the file.
This approach is simple and it allows files to be added and removed
properly when using cvs up to update a working directory or merge
revisions in different branches. It also maintains all of the CVS tags
on the files correctly.
The problem with this approach is that it does not copy over all of the
revision history from the old location to the new location.
2) Manipulate the CVS Repository directly:
This method will allow you to copy the revision history of a file into a
new location. However, you have to perform this operation carefully;
failure to do it right will make merging to/from branches and cvs
updates difficult.
Even if you follow these directions, I can't guarantee that cvs up is
going to work correctly in all cases. But if you're going to copy the
revision history, following the directions below should help alleviate
some of the problems.
a) cd into the CVS repository and *copy* the RCS file (the file ending
with a ,v) from the old location to the new location inside the repository.
Please do NOT remove the old RCS file from the repository.
Please do NOT move it using the mv command.
b) cd into your working copy. Use rm and cvs rm to remove the file from
its old location. Then use cvs ci to commit the change. Make a note in
the commit log that you've moved the file, and please indicate its new
location.
c) Use cvs up in your working directory to get a copy of the file in its
new location.
d) The file in its new location will have all of the CVS tags that it
had in its old location (the revision history also contains all of the
tag information). Use cvs tag -d to remove all of the tags from the new
file.
Doing this should ensure that the file does not show up in its new
location when checking out older versions of the source code, nor will
the file magically appear in a branch that it didn't exist in before.
e) It may also be good to send email to llvmdev detailing what has been
moved.
My recommendation is to use approach #1 as it is less error prone.
Approach #2 may still cause problems when merging to/from branches, but
it should be easier to track where a file has gone if the old version
has been cvs rm'ed.
Improvements and corrections to the directions above are welcome. Any
input on how to use Approach #2 and still get cvs up to move files
correctly when merging to/from branches would be great.
Thanks everybody.
-- John T.
--
John T. Criswell
Research Programmer
University of Illinois at Urbana-Champaign
"It's today!" said Piglet. "My favorite day," said Pooh.
More information about the llvm-dev
mailing list