问题标签 [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.
mercurial - 如何配置 mercurial 以仅部署网站文件夹
我有一个要部署到客户端 DEV 和 UAT 环境的网站,该网站是 mercurial repo 的一部分 - 它位于与 .hg 文件夹相同级别的网站文件夹中。我知道我可以推送整个存储库,但宁愿只推送网站文件夹,这样客户端就没有其他文件和文件夹。
回购看起来像这样:
- 项目根
- .hg
- 数据库(SQL 源代码控制使用它)
- 文档(所有规格、pdf、艺术作品等)
- Lib (Nuget 之前的第 3 方 dll)
- 包(Nuget 的东西)
- 网站 (这是我要部署的唯一区域)
- .hgignore
- 项目.sln
编辑: 客户端服务器没有直接连接到互联网,我对它们的访问是通过 vpn 然后 RDP。目前要部署我需要压缩站点的任何更改,将其放在共享的 ftp 服务器上,然后等待最多 3 天,以便将文件复制到服务器。规则已配置,因此我可以通过此连接使用 Mercurial。
编辑 2 我已经设法从网站文件夹创建了一个子存储库,方法是忘记网站文件夹及其所有内容,提交更改然后放回文件,创建一个存储库然后回显 .hgsub 文件。在本地这对我有用,我可以从网站回购克隆而无需获取任何其他文件夹。但是,即使我在我们的 repo 服务器上重复该过程,我也无法使用此版本的 repo。当我尝试将托管版本克隆到我的本地工作副本时,我收到 404 错误,但我可以在托管服务器上克隆托管版本。
我将不胜感激一些关于如何实现我的目标的分步说明(如果您愿意,可以提供傻瓜指南);这是为了能够仅将网站文件夹推送到客户端服务器。回购的主副本在我们的回购服务器上,我有一个本地克隆,需要能够从我的副本中推出版本。
编辑 3 结果是我将文件夹转换为子存储库,如http://mercurial.aragost.com/kick-start/en/subrepositories/#converting-folder-into-a-subrepository中所述的问题是在 2.1.0 之后的版本中,转换命令已损坏,并且在 2.3.1 中仍然损坏。在我弄清楚并回滚到那个版本的 TortoiseHg 之后,我能够将文件夹转换为子存储库,在存储库的根目录中,我有 .hgsub,它显示网站 = 网站。我能够在本地使用它,提交整个 repo,subrepo,克隆完整 repo 或 subrepo(这是我想要的),但是我无法从我们的主 repo 服务器上使用它。
我把整个东西压缩起来,用 ftp 传送到我们的远程主 repo 服务器,然后设置它,这样我就可以从中克隆了。直接在服务器上这工作正常(hg clone --verbose -- C:\Repositories\EM 。),但是当我尝试从服务器克隆到我的本地开发机器时(hg clone --verbose -- https:/ /myserver.com/hg/EM/。)它失败并显示“HTTP错误:404(未找到)”。
我不知道问题是什么,文件在那里,为什么是 404?
tortoisehg - 如何配置 TortoiseHg Workbench 以使用 --subrepos 开关
我想知道如何配置 TortoiseHg Workbench 以便它--subrepos
在检查状态时提供开关。我可以用命令行做到这一点没问题。我只需要为这 1 个存储库执行此操作 - 它是唯一具有子存储库的存储库。
- 根
- 文件夹 1
- 文件夹 2
- 文件夹 3(这是一个子仓库)
在 TortoiseHg Workbench 中,如果我在根级别并且我在提交选项卡上,我按下刷新文件列表图标,它将显示除子存储库中所有内容的状态...不是我想要的,我想要知道该子回购中有变化。
即使我提交它排除了新文件,它也不会将它们视为已添加。它将提交任何更改,但不会提交新文件。
mercurial - 如何跨克隆/拉取保留 Mercurial 子存储库重新映射?
我正在尝试在 Mercurial (2.1.1) 中设置 subrepo 重新映射,以考虑将来可能更改的 subrepo 路径。当在文件中指定密钥时,我已经能够[subpaths]
正确读取和处理密钥。.hgrc
但是,当我从该存储库克隆或拉取时,.hgrc
不会复制该文件,因此不会将子存储库重新映射带到目标存储库。
在查看SubrepoRemappingPlan后,我的第一个想法是将其[subpaths]
放入一个.hg/subpaths
文件中,该文件应该在克隆/拉取时复制。然而,事实证明这个功能已经过时了,并且子路径文件已经通过Projrc扩展替换为更通用的配置共享机制。
但是,Projrc 解决方案的问题是:
这是一个单独的扩展,所有团队成员都需要安装和启用
出于安全原因,需要进行额外配置以告知 Projrc 允许从哪里拉取(以及允许拉取什么)
所以,我的问题是,Mercurial 中是否有任何内置机制来实现跨克隆/拉取保留的子存储库映射?
version-control - 在多个项目之间共享核心代码库
我们有几个围绕一个共同核心构建的产品线,目前使用外部在 SVN 中维护它们。转移到 mercurial,很自然地转移到使用hg 子存储库。
问题是内核非常大(可能 > GB,根据 SVN 存储库判断),典型的开发人员有时希望同时开发多个产品,例如 3-4。
我是否理解正确,这通常意味着开发人员会为每个开发人员复制核心 3-4 次,包括其整个历史?此外,如果开发人员希望在另一个产品中执行一些简单的操作,这意味着必须首先拉取核心,即使它已经在客户端可用(几次......)?
version-control - 如何用文件夹替换 Mercurial 子存储库?
我正在使用具有以下结构的 Mercurial 存储库:
.hgsub 文件声明 SubRepo 如下:
我需要摆脱 subrepo 并将其替换为 repo 中名为 SubRepo 的实际文件夹,所以我按照hg 文档所说的操作,删除了 .hgsub 文件并提交。然后我把我自己的东西放在 SubRepo 中并提交它,给我留下了:
花花公子。但是,当我尝试从仍然具有 .hgsub 文件的存储库中提取更改时,我遇到了麻烦。
有没有更好的方法来替换子存储库?或者我应该做一些聪明的事情来使这项工作更好,比如使用一个选项来拉取或临时更改我的 .hgsub 以指向一个新文件夹而不是完全删除它?
mercurial - 如果 Mercurial 中有未提交的子仓库更改,我如何使“提交”中止?
这似乎一直发生在我身上:我在父仓库工作。我在 subrepo 中找到并修复了一个错误。我继续进行父回购工作。我使用“添加的功能 X”之类的消息提交父仓库。我推。
在这一点上,我注意到 subrepo 错误修复也被提交和推送,提交消息与 subrepo 完全无关。
让自己成为“提交”替代品的最简单方法是什么,在这种情况下会拒绝做任何事情,指出子回购有未提交的更改?或者,也许我可以在我的.hgrc
?
mercurial - 子存储库的内部 Vrs 外部路径
我有一个由 mercurial 控制的应用程序 A 和一个也由 mercurial 控制的库 B 的存储库。在应用程序 A 的存储库中,它使用路径中央存储库路径ssh://user@1.2.3.4/B将子存储库映射到库 B 的存储库。这对我们的内部开发来说已经足够了,但是我们需要外部访问,但是我们不能使用域名作为我们的路由器批量。是否可以将子存储库定义为:
mercurial - 如何添加 subrepo 的特定子文件夹
我来自 SVN 背景,我在将 subrepo 的子文件夹添加到我的主仓库时遇到了问题。这意味着我不想将整个子存储库添加到我的主项目中 - 只是其中的一部分。在我的情况下,我只想包含我的库的源文件,不包括所有单元测试。
我创建了 .hgsub 文件并在那里写道:
但是当我尝试同步 libs/my_std_lib 文件夹时,我收到这样的错误:HTTP Error: 404 (Not Found)
当我尝试在没有子路径(https://myreposhost.com/my_std_lib_repo/
)的情况下进行同步时 - 它运行良好。
那么我做错了什么或者这在hg中是不可能的?
mercurial - Mercurial 存储库日志,包括子存储库
在我们的构建脚本中,我使用模板hg log
命令来获取特定构建的更改列表。这很好用,但不幸的是它不包括子存储库中的更改(我们有超过 10 个)。我也想包括它们,但似乎没有这样的命令。
我正在考虑编写一个脚本:
- 枚举起始修订版的 .hgsubstate 文件
- 找出子存储库及其起始修订版
hg log
为他们奔跑- 按日期合并和排序结果。
还有其他更简单的方法吗?也许我缺少一个命令?
mercurial - 有什么方法可以拉/更新所有子存储库?
我正在研究为我的组织从 svn 切换到 mercurial 的可行性,但有一个问题我似乎无法找到解决方案。
有没有办法在不手动拉取和更新每一个的情况下拉取和更新一个仓库和所有子仓库?
我想改用 mercurial,但如果这不可能,那对我们来说就不行了。
编辑:天哪,我今天一定很累......关于SO的两个问题,我在问完几分钟后找到了答案......