问题标签 [mercurial-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 回答
251 浏览

mercurial - 子存储库(外部)环境中的 NuGet

我在 Mercurial 中有几个存储库,其结构如下:

  • 一体化
  • 行政
  • 我的应用

MyApprepo 中,我想包含Coreand Integration

我将它们作为子存储库添加到MyApp,并将其放在Externals文件夹中。

文件夹结构MyApp大致如下:

MyApp
- BusinessLogic
- DataAccess
- Externals
- 核心
- 集成
- Web
- 包

问题与packages文件夹有关。我在所有解决方案中都使用包还原,并且 NuGet 可以正常下载所有包。该文件夹包含我的外部项目所依赖的包。

唯一的问题是,包文件夹的相对路径Core现在Integration是错误的。

有什么办法可以解决这个问题吗?

0 投票
2 回答
256 浏览

mercurial - 禁用/弃用(但不删除)mercurial 存储库

我和我的同事使用了几个位于集中式(ubuntu,如果重要的话)服务器上的存储库。对于我们的几个项目,我们在许多不同的项目中包含相同的 4 个存储库作为子存储库。这可能有点烦人,因为在网络上传输所有内容等需要一段时间,所以不断地在许多不同的项目中推送/拉取/合并 4 个不同的子存储库。

我想将这 4 个存储库合并到一个主存储库中,该存储库可以包含在我们未来的所有项目中。挑战在于我不想删除旧的子存储库,因为这会破坏运行良好的现有项目。

如果有办法将这些旧存储库指定为已弃用,或者至少使我的同事无法将任何新变更集推送到这些存储库并显示有用的错误消息,那就太好了。这有可能吗,也许正如这个切线问答所暗示的那样,使用了反复无常的钩子

0 投票
1 回答
51 浏览

mercurial - 确定远程服务器上的子存储库中的更改,而无需在主存储库中提交

我想将分层结构与 mercurial 存储库一起使用。

结构

.hgsub

然后我的同事将只修改sub1存储库,他们将没有Main存储库。
我如何确定 sub1 中的更改比我的同事所做的更改。如果这些更改未在主
存储库中提交, hg pull不会看到这些更改。

或者它的结构不正确,我必须给我的同事Main repository 包含sub1的数据?

0 投票
1 回答
128 浏览

version-control - 跟踪子存储库中的内部库

我们正在开发一个内部框架,多个项目将使用该框架。这个想法是将整个框架作为每个项目存储库的可变子存储库进行跟踪。这导致了以下子存储库树(请参阅瘦壳存储库):

  • 这对你有意义吗?是否有更好/更简单的方法来处理这些不涉及子存储库的依赖项?
  • 具体来说,拥有两个 CommonLib 子存储库是否有意义?
  • 如果没有,Project 使用 FrameworkMaster/CommonLib 是否有意义?如果依赖关系更复杂,这可能会变得混乱。
  • 你会在哪里打开功能分支?上主?仅在相关的子存储库中?
    • 如果您在主服务器上没有功能分支,则每次克隆存储库时,您最终都会获得最后一次提交的子存储库状态,这可能会将任何子存储库放在任何随机功能分支中。很混乱。
    • 如果你在 master 上有特性分支,你仍然需要在至少一个 subrepo 中有一个特性分支,以避免在那里有未命名的头。

一般来说,这个解决方案听起来很难使用。有什么建议么?

0 投票
2 回答
352 浏览

mercurial - 是否可以通过添加子存储库来更新?

我的存储库中有一个文件夹。然后我将此文件夹设为子存储库(具有完全相同的文件),提交并推送此更改。现在我无法通过该提交更新回来。这是我收到的信息:

subreposubrepo现在所在的文件夹的名称在哪里。有什么方法可以解决这个问题并更新到早期版本?

0 投票
2 回答
1284 浏览

mercurial - 使用带有 bitbucket 和 ToritoiseHg 的子存储库

我在 TortoiseHg 中有如下子存储库结构:

MainFolder 是 bitbucket 上的私有存储库 SubFolder1 是 bitbucket 上的私有存储库 SubFolder2 是 bitbucket 上的私有存储库

MainFolder 中的 .hgsub 文件如下所示:

MainFolder 中的 .hgsubstat 文件也具有有效的 guid 和子存储库名称。

问题是每当我尝试为 MainFolder 推送到 bitbucket 时,首先它推送 MainFolder,然后是 SubFolder1,但是当它到达 SubFolder2 时,TortoiseHg 抛出错误“中止:存储库不相关”。

当我在 bitbucket 上检查我的 MainFolder 存储库时,它实际上具有 SubFolder1 的内容(它应该在那里列为子存储库)。

如何解决此问题,以便将 MainFolder 正确上传为父存储库,并将 SubFolder1 和 SubFolder2 列为其在 bitbucket 上的子存储库?

0 投票
1 回答
144 浏览

version-control - Mercurial - 推动子回购头

我怎样才能只从父仓库中推送子仓库所需的 HEADS。

我已经开始对 mercurial 中的本地功能分支使用书签样式流程。到目前为止,它工作得很好,只需提交、添加书签并切换到该头部即可工作。hg push -r master-bookmark我可以通过指定只推我的主头而不是任何功能分支来很好地推拉。

当我在子存储库中使用带有书签的多个头时,问题就出现了。因为这意味着我不能只使用hg push -r master-bookmark它,因为它会尝试推动子回购的所有负责人。在我准备好之前,我不希望这些头公开,但我需要在父级内部进行一些其他更改,所以我不会强迫他们。

我已经尝试放入子存储库并推送我需要的东西,但是父母仍然会尝试推送所有内容,无论它是否在“.hgsubstate”的祖先中。

有人对哪种工作流程最适合这个有任何想法吗?我宁愿不必禁用子回购,推送,然后重新启用,这会变得非常混乱。

0 投票
1 回答
261 浏览

mercurial - 嵌套的 mercurial subrepos 有那么糟糕吗?

在研究了 mercurial 并阅读了http://thread.gmane.org/gmane.comp.version-control.mercurial.devel/40107之后,我已经充分警告过嵌套子存储库的危险。但是,我必须使用 mercurial,而 subrepos 似乎是一个有用的工具。我的问题类似于Hg sub-repository dependencies。我的基本问题是:我有一个被许多项目使用的实用程序存储库。其中一些项目依赖于公用事业。似乎很自然地有一个项目存储库,其中一个实用程序子存储库嵌套在主存储库下,而不是一个更大的存储库下的 2 个子存储库。如果项目需要不同的版本,这将很容易拉取实用程序子存储库的正确版本。

我不确定我是否完全理解嵌套子存储库的问题,因为尽管有所有警告,它似乎是最好的解决方案。

0 投票
0 回答
578 浏览

mercurial - 子存储库的 Mercurial 工作流程以避免“由于未提交的更改而无法合并”

使用具有子存储库(“内部”)的 Mercurial 存储库(“外部”)时,通常会遇到问题,即您尝试在外部进行合并,但由于“未提交的更改”而失败当没有明显变化时(hg st外部显示没有变化)。

问题归结为子存储库状态:该.hgsubstate文件包含子存储库的变更集 ID,它实际上与子存储库工作副本变更集不同(或者,简单地说,子存储库中有未提交的更改)。

我可以在它发生时修复它,但是任何人都可以推荐一个用于拉取和合并的 Mercurial 工作流程,它总是可以避免这个问题吗?我可以通过玩测试回购等来解决它,但如果他们已经知道的话,也许有人可以为我和其他人节省一些时间。

工作流程越简单越好,因为这是针对一个小团队而不仅仅是一个人。

问题示例:

更新 - 关于 .hgsubstate 工作原理的说明

更新文件的唯一两个操作.hgsubstate(使用命令行时)如下:

  1. 如果你拉取外部项目的一个版本,你会得到任何 .hgsubstate 被签入(显然)

  2. 如果您提交外部项目,则将.hgsubstate更新为内部项目的当前父变更集

如果您更新子存储库但未对外部项目进行任何更改,那么如果您这样做,外部将不会显示任何更改hg status但是,如果您运行hg status -S,您将获得子存储库(以及外部项目)的文件状态。显示的子存储库的文件状态是以下几种的混合:

a)对 subrepo 中文件的任何未提交的工作副本更改

b)对子存储库的任何已提交的比更改集 ID 更新的更改.hgsubstate

如果您尝试提交外部项目,即使没有hg st显示任何更改,如果 subrepo 确实具有更新的提示变更集,它也将允许您提交 .hgsubstate 文件的更新版本。因此,一个关键的策略是使用hg st -S它将显示您的子存储库中是否有任何待处理的内容,例如工作副本更改或比 in 中命名的 id 更新的更改集.hgsubstate

0 投票
1 回答
644 浏览

git - 在 mercurial 子存​​储库中使用特定 (git) 分支

我有一个善变的项目,我想在其中使用 jQuery-File-Upload。我将以下内容添加到我的.hgsub文件中,以便为此插件创建一个子存储库:

我遇到的问题是我需要jquery-ui在我的项目中使用这个 git repo 的分支。

有没有办法指定 git repo 的分支名称作为 hg subrepo 拉?