我有一个汞库,其中changeset 0代表“添加.hgignore”。从变更集1开始,我通过脚本从大量的Subversion修订中逐步添加了变更集。然后我用Hg工作了一段时间。在更改集0(零)之前添加其他更改集?
现在我决定需要更多的Svn修订版,它们位于历史早于修订版(Hg中的变更集1)的位置。
是否可以在0和1之间插入新的变更集?如果是的话:如何?
我有一个汞库,其中changeset 0代表“添加.hgignore”。从变更集1开始,我通过脚本从大量的Subversion修订中逐步添加了变更集。然后我用Hg工作了一段时间。在更改集0(零)之前添加其他更改集?
现在我决定需要更多的Svn修订版,它们位于历史早于修订版(Hg中的变更集1)的位置。
是否可以在0和1之间插入新的变更集?如果是的话:如何?
可以使用水银含汞转换为此。您需要为此启用convert extension。作为转换的一部分,该扩展程序将允许您将拼接历史合并在一起。这仅仅意味着您可以为现有变更集指定新父项。
所以如果你开始
$ hg glog
@ changeset: 1:aaee9686dedf
| tag: tip
| user: Martin Geisler <[email protected]>
| date: Fri Mar 23 15:08:11 2012 +0100
| summary: bar
|
o changeset: 0:17474bd28fe5
user: Martin Geisler <[email protected]>
date: Fri Mar 23 15:08:05 2012 +0100
summary: foo
您可以首先从SVN导入需要进行修正:
$ hg update null
$ run-your-script.sh
这将创建一个第二根变更 - 你现在实际上有两个不相交的历史在你的库。我做了一个单一的变更,我加了baz
文件:
$ hg glog
@ changeset: 2:515e1292862b
tag: tip
parent: -1:000000000000
user: Martin Geisler <[email protected]>
date: Fri Mar 23 15:09:19 2012 +0100
summary: baz
o changeset: 1:aaee9686dedf
| user: Martin Geisler <[email protected]>
| date: Fri Mar 23 15:08:11 2012 +0100
| summary: bar
|
o changeset: 0:17474bd28fe5
user: Martin Geisler <[email protected]>
date: Fri Mar 23 15:08:05 2012 +0100
summary: foo
的最后一步是将历史联系在一起:我们要17474bd28fe5有515e1292862b作为其第一个父。使用hg log --debug
看到完整的变更哈希值,并进行切片的地图文件,
17474bd28fe535c15c7dad3659994ab048146e99 515e1292862ba2d6776294ffb00c533dc6850c66
然后运行
$ hg convert --splicemap map.txt your-repo your-spliced-repo
你会发现修改后的历史your-spliced-repo
。
如问:是的,你可以。
我发现至少有3种方法可以做到这一点。全部 - 与扩展
导入集的版本到尖的,进口后使用任何
rebase -s tip -d X
每个可移动的修订,对于N个版本N操作)我喜欢MQ作为最有力的选择(MQ内我就可以打磨前的变更,以消除冲突和|更好的方式或分割的变化)
很好!你能向我解释三种方法吗? :-) – 2012-03-23 13:10:40
@ChristophJüngling - 加入回答评论 – 2012-03-24 03:54:57
感谢您的详细解答,马丁!这工作相当不错,但最后一步不起作用。汞转换告诉我,它找不到一个特定的文件(它被添加为一个大文件;大文件扩展名在用户级别启用)。 – 2012-03-27 09:06:59
@ChristophJüngling:啊,这是一个大文件?这有很大的不同 - 大文件的扩展是非常有创意的扩展。恐怕'hg convert'不知道大文件。当你想重命名/包含/排除'foo/bar'时,尝试重命名'.hglf/foo/bar'。也就是说,在站点文件上而不是在工作副本中看到的文件上运行。 – 2012-03-27 12:03:09
再次感谢。我在'hg convert --splicamap ...'之前试过'hg lfconvert --to-normal',然后它就起作用了! – 2012-03-27 13:10:39