问题标签 [subrepos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
681 浏览

mercurial - 带有子存储库和离线克隆的 Mercurial 工作流程?

我经常离线。

所以通常,我使用一个本地克隆作为功能、错误等的“中心”。

离线工作。凉爽的。

如果该项目包含远程子存储库,我可以使用类似的工作流程吗?

因为,如果 .hgsub 说

汞克隆 说

请注意,一旦创建了克隆(连接时),pushpull使用子存储库中的路径hgrc(而不是 中的位置.hgsub)。所以我可以把它指向一个本地克隆,一切都很酷。

但是clone看着.hgsub(因为它应该)。因此,如果“祝福”子存储库在服务器上,我无法离线创建新的克隆,即使我需要的文件就在那里。

这是个问题,对吧?

0 投票
2 回答
1070 浏览

mercurial - Mercurial 子存​​储库

我多次阅读教程,我觉得我仍然缺少一些东西。我将尝试给出一个具体的场景。请帮我找出我错在哪里。

假设我有一个每个人都认为是“中心”的存储库。这意味着每个新开发人员都从它克隆并从中拉/推。Central 包含三个文件夹-

  • Infra(即将成为共享代码)
  • .hg
    • infra.txt
  • 开发者1
    • dev1.txt
    • .hgsub (其中有一行 --> infra = (path of infra) )
    • 基础设施(次回购)
      • .hg
      • infra.txt
  • 开发2
    • dev2.txt
    • .hgsub(与 dev 1 相同 - infra = (path to infra) )
    • 基础设施(次回购)
      • .hg
      • infra.txt

现在,假设一个开发者克隆了 dev1,而另一个开发者克隆了 dev2。我看到的是,当 dev1 的开发人员更改 infra 并将更改推送到中央存储库时,dev2 开发人员了解 infra 更改的唯一方法是手动搜索 infra 中的传入更改集作为子-存储库。一般来说,这意味着如果我的项目有很多子存储库(它们本身可能包含更多的子存储库),除了手动检查我的子存储库之外,我无法知道更改。

我认为这不是工作方式......有人可以帮忙吗?

提前致谢,

埃亚尔

0 投票
3 回答
3681 浏览

git - 使用在 mercurial 存储库中有另一个 git subrepo 的 git subrepo,这可能吗?

我有一个 mercurial 存储库,并且毫无问题地添加了 git subrepo ( hg 1.8 )。

问题是:这个 git subrepo 内部有另一个 git subrepository 并且它没有被拉取(它在 git 的 subrepo.gitmodules文件中),除非我git clone --recursive在我的 git subrepo 上做一个:这样做它可以工作。

问题:我hg pull在另一台机器的存储库中做了一个,它git subrepo拉了.gitmodules. .gitmodules 仅在我执行 .gitmodules 时才被拉入另一台机器git clone --recursive

有没有人有任何建议来处理这种情况?丑陋的解决方案是做一个git clone并简单地将所有文件(包括 git 元数据)添加到我的 mercurial 存储库中,而不像 subrepo 那样行事。

0 投票
1 回答
1182 浏览

mercurial - 将 mercurial 中的子存储库 url 从 https 更改为 ssh。这样做有什么问题吗?

我有.hgsub一个子存储库的条目,它是使用调用的https

现在,我想使用,ssh因为两个存储库都是我的,并且我创建了一个 ssh 密钥。所以,它会是:

我没有改变,也没有测试。有人知道更改此网址是否会增加某种问题?

0 投票
1 回答
1453 浏览

mercurial - mercurial (hg) 中的“子路径”究竟是如何工作的?

我正在阅读mercurial中的子路径,但仍然无法理解以下内容:如果子路径文件没有版本控制,我应该如何至少有一个“主要”来源?我是否应该在我的 repo 中对子路径文件进行版本控制以及 .hgignore 等,然后将其复制到我进行克隆的 .hg 文件夹中?

0 投票
1 回答
403 浏览

mercurial - 在 Mercurial 中使用子存储库

我有一个包含许多组件的大型系统,我想将这些组件分布在几个不同的 mercurial 存储库中(因此在系统的某些部分上工作的人不必检查整个系统)。它需要在 UNIX 和 Windows 上运行。

在系统中,我有一个需要在许多地方共享的目录(保存常见的东西,如 CSS 文件和图像)。

我已经设置了它,以便每个组件都有一个共享 repo 的子repo,并且该 repo 也在更高级别上签出。我这样做是因为我希望程序员能够从主存储库中执行“hg pull”,而不是“hg push”(任何更改都会被“hg serve”从他们的工作中提取并在开始之前先检查回到主存储库)。

所以在顶层,程序员可以检查:

核心样式 ComponentSetA ComponentSetB 等

这些都指向http://machine/hg/RepoName(通过克隆)。

我在以下位置有子存储库:

ComponentSetA/web/style (with style = ../../Style in web/.hgsub) ComponentSetB/web/style 等等。

我的问题是,在“hg 克隆”上,我似乎无法让子存储库自动创建自己。我希望它们是透明的。如果任何程序员没有进行更改,他们不应该注意到他们在那里......

如果我必须先检查 Style 存储库,然后执行其中一个组件,那没关系,但我希望对顶级存储库有额外的间接级别,以允许程序员将他们的较低级别的更改推送到一个公共的回购。

有什么建议么?

0 投票
2 回答
3913 浏览

mercurial - Hg 子库依赖

过去(这里这里)有几个关于 Hg 子回购依赖的问题,但接受的答案似乎并没有解决我的问题。

我的一个项目有4个依赖:A、B、C、D。D依赖A、B、C;并且 B 和 C 依赖于 A:

A、B、C、D 的依赖图

我想使用 Hg 子存储库来存储它们,这样我就可以跟踪它们所依赖的每个版本。这是因为,当我在这个项目中使用 A、B、C 和 D 时,其他项目只需要 A 和 B。因此,B 和 C 必须独立于 D 跟踪他们需要的 A 版本。同时,在我的应用程序中,给定版本 D 引用的 B 和 C 版本必须始终使用与给定版本的 D (否则它会在运行时倒下)。我真正想要的是允许它们在同一个目录中作为兄弟姐妹相互引用——即 D 的 .hgsub 如下所示,B 和 C 看起来像第一行。

然而这似乎不起作用:我明白为什么(给人们足够的绳索来吊死自己很容易)但它很遗憾,因为我认为它是我依赖的最巧妙的解决方案。我已经阅读了一些建议的解决方案,我将快速概述它们以及为什么它们不适合我:

  1. 包括副本作为嵌套子目录,将这些作为 Hg 子存储库引用。这会产生以下目录结构(我已经删除了 A、B、C、B\A、C\A 的主要副本,因为我可以接受在 \D 中引用副本):

    • project\(所有主要项目文件)
    • 项目\D
    • 项目\D\A
    • 项目\D\B
    • 项目\D\B\A
    • 项目\D\C
    • 项目\D\C\A

    这种方法的问题:

    • 我现在在磁盘上有 3 个 A 副本,所有这些都可以有独立的修改,必须在推送到中央仓库之前同步和合并。
    • 我必须使用其他机制来确保 B、C 和 D 引用相同版本的 A(例如 D 可以使用 v1 而 D\B 可以使用 v2)
  2. 一种变体:使用上述但指定 .hgsub 的 RHS 以指向父副本中的副本(即 B 和 C 应具有以下 .hgsub):

    这种方法的问题:

    • 我的磁盘上还有三个副本
    • 我第一次克隆 B 或 C 时,它会尝试从“..\A”中递归地提取 A 的引用版本,这可能不存在,可能会导致错误。如果它不存在,它不会提供关于应该在哪里找到 repo 的任何线索。
    • 当我对更改进行递归推送时,D\B\A 中的更改不会进入共享中央存储库;他们只是被推到 D\A 上。因此,如果我连续推送两次,我可以保证所有更改都将正确传播,但这完全是一个骗局。
    • 同样,如果我进行(手动)递归拉取,我必须正确获取订单以获取最新更改(即在拉取 D\B\A 之前拉取 D\A)
  3. 使用符号链接将文件夹 \D\B\A 指向 D\A 等。

    这种方法的问题:

    • 符号链接不能在 Hg 存储库本身中编码,因此每次团队成员克隆存储库时,他们必须手动/使用脚本重新创建符号链接。这可能是可以接受的,但我更喜欢更好的解决方案。另外(个人喜好)我发现符号链接非常不直观。

这些是最好的可用解决方案吗?我的初始 .hgsub (见顶部)是一个梦想,或者有什么方法可以请求/实现这个改变?

更新以更好地解释 A、B、C、D 的更广泛使用

0 投票
1 回答
268 浏览

mercurial - 强制 Mercurial 始终使用 --subrepos

是否可以将 Mercurial 配置为始终检查子存储库?

我希望它一直启用,而不必每次都在命令中指定它。

0 投票
2 回答
392 浏览

mercurial - 仅标记子存储库

我有一个带有一个子存储库的 Mercurial 主存储库,如下所示:

而且我希望标记Sub,同时保持Main/.hgsubstate最新(即指向Sub标记过程产生的变更集)。
我不想标记主存储库。
如果不从内部进行标记Sub并做一些魔术来Main/.hgsubstate更新,这是否可能?

0 投票
1 回答
360 浏览

powershell - Mercurial:自动添加子存储库的 Windows 脚本

RyanWilcox这里发布了一个脚本,可以使用以下命令自动添加子存储库:

如何将其翻译成 Windows 批处理或 powershell 脚本?