3 回答
TA贡献1784条经验 获得超9个赞
注意:这可能无法用于当前的Subversion版本,这是一个错误的想法-但我将其保留在此处以供参考
注意: 通常,如果您错误地签入,则应该恢复提交-请参阅此问题的其他答案。但是,如果您想知道如何真正撤消提交的影响并将存储库更改为以前的状态,则下面有一些解释:
这通常不是您想要的,但是,如果您确实要从存储库中删除实际的提交版本,则可以按照以下步骤在存储库上进行讨厌的回滚(假定已将$REV
其设置为最新版本)删除):
请先备份您的存储库,因为这些更改可能会破坏存储库(并阅读以下假设)
将您的本地副本还原到以前的版本,以免混淆(
svn revert -r $((REV-1))
)在存储库中,删除
db/revs/$REV
并db/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 .
)尚未提交其他后续修订
您具有对存储库文件系统的写访问权
执行上述操作时,您不怕其他人尝试访问它
当一个巨大的文件被提交到一个我不想永远保留在历史记录(和镜像等)中的存储库时,我就完成了。这绝不是理想或正常的做法...
TA贡献1836条经验 获得超13个赞
如果您的意思是,我该如何清除意外签入的历史记录:这很困难。
svn不允许您撤消任何操作,因为它会将修订版本保存为变更集。但是,有些工具可让您在存储库转储中执行几乎所有操作。您可以:
转储您的仓库。
使用过滤流从SVN管理工具来摆脱签入的。
把它放回仓库。
但这可能会完全破坏您的存储库,因此,除非您完全了解自己的工作并备份所有内容,否则永远不要尝试这样做。
- 3 回答
- 0 关注
- 443 浏览
添加回答
举报