【发布时间】:2010-12-14 05:45:11
【问题描述】:
假设存储库有 20 个修订版。记录的当前版本是版本10,而实际的本地文件是基于最新的版本20。我不想从修订版 10 分支。我想继续修订20。
目前我正在做的是将所有文件复制出修订目录,运行 hg update -C (更新修订号),删除存储库目录中的所有文件,将所有文件复制回来,然后犯罪。你可以说这很烦人而且浪费时间。有没有办法只更新修订号,而不修改任何本地文件?
提前致谢。
编辑:有很多用例(我主要使用 TortoiseHg)。
1) 在提交期间提示从存储库中删除文件时,我错误地选择了“否”。我可以使用 mq 中的条来删除修订,但这将恢复所有提交的文件。相反,我想“重新父”到以前的修订版,再次提交,然后删除不需要的修订版。这可能随时发生在任何人身上,不只是我,不只是一次。
2)我有一台开发机器A,我在上面开始项目,几个月后切换到机器B。 A 上的代码变旧,B 上的代码未提交更改。如果我想在A上继续开发,我需要通过Flash或网络等方式将代码复制到A上。现在我想在A上提交而不分支(因为A上的代码实际上是基于当前的提示)。这种情况发生的频率可能不那么频繁,但仍然不是“一次”的问题,而且在涉及一个大项目时更有可能发生。
3) 存储库有 2 个分支 C 和 D。大约有 2000 个文件。当前的提示在 C 中。我想用 C 中的同名文件覆盖 D 中的一些文件(因为 C 实现更多)同时保留其他文件不变,然后在 D 中制作新提示。我有几个选择。我可以更新到 D,将 D 的最新版本与当前提示进行比较,进行更改并提交。更新需要一些时间,比较的难度很大程度上依赖于比较工具。我也可以先比较,进行更改,备份整个目录,更新到 D,然后恢复整个目录。这更麻烦。但如果我可以“重新成为”D,我只需要做出改变并提交。这不依赖于比较工具,因为 TortoiseHg 中的提交窗口有差异列表。
如果您愿意,可能会有更多用例。我希望 Mercurial 提供这样的“重新父级”功能(据说是 hg 更新的新选项),或者至少是方便的替代方案。
【问题讨论】:
-
你是怎么进入这个状态的?
-
不应该浪费,因为这应该是一次性的工作。如果您需要定期执行此操作,我们需要找出原因,因为您肯定做错了其他事情。换句话说,虽然
debugsetparents可以在这里帮助你,但它是完全不正确的。这就像每次射击时都试图帮助您修复腿,而更好的方法是教您如何瞄准霰弹枪。那么,您如何以第 10 版作为父级,但以第 20 版的内容结束呢?
标签: mercurial tortoisehg