instaclick / medusa
一组命令,用于维护git仓库的镜像并创建用于composer的本地satis仓库。
0.7
2021-10-06 01:28 UTC
Requires
- composer/composer: ^1.9
- guzzlehttp/guzzle: ^6.5
- symfony/console: ^4||^5
- symfony/finder: ^4||^5
- symfony/process: ^4||^5
This package is not auto-updated.
Last update: 2024-09-20 21:08:02 UTC
README
Medusa是一个命令行工具,与Satis配合使用,为您创建本地git镜像。
这是什么鬼???
Medusa是什么?它有什么用途?
如果您有一个非常慢的连接,通过composer检索项目的依赖项可能会很痛苦。由于网络速度慢,我的项目在本地机器上更新或安装需要超过半天的时间。
Medusa将在本地机器上创建所有这些内容的镜像,并允许您从那里获取所有内容,而不是从Github获取整个源代码。每个依赖项都将完全镜像,这意味着您将在本地机器上拥有所有版本、标签和分支。
局限性
目前它只能与GitHub托管的项目一起使用。
它的文档非常差。
这是一个非常早期的版本,可能存在错误,并且使用它的API肯定很令人困惑。
如何使用
目前,您可以执行以下操作
- 从https://github.com/instaclick/medusa/releases下载
medusa.phar
- 使用https://github.com/box-project/box/releases的
box.phar
从https://github.com/composer/satis构建satis.phar
文件
cd satis
box.phar compile
- 将它们都放在您机器上的一个文件夹中
- 在该文件夹内部,创建一个
web/
和一个web/repositories/
文件夹 - 创建一个如下所示的
medusa.json
文件
{
// vcs repositories not in packagist
"repositories": [
{
// pseudo package name; used for repo directory structure
"name": "myvendor/package",
"url": "git@othervcs:myvendor/package.git"
}
]
"require": [
"vendor/package",
"othervendor/otherpackage",
//... List all the packages you want here, there dependencies can be
// auto downloaded as well
],
"repodir": "web/repositories",
// Optional URL to satis (if not hosted locally)
"satisurl": "http://user:password@satis.host:port/repositories",
// Target path for generated satis configuration
"satisconfig": "satis.json"
}
- 创建一个如下所示的satis配置文件框架
{
"name": "My Repository",
"homepage": "http://packages.example.org",
"repositories": [
// Optionally list repositories not updateable by medusa
],
"require-all": true // if you want to also mirror the dependencies from each package
}
- 运行
./medusa.phar mirror medusa.json
- 等待很长时间
在此期间,Medusa将首先找到您需要的所有依赖项。然后,它将为每个依赖项运行git clone --mirror
以在指定的repodir中创建镜像。最后,它将使用新的配置更新您的satis.json文件。
- 运行satis构建命令:
./satis.phar build satis.json web/
- 每天运行一次
./medusa.phar update medusa.json
./satis.phar build satis.json web/
更新所有仓库并重新构建satis配置。
其他可用命令
add [--with-deps] package [config-file]
--with-deps
如果您想镜像新包的依赖项package
是要镜像的包名(例如:symfony/symfony)config-file
是medusa.json配置文件;指定的satis.json配置文件将被更新
让composer使用它
将Web服务器指向web/
目录。
在您的composer全局配置文件中添加
{
"repositories": [
{
"type": "composer",
"url": "http://my.satis.url"
}
]
}
resolver.json
该resolver.json
文件是部分解决方案,其中包维护者重命名或删除了包。其中属性名(键)是原始包名,其值是
- 新包名(对于重命名的包),或
null
(对于已删除的包,即不再存在于Packagist中)