我想在SVN工作副本中还原目录和所有子目录,以便它们与存储库匹配,但我不想触及那些内容中的任何文件目录。
我的一个SVN应用程序以递归方式在我的工作副本中的每个目录上设置SVN属性,但我想还原这些更改以阻止它突出显示它们并尝试将更改提交到SVN属性。简单地改变它以匹配HEAD是行不通的。
有什么想法吗?我已经阅读了各种SVN资源,但似乎都没有处理这种边缘情况。
答案 0 :(得分:105)
适用于所有平台:
svn revert . --recursive
(请注意,这将还原所有内容,而不仅仅是目录。)
答案 1 :(得分:9)
您可以将find
与svn 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