GitHub의 특정 커밋 라이브러리 foo/foo-lib
가 requires
있습니다.
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
잘 작동합니다.
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Updating knplabs/gaufrette dev-master (2633721 => 2633721)
Checking out 2633721877cae79ad461f3ca06f3f77fb4fce02e
Generating autoload files
하지만 다른 프로젝트에서 해당 라이브러리가 필요한 경우 :
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
종속성 오류가 발생합니다.
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for foo/foo-lib dev-master -> satisfiable by foo/foo-lib[dev-master].
- foo/foo-lib dev-master requires knplabs/gaufrette dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e -> no matching package found.
그래서 내 질문은 : require
내 라이브러리의 GitHub에서 특정 커밋 을 올바르게 지정하여 종속 패키지에서 사용할 수 있도록하는 방법입니다.
답변
dev
라이브러리와 애플리케이션 모두에서 플래그 와 함께 해당 해시에서 Gaufrette 라이브러리를 명시 적으로 요구해야합니다 . 다음과 같은 것이 응용 프로그램에서 작동합니다 composer.json
.
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master",
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
에서 문서 :
종속성 중 하나에 불안정한 패키지에 대한 종속성이있는 경우 충분한 안정성 플래그와 함께이를 명시 적으로 요구해야합니다.
이 문서는 또한 bar/bar-app
Composer 파일 에 Gaufrette의 저장소를 포함해야한다고 제안 하지만이 경우에는 필요하지 않은 것처럼 들립니다. 이유를 모르겠습니다.
답변
다음은 명령 줄에서 수행하는 방법입니다.
composer update knplabs/gaufrette:dev-master#2633721 --with-dependencies
전체 해시를 사용할 필요는 없으며 7 자 길이의 해시가 트릭을 수행하는 것 같습니다. 위에서 언급했듯이 프로젝트는 dev를 지원해야합니다. 아직 설정하지 않은 경우 불만을 표시합니다. 또한 --with-dependencies
업데이트하는 항목의 종속성을 가져 오는 데 사용하십시오.
답변
포크로 Git 리포지토리를 변경하는 경우 패키지 이름이 실제로 패키지의 자체 composer.json 파일에 정의되어 있는지 확인하십시오. 패키지를 내 joshuapaling github 계정으로 포크 했음에도 불구하고 패키지는 이제 작곡가의 관점에서 패키지 이름에 전혀 영향을주지 않은 URL https://github.com/joshuapaling/Cake-Resque.git 에 있습니다.
어리석은 오류-하지만 저는 작곡가가 처음이고 처음에는 명확하지 않았습니다! 그래서 나는 이것이 같은 문제를 가진 다른 사람에게 도움이되기를 바랍니다.