TLDR:我似乎在主项目的子文件夹中创建了一个单独的存储库。如何合并它们?
我有一个项目文件夹,我们称它为BOB。我将(hg clone
)BOB克隆到一个名为BOB2的新文件夹中。为了添加新功能,我在BOB2上创建了一个名为BOB-newfeatures的子文件夹。我已经在BOB-newfeatures文件夹上工作了一段时间了,并且签到了很多东西。
今天,我意识到以某种方式为BOB-newfeatures创建了一个单独的存储库(直到今天,我还没有对BOB2 main进行任何更改,因此我没有注意到没有跟踪更改)。如果我hg status
在BOB2上执行操作,它将不知道子文件夹中的更改,反之亦然。
有没有办法将它们缝合在一起?我知道我可以hg add
将BOB-newfeatures中的所有文件都保存到BOB,但是后来我认为我丢失了所有签入历史记录。
好的,我从(从头开始)以您的名字重建(希望)您的案子
BOB2>hg log -T "{node|short}\tFiles: {join(files, ', ')}\n"
25a16a8fea5e Files: Sub/3.txt
bf3c6cacb4a4 Files: 1.txt, 2.txt
ff71a2b1bbe3 Files: 1.txt
和嵌套回购
BOB2\BOB-newfeatures>hg log -T "{node|short}\tFiles: {join(files, ', ')}\n"
acac7d413ed2 Files: f1.txt
15a1f9cacf25 Files: f2.txt
f3055921fa01 Files: f1.txt
作为BOB-newfeatures
内部隐形的补充确认BOB2
BOB2>hg manifest
1.txt
2.txt
Sub/3.txt
解决问题的方法-与Wiki相比,将Convert扩展与--filemap
inverse反向使用:例如,将repo的子目录转换为单独的存储库,我将存储库根目录移至子文件夹
rename . BOB-newfeatures
hg convert --filemap map z:\BOB2\BOB-newfeatures z:\BOB-newfeatures-conv initializing destination z:\BOB-newfeatures-conv repository scanning source... sorting... converting... 2 New feature started 1 Change 1 0 Change 2
BOB-newfeatures-conv>hg log -T "{node|short}\tFiles: {join(files, ', ')}\n" a3b2c462a3b9 Files: BOB-newfeatures/f1.txt f5f1168cfe2f Files: BOB-newfeatures/f2.txt da27a50a5cb6 Files: BOB-newfeatures/f1.txt
将文件路径与嵌套仓库中的日志进行比较,注意变更集的不同哈希值
BOB-newfeatures-conv>hg pull ../BOB2 pulling from ../BOB2 searching for changes abort: repository is unrelated
即使使用--force(因为存储库实际上是不相关的并且不共享历史记录),您也会得到“脏”的组合存储库(root和inBOB-newfeatures/
的更改是具有自己的root和tip的两行单独的更改)
BOB-newfeatures-conv>hg pull ../BOB2 -f
pulling from ../BOB2
searching for changes
warning: repository is unrelated
requesting all changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 4 changes to 3 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
最后,您必须将两个历史重新链接到一个共同点。就我而言,由于我的行为(将其拉到已转换的存储库,并具有的先前存在的历史记录BOB-newfeatures
),我不得不在3-4-5之后链接0-1-2修订版(历史上较早的更改),而且我不知道更优雅的方式这样做,然后再次转换(HG-> HG)存储库,--splicemap
这一次
带日志输出
>hg log -T "{rev} {node}\n"
5 25a16a8fea5e5b4dac42a0a6b2c8e82890c220a3
4 bf3c6cacb4a4c22cb5720ddeab1ec5f8238a98c9
3 ff71a2b1bbe30a56c9dabc9a7ddb2bbccad840af
2 a3b2c462a3b917b3ba58daee3df2632875baee17
1 f5f1168cfe2f4b6c67d0af8a9259665ae2d40bd5
0 da27a50a5cb6246c03c6af7485ac7ffc33e62738
可以创建规则“ 5之后的0”的splicemap(格式为“ liner”“ ChildHash ParentHash”)
da27a50a5cb6246c03c6af7485ac7ffc33e62738 25a16a8fea5e5b4dac42a0a6b2c8e82890c220a3
最后执行的转换
>hg convert --splicemap z:\map z:\BOB-newfeatures-conv z:\BOB3
scanning source...
sorting...
converting...
5 Initial data
4 Changes
3 More changes
2 New feature started
spliced in 25a16a8fea5e5b4dac42a0a6b2c8e82890c220a3 as parents of da27a50a5cb6246c03c6af7485ac7ffc33e62738
1 Change 1
0 Change 2
预期效果良好
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句