SVN - 彻底从 SVN 服务器中删除修订版本

12

我不幸地提交了一个大文件夹到 SVN(它有大约1.4GB和大约10000个文件,其中许多是二进制文件)。

是否有可能返回到以前的版本,并使 SVN 服务器忘记下一个版本的提交?比如说,这个提交是第120个版本。我想要将最新版本回滚到第119个版本,并删除所有第120个版本的文件和 SVN 数据库设置。

我已经尝试删除该文件夹,因此进行了121次提交。然后我尝试合并第121个和第119个版本。但这并没有帮助。第120个版本仍然存在于系统中。

接下来,我想使用 svnsync 创建 SVN 存储库的镜像,但没有选项可以设置我想要镜像哪个版本。除非我找不到这个选项。(我想设置从0到119个版本的修订版本)。

你知道我能做些什么吗?是否有命令可以完全删除一个版本,就好像它从未发生过一样?


3
这里讨论了类似的问题:如何将整个 SVN 仓库回滚或还原到早期版本。请注意,翻译过程中保持原意不变,使内容易于理解,并避免添加任何额外信息。 - paramosh
@paramosh - 谢谢,你说得对,我在尝试寻找类似的问题时没有成功... - srnka
可能是回滚或还原整个svn存储库到旧版本的重复问题。 - MarcH
2个回答

14
你需要转储仓库,然后重新加载它,跳过你不再需要的修订版本(例如你的示例中的r120)。
为此,请使用svnadmin dump命令,然后使用svnadmin load命令。
例如:
svnadmin dump c:\svn\my_repo -r0:119 > repo.dump
svnadmin load c:\svn\my_new_repo < repo.dump

在更复杂的情况下,您可能需要使用svndumpfilter,但我认为在您的情况下这是不必要的。


这样做并将其重新加载到原始存储库中安全吗?在这种情况下,工作副本会有更高的修订号码,会发生什么?它能正常工作吗? - Mark Aroni
我不会期望工作副本保持其完整性。这应该不是问题——只需删除工作副本并检出一个新的即可。 - William Leara

-1

你可以选择以下两种方式之一:

  1. 登录到你的 SVN 服务器,删除你不想要的文件,然后退出。这将创建另一个版本,但由于是通过服务器界面完成的,所以很少有出现问题的可能性。
  2. 回滚到第119个版本,进行一些小的更改,然后提交。通过“接受你的”来解决所有冲突。

1
谢谢,但这将创建新的版本,而不需要的内容仍将保留。 - srnka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接