Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial &引用;“因式分解”;窑上的汞库_Mercurial_Kiln - Fatal编程技术网

Mercurial &引用;“因式分解”;窑上的汞库

Mercurial &引用;“因式分解”;窑上的汞库,mercurial,kiln,Mercurial,Kiln,总结问题: 将一组文件从现有存储库转移到新的子存储库,以便这些文件可以与其他父存储库集成(其中一些可能还不存在)的最简单(也是最好)的方法是什么 子存储库中的文件是否需要位于离散的文件夹中,或者它们可以与其他文件一起存在 详细问题: 我已经开始了创建多个存储库的过程,这些存储库代表了几个具有共享组件的项目,并且进展顺利,这要感谢SO和对我的问题的一些有用的回答 当我继续添加第二个项目时,我注意到我的项目中有几个文件是重复的,本质上是相同的,具有足够的相似性,可以将它们从主项目存储库中取出,并创建

总结问题:

将一组文件从现有存储库转移到新的子存储库,以便这些文件可以与其他父存储库集成(其中一些可能还不存在)的最简单(也是最好)的方法是什么

子存储库中的文件是否需要位于离散的文件夹中,或者它们可以与其他文件一起存在

详细问题:

我已经开始了创建多个存储库的过程,这些存储库代表了几个具有共享组件的项目,并且进展顺利,这要感谢SO和对我的问题的一些有用的回答

当我继续添加第二个项目时,我注意到我的项目中有几个文件是重复的,本质上是相同的,具有足够的相似性,可以将它们从主项目存储库中取出,并创建一个新的子存储库,以便可以复制

  • 用于我开始的任何新项目,以及
  • 从其他现有存储库中删除,因为它们是相同的
  • 我假设最好的方法是简单地创建一个新的存储库,在本地文件系统上移动文件,推送两个存储库,然后创建一个.hgsub文件,并按照对的回答进行处理。这显然会将相关文件转移到每个主项目下本地文件系统中的一个子文件夹中,我可以使用它,但这确实提出了一个假设性的问题——是否可能在存储库中有一个文件列表,这些文件实际上是子存储库的一部分,但与其他文件(即不在子文件夹中)共存

    如果我想(例如)在属于另一个存储库的每个项目中都有一个“acme.h”文件,我可以这样做吗?碰巧的是,我现在不需要这样做,在我目前的情况下,从设计的角度来看,将需要“重构”到另一个存储库中的文件放在它们自己的子文件夹中会更好,但情况可能并不总是这样。我在这里引用了refactor,因为严格来说,它更多的是关于重构重复的文件,即重构代码——然而,同样的原则也适用


    希望我的问题足够简洁,不需要太多解释就可以回答。

    谢谢你的总结,这样回答起来就容易多了

    将一组文件从现有存储库转移到新的子存储库,以便这些文件可以与其他父存储库集成(其中一些可能还不存在)的最简单(也是最好)的方法是什么

    您可以使用从现有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个)。谢谢你的邀请!我补充了一个答案。