Satis Private Repository - satisf.json结构

时间:2015-12-07 13:24:49

标签: php git symfony composer-php satis

  

修改

     

我觉得我误解了,现在这是我的新理解,如果我错了,请纠正我:

     

在satisf.json中,我必须指定我要镜像的包的URL,例如doctrine git repo,yaml git repo ...然后在我的服务器上满意地镜像所有这些包。这意味着我需要将我项目的composer.json中使用的所有包添加到satisf json(大约20个包/要求)。现在,我可以将我的私有READ存储库添加到我的项目的composer.json文件中,并且在运行“composer update”时,它将首先查看所需包中的令人满意的镜像包。我理解正确吗?

情况:

我正在尝试将Satis用于私人作曲家存储库。我在github上有一个私人项目,用于我的网站。在项目中,我使用的是composer,因此我在项目的根目录上有一个composer.json。它看起来如下:

{
   "name": "Peter North",
   "license": "proprietary",
   "type": "project",
   "autoload": {
      "psr-4": {
        "": "src/"
      }
   },
   "require": {
      "php": ">=5.3.9",
      "symfony/http-foundation": "dev-master"
   }
   ...
}

现在我想使用我的私有的url:packages.ait.company存储库,在apache上运行并且可访问到目前为止。 satisf.json看起来如下:

{
   "name": "AIT Company",
   "homepage": "packages.ait.com",
   "repositories": [
       {
           "type": "vcs",
           "url": "git@github.com:north/ait.git" // this is the url of my private github project
       }
   ],
   "require-all": true,
   "require-dependencies": true,
   "archive": {
       "directory": "dist",
       "format": "tar",
       "skip-dev": true
   }
}

我认为我不太了解如何构造satisf.json文件以及它需要包含什么,因为我正在尝试的方式,它不会下载“php”和“symfony / http-foundation”包我在composer.json文件中指定的 - 虽然它确实将项目的正确composer.json文件下载到/ satisf / include目录json文件中。

当我想从github读取我的项目的composer.json并构建“require entries”的私有令人满意的存储库时,satisf.json需要怎么样?

1 个答案:

答案 0 :(得分:1)

在我的Satis更新脚本中,从外部包和内部私有存储库创建本地副本是一个两步过程。

第一步只下载外部依赖项的元数据,并将它们放入一个中间的满意的存储库中。配置显然没有" require-all",但是具有开放式版本通配符的所有正在使用的包(以及可能使用或过去使用过的一些包)的显式语句,即"symfony/console":">=2.4"(没有代字号或插入符号 - 我想在这里获得主要版本更新)。添加require-dependencies:true会扫描所有必需包的所有依赖项,并将它们添加到元数据集中。

结果存储在"外部"。

目录中

第二步负责扫描内部"存储库"中的所有包,并从中创建存档。这显然是所有私人回购的列表,但诀窍是:您还可以添加satis.json类型" composer"的存储库。 - 这是我用外部包中的元数据添加外部存储库的地方。在这里添加它会添加所有外部包'版本到需要创建ZIP文件的版本列表。

第一次运行它需要很长时间,因为需要下载的所有软件包(并从私有存储库本地创建)。之后运行它只是对以前没有创建过的新版本的增量更新。

关键是在一个Satis文件中配置收集不带ZIP的外部软件包以及显式版本范围(" *"因为版本可以工作,但只在真正需要所有版本时使用它),然后将生成的存储库添加到第二个Satis配置。您不能将这两个操作(仅将所选外部依赖项的ZIP与所有内部存储库的ZIP一起创建)组合到一个Satis运行中。

还有一个提示:您可能只想创建外部依赖项的本地副本,以避免在部署到生产(或正在开发并需要更新)时遇到Github中断。为了确保每个使用的依赖都在我的Satis中,我将Satis存储库添加到每个composer.json以及"packagist":false,以关闭与Packagist的任何直接联系。你不能只是添加一个随机包,它必须首先在你的本地Satis存储库中。