可以在subversion中撤消导入吗?

时间:2010-02-21 14:46:28

标签: svn

偶然我在错误的目录中调用了“svn import ...”。有没有明智的方法来消除这个错误?

谷歌搜索我没有找到任何有用的答案,并且我在stackoverflow上找到的最接近我的问题是importing the correct data to the wrong place,而我将错误的数据导入到正确的位置。

并且:存储库不是新的,因此删除它是不可能的。

如果我无法撤消版本控制系统中的操作,那将是一种讽刺。那么有人可以帮助我吗? (谢谢!)

编辑:我将我的存储库存储在Berkley数据库中,即它位于文件系统中。查看所有文件/目录的修改日期以及刚刚修改过的文件的内容,我能够找出除了一件事之外要做的事情:有人知道txn-current的文件是什么吗?我想它与事务处理有关,但其内容的含义是什么(长度是2个字节)?

编辑2:感谢您提供有用的答案。我接受了马丁的答案,因为它应该提供正确的方法(因为我在时间压力下我只是删除了一些文件,如我在第一次编辑中暗示的那样忽略了txn-current的内容并且直到现在都很好)。但请查看Wim在评论中给出的链接!

2 个答案:

答案 0 :(得分:11)

您不能直接撤消提交,唯一的选择是执行svnadmin dump,从dumpfile中删除提交(使用文本编辑器手动删除,或使用svndumpfilter,并再次svnadmin load

如果数据作为较旧的版本保留在存储库中的某个位置并不是一个真正的问题,那么您可以svn delete而不是提交其他内容。

答案 1 :(得分:10)

如果您导入文件后没有其他提交,则可以使用svn dump轻松删除最新修订。

以下示例来自this page

  • (假设修订1-125没问题,126是最后一次修订,导致问题)
  • 备份存储库,然后转储存储库(最后一个版本除外):
    • > svnadmin dump -r1:125 myrepo > my.dump
  • 现在创建一个新的存储库并加载转储:
    • > svnadmin create myrepo
    • > svnadmin load myrepo < my.dump