我在 github 上建立了一个satis存储库,用于跨项目共享一些公司内部包。
现在,当我尝试“依赖”新存储库时,我尝试了以下操作:
"repositories": [ {
"type": "composer",
"url": "https://raw.githubusercontent.com/[organisation]/satis/master/web/packages.json?token=[token-copied-from-url]"
} ]
Run Code Online (Sandbox Code Playgroud)
它工作得足够好,composer 找到了 package.json,但是,它失败了:
[Composer\Downloader\TransportException]
The "https://raw.githubusercontent.com/[organization]/satis/master/web/packages.json?token=[token-copied-from-url]/include/all$[some-json-file].json" file could not be downloaded (HTTP/1.1 404 Not Found)
Run Code Online (Sandbox Code Playgroud)
这并不奇怪,因为 ?token 部分似乎生成了无效的 URL。
我可以通过手动将包含文件的内容直接移动到packages.json 中来解决这个问题,但这不太理想,特别是当 satis 决定生成多个文件时。
我认为这会导致的另一个问题是我不太了解令牌的有效性。也许它的寿命不长,然后需要定期重新生成。
有没有办法可以将我的 satis 存储库托管为“只是”github 存储库?
我有一个设置了基本 HTTP 身份验证的 Satis 服务器。
配置文件如下所示:
{
"name": "MySatisServer",
"homepage": "https:\/\/satis.example.co.uk",
"repositories": [
{
"type": "git",
"url": "git@github.com:Org\/Repo1.git"
},
{
"type": "git",
"url": "git@github.com:Org\/Repo2.git"
},
{
"type": "git",
"url": "git@github.com:Org\/Repo3.git"
},
{
"type": "git",
"url": "git@github.com:Org\/Repo4.git"
}
],
"require-all": true,
"require-dependencies": true,
"require-dev-dependencies": true,
"archive": {
"directory": "dist",
"format": "zip",
"prefix-url": "https://satis.example.co.uk"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经运行了 satis 构建,它使用packages.json
看起来正确的文件创建了我的 dist 目录。
我可以https://satis.example.co.uk
在我的浏览器中访问并下载我想要的任何版本的存储库作为 ZIP 并且它工作正常。
当我尝试通过 Composer 使用 repo 时出现问题。
我的composer.json
文件看起来像这样:
{
"name": "some/project",
"description": "",
"license": …
Run Code Online (Sandbox Code Playgroud) 我正在开发一些经常在多个项目中使用的库,并使用 GIT 来对它们进行版本控制。
现在,我想通过 Composer 使用它们。
我的问题是:Composer 使我能够指定一些私有存储库,我可以从中提取源代码以包含在我的应用程序中(https://getcomposer.org/doc/05-repositories.md#using-private-repositories)。
然后,我找到了 Satis:https ://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#satis
现在,我不太明白两者之间的差异,以及使用 Satis 而不是通过 Composer 功能使用私有存储库可以拥有哪些优势。
我真的应该设置 Setis 服务器吗?它给我带来了哪些好处?
我已经在我自己的服务器上成功设置了Satis,并且可以从中提取包.
但是,这些私有包中所需的依赖关系不断被克隆到它们的前沿版本而不是指定的版本约束.我认为Satis正在创建最新开发版本的本地镜像.但是我不想拥有本地镜像,我只需要它们直接从Packagist安装.
那么我如何设置项目/包/ Satis以在从Packagist安装的那些私有包中具有依赖性?
谢谢.
这是我的Satis构建文件:
{
"name": "Package Server",
"homepage": "http://packages.URL",
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:USERNAME/REPO.git",
"options": {
"ssh2": {
"username": "USERNAME",
"pubkey_file": "PUBFILE",
"privkey_file": "PRIVATEFILE"
}
}
}
],
"require-all": true
}
Run Code Online (Sandbox Code Playgroud)
这是需要私有包的项目的composer.json文件(包没有标记版本):
{
"name": "Test Project",
"description": "",
"require": {
"php": ">=5.4.0",
"USERNAME/REPO": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://packages.URL"
}
],
"minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)
这是私有包的composer.json:
{
"name": "USERNAME/RPO",
"description": "",
"require": {
"php": ">=5.4.0",
"illuminate/support": "5.0.*",
"vinkla/hashids": "~1.0"
},
"minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud) 我已经设置了我的本地SVN仓库来保存所有外部回购(公司政策),使用Satis我创建了packages.json文件.当我运行composer update时如何告诉它使用我的自定义packages.json文件并从我的本地repo而不是externals?
这是我的svn repos所在的packages.json文件中的一个模糊:
"source": {
"type": "svn",
"url": "http://blah/packagist/foo/bar",
"reference": "/tags/2.3.0/@38"
}
Run Code Online (Sandbox Code Playgroud)
但我用来检查这个项目的网址是:
http://blah/packagist/foo/bar/tags/2.3.0
Run Code Online (Sandbox Code Playgroud)
在我的composer.json文件中,我还添加了这个:
"repositories": [
{
"packagist": false,
"type": "composer",
"url": "http://local/packages.json"
}
]
Run Code Online (Sandbox Code Playgroud)
但它仍然从git而不是我的svn回购中拉出来,我做错了什么?