So the time comes when you want to get a file back from the dead. You’ve deleted it in the past because you were positive you wouldn’t need it but, lo and behold, you need it again now.
That’s OK, you just go into the repository and move the file from the Attic back to the “live” directory and you’re done, right?
Actually when you “cvs remove” a file CVS not only moves it into the Attic but also makes a new revision of the file and marks it as “dead”.
Here is how it might look:
head 1.10; access; symbols; locks; strict; comment @# @; 1.10 date 2004.04.14.13.20.08; author admin; state dead; branches; next 1.9; 1.9 date 2003.12.09.20.36.05; author admin; state Exp; branches; next 1.8; ... ... ...
So you see that the file was in version 1.9 and then it was removed and gained a new version (1.10) and is now dead (state dead;).
OK, now what?
Well, here’s how you go about bringing the file back into working shape:
Go into the working copy of the project
Issue the following command to recover the file
cvs -Q update -p -r 1.9 foo.pl > foo.pl
Add the file (again)
cvs add foo.pl
Commit it cvs ci -m “back from the dead” foo.pl
And you’re done.
The thing that still bugs me is that you have to delve into the repository to find out the last revision the file had before deletion but so far I couldn’t find a better way to do it.