Mercurial &引用;“因式分解”;窑上的汞库
总结问题: 将一组文件从现有存储库转移到新的子存储库,以便这些文件可以与其他父存储库集成(其中一些可能还不存在)的最简单(也是最好)的方法是什么 子存储库中的文件是否需要位于离散的文件夹中,或者它们可以与其他文件一起存在 详细问题: 我已经开始了创建多个存储库的过程,这些存储库代表了几个具有共享组件的项目,并且进展顺利,这要感谢SO和对我的问题的一些有用的回答 当我继续添加第二个项目时,我注意到我的项目中有几个文件是重复的,本质上是相同的,具有足够的相似性,可以将它们从主项目存储库中取出,并创建一个新的子存储库,以便可以复制Mercurial &引用;“因式分解”;窑上的汞库,mercurial,kiln,Mercurial,Kiln,总结问题: 将一组文件从现有存储库转移到新的子存储库,以便这些文件可以与其他父存储库集成(其中一些可能还不存在)的最简单(也是最好)的方法是什么 子存储库中的文件是否需要位于离散的文件夹中,或者它们可以与其他文件一起存在 详细问题: 我已经开始了创建多个存储库的过程,这些存储库代表了几个具有共享组件的项目,并且进展顺利,这要感谢SO和对我的问题的一些有用的回答 当我继续添加第二个项目时,我注意到我的项目中有几个文件是重复的,本质上是相同的,具有足够的相似性,可以将它们从主项目存储库中取出,并创建
希望我的问题足够简洁,不需要太多解释就可以回答。谢谢你的总结,这样回答起来就容易多了 将一组文件从现有存储库转移到新的子存储库,以便这些文件可以与其他父存储库集成(其中一些可能还不存在)的最简单(也是最好)的方法是什么 您可以使用从现有Mercurial存储库中提取目录。您需要使用
--filemap
标志,并在filemap中包含所需目录并将其重命名为根目录。有关更多信息,请参阅hg帮助转换
在使用
子存储库中的文件是否需要位于离散的文件夹中,或者它们可以与其他文件一起存在
它们必须位于自己的文件夹中。这仅仅是因为Mercurial、Git、Subversion中的存储库就是这样的。。。当您处理时,Mercurial并没有跟踪subrepo中的文件:它只是要求某个(其他)系统在某个位置签出存储库foo
因此,当您的.hgsub
文件
foo = foo
bar = [git]bar
baz = [svn]baz
然后Mercurial将在hg update
上注意到这一点,并运行
hg clone default-path-of-this-repo/foo foo
git clone default-path-of-this-repo/bar bar
svn checkout default-path-of-this-repo/baz baz
为了你的健康。这就解释了为什么子repostories是外部存储库中的目录:这就是现在克隆/签出的样子
如您所见,子存储库可以是不同的类型。可以想象,有人可以添加一个用于跟踪单个文件的RCS子存储库类型。这样他们就不必住在一个目录中。不确定这是否值得提出一个全新的问题,但您上面的评论提出了一个有趣的附带问题:我的一些第三方代码位于我不久前从github上的开源努力下载的文件夹中。有没有可能让mercurial“知道”这些git服务器URL(和修订版),这样我就可以在克隆父repo时让mercurial直接从那里克隆它?(而不仅仅是将其作为mercurial sub repos,碰巧包含也存储在github上的文件)如果您愿意,我可以将其作为另一个问题提问并链接到此处,我认为这确实是一个新问题-这是一个五行注释:-)请在单独的问题中提问每个问题。啊。。我应该自己搜索一下。。。我刚刚发现了这个,我想它回答了我的问题。我会把它留给任何来找我的人,不管怎样我都会问,因为以前似乎没有人问过。啊,很好,你自己找到了答案。如果你觉得你从我的答案中学到了一些东西,请随意更新我的答案。谢谢,你是对的,它们是免费的,所以我觉得它们应该被大量使用(我今天已经用了20个)。谢谢你的邀请!我补充了一个答案。