“因式分解”上窑Mercurial库(“factorizing” a mercurial repos

2019-09-27 17:36发布

总结问题:

什么是最简单的(和最好)的方式给一组从现有资源库的文件转移到一个新的子库,所以这些文件可以与其他父母库进行整合,其中一些可能不存在了吗?

不要在subrepositories文件需要在离散的文件夹,也可以存在与其他文件?

详细的问题:

我已经开始创建表示已经共享的组件的几个项目多个版本库的过程中,这是很顺利,感谢SO和一些有用的回答我的问题在这里

当我移动到添加第二个项目中,我注意到有一些是重复的在我的项目的几个文件,基本上是相同的事情,只要有足够的相似性,以保证把他们从一个主要项目库,并创建一个新的subrepository所以他们可

  1. 使用我开始任何新项目,
  2. 从其它现有资源库除去,因为它们是相同的。

我假设的最好方式就是建立新仓库,整个本地文件系统中移动的文件,推动两个库,然后创建一个.hgsub文件和proceeed在回答我刚才的问题 。 这显然然后转向各主要项目,我可以住在关注到子文件夹在本地文件系统中的文件,但它确实提高了假设性的问题 - 是否有可能在一个库中是有效的文件列表子库的一部分,但存在与其他文件(即不是在子文件夹)。

如果我想(例如)在是另一个仓库我能做到这一点的一部分,每个项目“acme.h”文件? 因为它发生,我并不需要在这个时间点要做到这一点,在我目前的情况这将是从设计的角度来看最好有我需要“重构”到另一个仓库在自己的子文件夹中的文件然而,可能并不总是如此。 我在引号使用重构在这里,因为严格来说,它更多的是重构所重构代码重复的文件 - 但同样的原则也适用。

希望我的问题是不够简洁没有过多的更多的解释来回答。

Answer 1:

感谢您的总结,使得它更容易回答!

什么是最简单的(和最好)的方式给一组从现有资源库的文件转移到一个新的子库,所以这些文件可以与其他父母库进行整合,其中一些可能不存在了吗?

您可以使用转换扩展从现有的Mercurial库中提取的目录。 您将要使用--filemap标志,并在filemap你有你想要的目录并将其重命名为根。 见hg help convert获取更多信息。

你之后获得与小库

不要在subrepositories文件需要在离散的文件夹,也可以存在与其他文件?

他们必须在自己的文件夹。 这很简单,因为这是一个仓库怎么看起来像水银,Git的,颠覆,...当你处理subrepositories ,然后水银不跟踪subrepo里的文件:它只是提出一些(其他)系统进行仓库的结帐foo在某个位置。

所以,当你的.hgsub文件有

foo = foo
bar = [git]bar
baz = [svn]baz

然后水银会注意到这对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

为您。 这就解释了为什么subrepostories是在外部存储库中:那是什么简单的克隆/结帐看起来像这些天。

正如你所看到的,subrepositories可以是不同类型的。 这是可以想象的人可以对跟踪单个文件添加一个RCS subrepository类型。 然后,他们就不必生活在一个目录。



文章来源: “factorizing” a mercurial repository on kiln