如何恢复SVN工作副本中的ONLY目录?

时间:2011-01-27 15:54:52

标签: svn recursion directory properties revert

我想在SVN工作副本中还原目录和所有子目录,以便它们与存储库匹配,但我不想触及那些内容中的任何文件目录。

我的一个SVN应用程序以递归方式在我的工作副本中的每个目录上设置SVN属性,但我想还原这些更改以阻止它突出显示它们并尝试将更改提交到SVN属性。简单地改变它以匹配HEAD是行不通的。

有什么想法吗?我已经阅读了各种SVN资源,但似乎都没有处理这种边缘情况。

4 个答案:

答案 0 :(得分:105)

适用于所有平台:

svn revert . --recursive

(请注意,这将还原所有内容,而不仅仅是目录。)

答案 1 :(得分:9)

您可以将findsvn revert结合使用:

find . -type d | grep -v .svn | xargs svn revert

除非您使用-R选项(相当于--depth=infinity),否则不会触及目录中的任何文件。

答案 2 :(得分:2)

首先,在安全的地方制作工作副本的副本。 :)

您可以使用以下命令编辑svn工作副本的属性:

REM Delete all mergeinfo properties recursively
svn propdel svn:mergeinfo -R

答案 3 :(得分:1)

在命令行的Windows上,您可以这样做:

for /d /r %i in (*) do svn revert %i

如果您从批处理文件中调用,请改用%%i请先备份!

此命令 dirty ,将遍历所有目录,甚至是未修改的目录或不在svn下的目录。您可以使用类似Ruby脚本的方式以更清晰的方式执行操作:

`svn st`.split("\n").grep(/^ M\s+(.*)/) { $1 }.find_all { |i| File.directory? i }.each do |i|
  system "svn revert #{i}"
end