Composer怎么配置Hg仓库 支持Mercurial版本控制【进阶】
发布时间 - 2026-01-27 00:00:00 点击率:次Composer 自 2.0 起彻底移除 Mercurial(Hg)支持,遇到“vcs driver not found”等错误是功能缺失所致;替代方案为通过 hg-git 插件导出为 Git 镜像,或使用 path 类型本地挂载。
Composer 本身不支持 Mercurial(Hg)仓库作为包源,composer install 或 composer update 遇到 "vcs driver not found" 或 "Could not clone hg+https://..." 错误是必然结果——这不是配置问题,而是功能缺失。
Composer 官方已移除 Hg 驱动支持
从 Composer 2.0 开始,hg VCS 驱动被彻底移除。即使你本地装了 hg 命令、在 repositories 中写 "type": "hg",Composer 也会直接忽略或报错:
Invalid repository type "hg", expected one of: composer, vcs, package, path
- Composer 1.x 最后一个支持 Hg 的版本是 1.10.22(2025 年底),之后所有安全更新均不再包含 Hg
-
composer.json中的"type": "vcs"仅支持git、svn(极有限)、perforce,不包括hg - 即使手动 patch
src/Composer/Repository/Vcs/HgDriver.php,也无法通过后续的 URL schema 校验(hg+协议不被解析)
替代方案:用 Git 包装 Hg 仓库(推荐)
Mercurial 仓库可通过 hg-git 插件导出为 Git 镜像,

- 在 Hg 仓库所在机器上启用
hg-git:pip install hg-git,并在~/.hgrc中启用插件 - 进入 Hg 仓库,执行:
hg bookmark -r default master(确保有master分支) - 运行:
hg push git+ssh://git@example.com/repo.git或推到 GitHub/GitLab 的空 Git 仓库 - 在
composer.json中声明为标准 Git VCS:
{
"repositories": [{
"type": "vcs",
"url": "https://github.com/user/repo.git"
}]
}
注意:每次 Hg 更新后需重新 hg push git+... 同步,不能全自动。
临时绕过:用 path 类型 + 本地 Hg 克隆
若仅用于开发环境且 Hg 仓库可访问,跳过 VCS 驱动,改用 path 类型直接挂载本地路径:
- 先手动执行:
hg clone https://example.com/repo.git /tmp/my-hg-package - 在
composer.json中写:
{
"repositories": [{
"type": "package",
"package": {
"name": "vendor/package",
"version": "dev-main",
"dist": {
"url": "/tmp/my-hg-package",
"type": "path"
},
"autoload": { "psr-4": { "Vendor\\Package\\": "src/" } }
}
}]
}
⚠️ 此方式不适用于 CI/CD:路径不存在会失败;dist.type: "path" 不触发自动更新,修改 Hg 仓库后必须手动 rm -rf vendor/vendor/package && composer install。
真正要让 Composer “支持 Hg”,本质是推动它重加驱动——但官方明确表示无计划恢复。实际项目中,要么迁移到 Git,要么用上面两种折中方式;把 Hg 当主力而强求 Composer 原生集成,只会卡在不可维护的 hack 里。
# php
# js
# git
# json
# composer
# github
# ai
# gitlab
# 开发环境
# pip
# default
# svn
# https
# ssh
# 移除
# 镜像
# 这是
# 也会
# 两种
# 并在
# 只会
# 这不是
# 不存在
# 要让
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Swift中swift中的switch 语句
Windows Hello人脸识别突然无法使用
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何保护应用免受CSRF攻击?(原理和示例)
北京企业网站设计制作公司,北京铁路集团官方网站?
Swift开发中switch语句值绑定模式
如何在建站主机中优化服务器配置?
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
如何在阿里云域名上完成建站全流程?
如何快速登录WAP自助建站平台?
Laravel如何创建自定义Facades?(详细步骤)
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
中山网站推广排名,中山信息港登录入口?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
如何在建站之星绑定自定义域名?
魔方云NAT建站如何实现端口转发?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
5种Android数据存储方式汇总
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
python中快速进行多个字符替换的方法小结
如何快速使用云服务器搭建个人网站?
java中使用zxing批量生成二维码立牌
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
音乐网站服务器如何优化API响应速度?
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
开心动漫网站制作软件下载,十分开心动画为何停播?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel如何使用模型观察者?(Observer代码示例)
如何在腾讯云服务器快速搭建个人网站?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
JavaScript如何实现错误处理_try...catch如何捕获异常?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Linux安全能力提升路径_长期防护思维说明【指导】
如何用已有域名快速搭建网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在 React 中条件性地遍历数组并渲染元素
手机网站制作与建设方案,手机网站如何建设?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
上一篇:iOS版支付宝添加门店指南
下一篇:高清视频格式转换指南
上一篇:iOS版支付宝添加门店指南
下一篇:高清视频格式转换指南

