为了账号安全,请及时绑定邮箱和手机立即绑定

收回意外签到

收回意外签到

精慕HU 2019-11-14 10:51:38
您正在使用Subversion,并且在准备就绪之前不小心签入了一些代码。例如,我经常:a)签入一些代码,然后b)进行一些编辑,然后c)点击,输入以重复上一个不幸的是签入的命令。是否可以通过Subversion从服务器撤回这种意外签入?
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

注意:这可能无法用于当前的Subversion版本,这是一个错误的想法-但我将其保留在此处以供参考

注意: 通常,如果您错误地签入,则应该恢复提交-请参阅此问题的其他答案。但是,如果您想知道如何真正撤消提交的影响并将存储库更改为以前的状态,则下面有一些解释:

这通常不是您想要的,但是,如果您确实要从存储库中删除实际的提交版本,则可以按照以下步骤在存储库上进行讨厌的回滚(假定已将$REV其设置为最新版本)删除):

  • 请先备份您的存储库,因为这些更改可能会破坏存储库(并阅读以下假设)

  • 将您的本地副本还原到以前的版本,以免混淆(svn revert -r $((REV-1))

  • 在存储库中,删除db/revs/$REVdb/revprops/$REV

  • 在存储库中,删除db/current和(对于Subversion 1.6或更高版本)db/rep-cache.db,然后运行svnadmin recover .

  • (可能)调整权限db/rep-cache.db以防止尝试写入只读数据库错误

所有这些都假定:

  • 您正在使用fsfs基于仓库

  • Subversion版本大于1.5.0(否则,您必须手动编辑db/current和更改版本号,而不是运行svnadmin recover .

  • 尚未提交其他后续修订

  • 您具有对存储库文件系统的写访问权

  • 执行上述操作时,您不怕其他人尝试访问它

当一个巨大的文件被提交到一个我不想永远保留在历史记录(和镜像等)中的存储库时,我就完成了。这绝不是理想或正常的做法...


查看完整回答
反对 回复 2019-11-14
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

如果您的意思是,我该如何清除意外签入的历史记录:这很困难。


svn不允许您撤消任何操作,因为它会将修订版本保存为变更集。但是,有些工具可让您在存储库转储中执行几乎所有操作。您可以:


转储您的仓库。


使用过滤流从SVN管理工具来摆脱签入的。


把它放回仓库。


但这可能会完全破坏您的存储库,因此,除非您完全了解自己的工作并备份所有内容,否则永远不要尝试这样做。


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 425 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信