instaclick/medusa

一组命令,用于维护git仓库的镜像并创建用于composer的本地satis仓库。

0.7 2021-10-06 01:28 UTC

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肯定很令人困惑。

如何使用

目前,您可以执行以下操作

    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中)