I want to revert a directory and all sub-directories in an SVN working copy so they match the repository but I don\'t want to touch any files i
On Windows from the command line you could do this:
for /d /r %i in (*) do svn revert %i
If you call that from a batch file use %%i
instead. Please back up first!
This command is dirty and will go through all directories, even unmodified ones or the ones not under svn
. You could use something like this Ruby script to do in a cleaner way:
`svn st`.split("\n").grep(/^ M\s+(.*)/) { $1 }.find_all { |i| File.directory? i }.each do |i|
system "svn revert #{i}"
end
You could use find
combined with svn revert
:
find . -type d | grep -v .svn | xargs svn revert
This won't touch any files inside the directories unless you use the -R
option (which is equivalent of --depth=infinity
).
Works on all platforms:
svn revert . --recursive
(Note that this will revert everything, not just directories.)
Firstly, make a copy of your working copy somewhere safe. :)
You can edit properties on svn working copies using commands like this:
REM Delete all mergeinfo properties recursively
svn propdel svn:mergeinfo -R