Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
530 views
in Technique[技术] by (71.8m points)

svn - What's a simple way to undelete a file in subversion?

These instructions are a little intimidating and confusing: http://svnbook.red-bean.com/en/1.0/ch04s04.html#svn-ch-4-sect-4.3 . And also they don't seem to mention that it's much simpler if you haven't yet checked in after doing the "svn rm" [1].

So I thought this would be a good place to record a simpler answer for those googling for this.

[1] To an svn newbie, it might appear that "svn rm" immediately destroys the file. I recall doing svn rm thinking that would just remove it from source control and freaking out when the file itself actually disappeared. So a sub-question is, what's the right way to remove a file from version control without actually removing your local copy?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...