【问题标题】:Mercurial repo inside a repo回购中的 Mercurial 回购
【发布时间】:2011-03-03 00:12:51
【问题描述】:

是否可以在现有的 mercurial 存储库中创建一个 mercurial 存储库?

这个想法是将存储库的子目录作为不同的存储库处理,您如何做到这一点?

我不是在谈论 subrepos (至少,如果我理解 subrepos 的目的......),但如果这就是 subrepos 的存在方式,我错了,我会试着把它改正: )

谢谢 ~阿基

编辑:为了更清楚,我想知道会发生什么,将存储库放在另一个存储库中的做法和影响,而无需指定模块/子存储库。 换句话说:如果我这样做会发生什么:

hg init globalRepo
hg init globalRepo/subRepo

并按原样使用这两个存储库?

【问题讨论】:

  • 显而易见的问题是,您为什么要这样做?
  • 我不想那样做 :) 我只是想知道发生了什么,以及在这种情况下 mercurial 会如何表现。正如我想象的那样,这样的使用会有点棘手,无论如何我都会使用 subrepos。

标签: mercurial subrepos


【解决方案1】:

效果很好。早在 Mercurial 1.3 中添加 subrepo 支持之前,很多人将他们的整个主目录保存在 mercurial repo 中,以跟踪他们的 .bashrc 文件等。然后在他们的主目录中,他们会有许多其他 repos 的克隆。

每当您调用 mercurial(不带 -R 选项)时,它都会在当前目录中查找 .hg 目录,然后继续向上查找目录直到找到。因此,如果您在一个 repo 中的 repo 中,您的命令将始终作用于您所在的最里面的 repo。

需要注意的是,您要确保不要将文件添加到外部存储库中,最终进入内部存储库。然后你将有两个 repos 更新相同的文件。

【讨论】:

  • 比我的答案要详细得多。 +1
【解决方案2】:

正如您在此SO question 中看到的,您可以制作那种嵌套的hg init,尽管它通常保留用于定义 subRepo(这不是您想要的)。

通常它应该作为两个独立的存储库工作,但我建议在 globalRepo 中添加一个 hgignore 规则,以便完全忽略 subRepo 内容。

【讨论】:

  • 感谢您的回答,并对迟到的评论表示抱歉。所以,如果我理解正确,subrepos 几乎就像嵌套的 repos,不同之处在于它们在父 repo 中跟踪了一个 .hgsub,对吗?我想这表明父回购的行为有点像 .hgignore ou 建议我。
  • @AkiRoss:“不同之处在于他们在父仓库中跟踪了.hgsub”:是的,父仓库实际上只引用了.hgsub,这是确切的引用(提交)的子回购。但是在嵌套回购的情况下,没有“父”回购。第一个 repo 完全忽略了它内部有一个嵌套 repo 的事实。
  • @Chris 但我建议在 globalRepo 中添加一个 hgignore 规则,以便完全忽略 subRepo 内容。 这绝对没有效果。由于外部存储库会忽略其中包含 .hg 文件夹的任何子目录。人们无法改变这种行为。这就是为什么我放弃了 mercurial,git 一直在跟踪,除非我忽略内部的 - 或者将其声明为 subrepo(这是合理的,你似乎也暗示它是为 hg 给出的)
【解决方案3】:

这里是嵌套存储库中的some docs。

【讨论】:

  • 已经读过,我说我不是在谈论 subrepos。但是,嘿,我的错:我必须更清楚;我将在问题中添加一些细节。无论如何谢谢:)
  • 一般来说,子仓库就是你做子仓库的方式。否则,您可能想告诉顶级 repo 忽略 globalRepo/subRepo 的内容以分离历史,这可能会违背它的目的,除非您只是懒得制作独立的 repo。
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多