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

发布于 2024-10-14 14:18:59 字数 247 浏览 6 评论 0原文

我想恢复 SVN 工作副本中的目录和所有子目录,以便它们与存储库匹配,但我不想触及这些目录中的任何文件

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

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

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 inside those directories.

One of my SVN applications recursively set an SVN property on every directory in my working copy but I want to revert those changes to stop it highlighting them and trying to commit the changes to the SVN properties. Simply changing it to match the HEAD doesn't work.

Any ideas? I've read through various SVN resources but none of them seem to deal with this edge case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

帅气称霸 2024-10-21 14:18:59

适用于所有平台:

svn revert . --recursive

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

Works on all platforms:

svn revert . --recursive

(Note that this will revert everything, not just directories.)

江城子 2024-10-21 14:18:59

您可以将 findsvn revert 结合使用:

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

除非您使用 -R 选项(即相当于--深度=无穷大)。

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 -Roption (which is equivalent of --depth=infinity).

只有影子陪我不离不弃 2024-10-21 14:18:59

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

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

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

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
子栖 2024-10-21 14:18:59

在 Windows 上,您可以从命令行执行此操作:

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

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

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

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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文