Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何将mercurial存储库从某些修订/推送中删除_Svn_Mercurial_Dump_Revisions - Fatal编程技术网

Svn 如何将mercurial存储库从某些修订/推送中删除

Svn 如何将mercurial存储库从某些修订/推送中删除,svn,mercurial,dump,revisions,Svn,Mercurial,Dump,Revisions,在我最近的4-5次修订/推送到主存储库时,我破坏了一些代码。现在,我想完全删除这个推送,并从那个点开始我的存储库的头部。我该怎么做?在SVN中有dump命令,它将整个存储库从一个版本复制到另一个版本。有Mercurial或其他方式的替代品吗?您可以使用 尽管如此,我真的不明白为什么人们总是想在他们的风投历史中隐藏/删除他们犯下的错误。只要你在一个更新的版本中修复它,它就没有那么重要了。Quardas,“完全删除”不是mercurial默认词汇表的一部分。这是一个围绕不可改变的历史建立的系统。你可

在我最近的4-5次修订/推送到主存储库时,我破坏了一些代码。现在,我想完全删除这个推送,并从那个点开始我的存储库的头部。我该怎么做?在SVN中有dump命令,它将整个存储库从一个版本复制到另一个版本。有Mercurial或其他方式的替代品吗?

您可以使用 尽管如此,我真的不明白为什么人们总是想在他们的风投历史中隐藏/删除他们犯下的错误。只要你在一个更新的版本中修复它,它就没有那么重要了。

Quardas,“完全删除”不是mercurial默认词汇表的一部分。这是一个围绕不可改变的历史建立的系统。你可以扭转你后悔的事情,但你不能删除它。想想一位科学家在实验室里用钢笔在日志上的编号页上写字——撕下一页被认为是欺诈。保留你的盲点和错误是有价值的,只要你记得不要再尝试

考虑使用
hg backout
,它可以轻松、自动地添加变更集的逆项,从而完全撤消它,但同时保留变更集及其逆项的记录

如果你真的不能接受这个概念,那就试试看
clone-r
。它允许您将存储库克隆到某一点。例如:

hg clone -r -6 myrepo partial-myrepo
mv myrepo myrepo-with-stuff-I-regret
mv partial-myrepo myrepo
这将用一个新的副本替换您的回购协议,该副本将省略最后五个变更集


使用mercurial默认工具集以外的工具(扩展,如histedit、strip、mercurial queues等),还有很多其他方法可以做同样的事情,但最好不要删除历史记录,如果删除了,最好不要使用扩展。

看起来像是一个重复的小发明,我完全同意删除历史记录是一个坏主意。当你有需要完全删除的敏感信息,而不丢失项目的历史记录时,这不是一个坏主意。一个常见的错误是发现敏感密码被签入需要向更广泛受众发布的项目太迟了。关于最佳实践的讨论是无关紧要的,能够修正它才是重要的。汞是一种动力工具。它不应该试着为我思考。事实是,敏感信息会泄露出来。问题是我们失去了什么来完成它。强迫用户使用核选项并不是最好的方法。当科学家拥有实验室和日志,并写下他应该保存在别处或头脑中的密码时,就不是这样了。当开发人员在信息披露方面犯了错误时,保留错误并不是最好的选择。有些错误不是代码错误,有些是必须在发布前擦除/提取的密码、私钥和专有文档。有了SVN,它就像svnadmin转储、全局替换、从转储恢复新回购一样简单。使用hg应该很容易,因为这是一个常见的意外事件。当然,但这个问题是关于坏代码的。Histedit和friends使历史的实际修改比转储和恢复更容易,但当然,对于任何系统,都有一个警告,即其他系统已经得到的任何东西都不存在了。通常最好只创建新凭据。