我不小心在另一个仓库的子目录中创建了一个仓库
由于这样做,子仓库现在包含许多提交
当我尝试在原始(父级?)仓库上使用hg st时,我意识到自己的错误,并且它抱怨一个文件位于嵌套仓库中
我想做的是以某种方式将子仓库历史记录移动到父级,然后删除子仓库,这样我只有一个仓库
dir结构是这样的:
我原来的回购:
core/
我的目录包含src代码我正在尝试版本控制:
core/src/
core/test/
我的意外回购是:
core/src/
e.g。这个我要推的?/ merge?升级到core/
仓库,然后杀死core/src/
仓库(删除.hg目录)
我已经阅读了一些堆栈溢出讨论,但他们似乎正试图解决更复杂的子仓库场景。我希望有一个直截了当(我敢说这么简单)的解决方案可能存在吗?
我对HG维基没有太多运气
答案 0 :(得分:4)
根据您使用的版本,您可以使用Transplant或Graft扩展程序来实现目标。
我从来没有这样做过,也没有时间亲自测试,但以下步骤应该有效:
core/src/
目录移到其他位置,例如~/temp.subrepo/
.hgsub
文件要转换subrepo,您可以使用以下内容:
$ echo include . > /tmp/myfilemap
$ echo rename . src/ >> /tmp/myfilemap
$ hg convert --filemap /tmp/myfilemap ~/temp.subrepo/ ~/temp.subrepo.converted/
就像我说的那样,我不确定这是否可以开箱即用,但它至少是一个领先者。如果您有任何问题,请不要犹豫。
或许最简单的解决方案就是删除子报道中的.hg
目录,删除主回购的.hgsub
文件中提到的子报表,然后添加并提交文件:
hg add core/src
hg commit
你将失去subrepo的所有历史,但至少解决方案非常简单。