What's a simple way to undelete a file in subversion?
If you just did
svn rm foo.txt
then you can undo that with simply
svn revert foo.txt
If you already checked in after doing the "svn rm
" then you can look at the log (svn log
), find the last revision where the file existed, and grab it from that version.
One way to do that is to merge in the old revision that has the file. Assuming the current revision is 123 and the last version with that file is 120, then do this:
svn merge -r123:120
Maybe first do a dry run to make sure it won't do anything you don't want:
svn --dry-run merge -r123:120
For the sub-question, how to remove a file from svn without removing the local copy:
svn rm foo.txt --keep-local
Or, of course, you could just copy to a temp file before svn rm'ing and then copy back:
cp foo.txt foo.txt-tmp
svn rm foo.txt
(svn ci -m "just removed foo.txt from the repository")
cp foo.txt-tmp foo.txt
for whatever reason, the -r
arg wasn't working for me (svn version 1.6.9). I tried before and after the src
, but kept getting a message that the file was not found in the current revision (duh). Same with --revision. Using the @ style syntax worked though:
svn cp url/to/removed/foo.txt@4 foo.txt