Mercurial:更新到修订版,但不修改本地文件

Cre*_*ing 15 mercurial tortoisehg

假设存储库有20个修订版.记录中的当前版本是修订版10,而实际的本地文件基于最新版本20.我不想从修订版10中分支出来.我想继续修订20.

目前我正在做的是将所有文件复制到修订目录之外,运行hg update -C(更新修订版号),删除存储库目录中的所有文件,复制所有文件,然后提交.你可以说这很烦人,浪费时间.有没有办法只更新修订号,但不能修改任何本地文件?

提前致谢.

编辑:有很多用例(我主要使用TortoiseHg).

1)在提交期间提示从存储库中删除文件时,我错误地选择"否".我可以使用mq中的strip删除修订版本,但这将恢复所有提交的文件.相反,我想"重新父"到先前的修订版,再次提交,然后删除不需要的修订版.这可能随时发生在任何人身上,不仅仅是我,而不仅仅是一次.

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更新的新选项),或者至少是方便的选择.

Mar*_*nen 20

您可能会觉得这很有用:http://hgtip.com/tips/advanced/2010-04-23-debug-command-tricks/

特别是,要"重新显示"当前的工作目录,请发出:

hg debugsetparent 20
hg debugrebuildstate
Run Code Online (Sandbox Code Playgroud)


Rud*_*udi 5

您可以使用它hg debugsetparents来设置工作副本的父版本.