有没有办法更改多个草稿更改集的提交日期?特别是在最后一个之前的变更集。
我可以使用hg ci --amend -d xxx
更改上次提交的提交日期,但不能对任何早期提交更改。
这显然是非平凡的,因为变更集日期是变更集哈希的输入之一(顺便说一下,这是权威记录的位置?),因此这里的更改将改变所有变更集的后代的哈希值。但是,由于这些是草案变更集,因此可以。
使用histedit
似乎无法做到这一点。
我可以猜测rebase
可能会做这种事情,但相关的帮助文本没有给出任何指示,这表明它至少是异国情调。
(我正在尝试解决的问题是某些代码正在一台机器上进行编辑和提交,故意不是网络连接而且经常重新启动;这意味着它的系统时间概念可能是错误的,并且有时非常错误 - 就像在1970年一样! - 除非有人记得手动将系统日期设置为合理的值。虽然这对提交图的拓扑结构无关紧要,但至少对每个人来说都是好的,如果日期与现实有一定的关系。因此,我希望在“推前审查”步骤中解决这个问题。)
好吧,有一种方法你已基本完成了自己,但它需要激活evolve扩展:设置一次提交的日期,并重新设置所有后续的,并重复,直到你为每个提交设置日期。假设线性历史:
hg update -rOLDEST_UNCHANGED
hg commit --amend --date DATA
hg rebase -b(OLDEST_UNCHANGED+1) -dtip
冲洗并重复,每个步骤将changesetID增加1。如果您的历史记录不是线性的,则必须注意您重新定义的修订版本以及您更新的修订版本。
第二种选择,但不是更好,是利用evolve扩展中的evolve命令。这有助于您完成此过程,使上述步骤更容易:
您仍然必须从要刷新的第一个提交开始:
hg update --rev OLDEST_UNCHANGED
hg commit --amend --date DATE
hg evolve --all
并通过增加changesetID再次重复此过程,直到每次提交都有您想要的日期。
(如果有一些方法可以使用evolve为其发展的所有提交设置/刷新提交日期,我很乐意学习 - 否则它肯定是一个功能请求)
对于那些使用TortoiseHG(不知道evolve
扩展,即使它确实如此,有一种更简单的方法),
使用mq
扩展名。
shelve
扩展)