有没有办法更改多个草稿更改集的提交日期?特别是在最后一个之前的变更集。
我可以使用hg ci --amend -d xxx
更改上次提交的提交日期,但不能为之前的提交更改。
这显然是非平凡的,因为变更集日期是变更集哈希的输入之一(顺便说一下,这是权威记录的位置?),因此这里的更改将改变所有变更集的哈希值后人。但是,由于这些是草稿变更集,所以没关系。
使用histedit
似乎无法做到这一点。
我可以猜测rebase
可能能够做到这一点,但相关的帮助文本没有给出任何指示,这表明它至少是异国情调。
(我正在尝试处理的问题是某些代码正在一台机器上进行编辑和提交,故意不是网络连接而且经常重新启动;这意味着它的系统时间概念可以是错误的,有时是非常错的 - 就像在1970年一样! - 除非有人记得手动将系统日期设置为合理的值。虽然这对提交图的拓扑结构无关紧要,但至少对每个人来说都是好的是的,如果约会与现实有某种关系。因此,我希望在“推前审查”步骤中解决这个问题。)
答案 0 :(得分:1)
嗯,有一种方法你基本上已经排好了,但它需要激活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为其发展的所有提交设置/刷新提交日期,我很乐意学习 - 否则肯定是一个功能请求)
答案 1 :(得分:-1)
对于使用TortoiseHG的用户(不知道evolve
扩展名,即使知道,也有一种更简单的方法),
使用mq
扩展名。
shelve
扩展名)