可以在subversion中撤消导入吗?

j.p*_*.p. 6 svn

不小心我在错误的目录中调用了"svn import ...".是否有一种明智的方法来消除这个错误?

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

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

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

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

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

Wim*_*Wim 11

您无法直接撤消提交,唯一的选择是执行svnadmin dump,从转储文件中删除提交(使用文本编辑器手动删除,或使用svndumpfilter,svnadmin load再次使用它).

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

  • 旧版本的SVN书籍提供了有关使用svndumpfilter的更多信息:http://svnbook.red-bean.com/en/1.2/svn.reposadmin.maint.html#svn.reposadmin.maint.tk.svndumpfilter (2认同)

M4N*_*M4N 10

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

以下示例取自 此页面:

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