컴포저를 사용하여 git 저장소를 자동으로 복제하려고 합니다.git 저장소는 패키지리스트에 없습니다만, 동작하지 않고, 무엇을 잘못하고 있는지 알 수 없습니다.
다음과 같이 “리포지토리”에 포함시켜야 한다고 생각합니다.
"repositories": [
{
"url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
"type": "git"
} ],
아마 “disclosed” 섹션에 기재되어 있을 겁니다.이 예시와 비슷해야 하는데 작동하지 않습니다.다음 오류만 표시됩니다.
요구 사항을 설치 가능한 패키지 세트로 해결할 수 없습니다.
이미 이런 시도를 한 사람이 있나요?
질문에 대한 답변
그 패키지는 사실 포장 업자를 통해 구입할 수 있습니다.이 경우 사용자 지정 리포지토리 정의는 필요하지 않습니다.꼭 추가해 주세요.require
(항상 필요한) 버전 제약이 일치합니다.
일반적으로 패키지에서 패키지를 사용할 수 있는 경우 VCS repo를 추가하지 마십시오.일이 더디게 진행될 거야
Packagist를 통해 사용할 수 없는 패키지의 경우 질문에 표시된 대로 VCS(또는 git) 저장소를 사용합니다.이 경우 다음 사항을 확인하십시오.
- “리포지토리” 필드는 root composer.json에서 지정됩니다(루트 전용 필드이며 필수 패키지의 저장소 정의는 무시됩니다).
- 저장소 정의가 유효한 VCS 보고서를 가리키고 있습니다.
- 만약 타입이 “vcs”가 아닌 “git”인 경우 (당신의 질문에서처럼) 실제로 git repo인지 확인합니다.
- 가지고 있다
require
문제의 소포에 대해서 - 의 제약조건
require
VCS repo에서 제공하는 버전과 일치합니다.사용할 수 있습니다.composer show <packagename>
사용 가능한 버전을 검색합니다.이 경우~2.3
좋은 선택일 거예요. - 의 이름
require
리모트의 이름과 일치합니다.composer.json
이 경우는,gedmo/doctrine-extensions
.
여기 샘플이 있습니다.composer.json
VCS repo를 통해 동일한 패키지를 설치합니다.
{
"repositories": [
{
"url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
"type": "git"
}
],
"require": {
"gedmo/doctrine-extensions": "~2.3"
} }
VCS repo documents에서는 이 모든 것을 잘 설명합니다.
git(또는 다른 VCS) 저장소가 있는 경우composer.json
사용할 수 있습니다. “사용 가능한” 보고서를 사용하지 마십시오.패키지 저장소에서는 정의의 모든 메타데이터를 제공해야 하며 모든 메타데이터는 완전히 무시됩니다.composer.json
제공된 dist 및 source에 표시됩니다.또한 대부분의 경우 적절한 업데이트를 허용하지 않는 등 추가적인 제한이 있습니다.
패키지 저장소를 사용하지 마십시오(문서 참조).
2013년에 글을 쓸 때, 이것은 하나의 방법이었다.Composer는 더 나은 방법을 위한 지원을 추가했습니다.@igorw의 답변을 참조하십시오.
저장소가 있습니까?
Git, Mercurial 및 SVN은 Composer에서 지원됩니다.
저장소에 대한 쓰기 액세스 권한이 있습니까?
네?
저장소에 A이(가) 있습니까?composer.json
파일
저장소가 있는 경우 다음 위치에 쓸 수 있습니다.composer.json
파일을 작성하거나 기존 파일을 수정하고 아래 솔루션을 사용하지 마십시오.
@igorw의 답변으로 이동합니다.
저장소가 없는 경우에만 사용
또는 저장소에 A가 없는 경우composer.json
추가할 수 없습니다.
그러면 Composer가 원래 저장소의 데이터를 읽을 수 있는 모든 내용이 덮어쓰게 됩니다.composer.json
패키지와 자동 로딩의 의존성을 포함합니다.
사용방법package
type은 모든 것을 올바르게 정의해야 하는 부담을 사용자에게 전가합니다.좀 더 쉬운 방법은…composer.json
저장소에서 파일을 만들고 그냥 사용하세요.
이 솔루션은 변경할 수 없는 포기된 ZIP 다운로드 또는 읽기만 가능한 저장소가 있는 드문 경우에만 사용할 수 있지만 더 이상 유지 관리되지 않습니다.
"repositories": [
{
"type":"package",
"package": {
"name": "l3pp4rd/doctrine-extensions",
"version":"master",
"source": {
"url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
"type": "git",
"reference":"master"
}
}
} ], "require": {
"l3pp4rd/doctrine-extensions": "master" }
다음과 같이 composer.json에 git 저장소를 포함할 수 있습니다.
"repositories": [ {
"type": "package",
"package": {
"name": "example-package-name", //give package name to anything, must be unique
"version": "1.0",
"source": {
"url": "https://github.com/example-package-name.git", //git url
"type": "git",
"reference": "master" //git branch-name
}
} }], "require" : {
"example-package-name": "1.0" }
가능한 경우 작성자에게 소스를 사용하도록 지시하십시오.
composer update --prefer-source
또는 다음 중 하나를 선택합니다.
composer install --prefer-source
그러면 추출된 tarball 대신 복제된 저장소로 패키지를 얻을 수 있으므로 변경 후 다시 커밋할 수 있습니다.물론 저장소에 대한 쓰기/푸시 권한이 있고 Composer가 프로젝트 저장소에 대해 알고 있다고 가정합니다.
면책사항:조금 다른 질문이라고 생각합니다만, 이것이 제가 찾고 있던 질문이기 때문에, 다른 사람에게도 도움이 되었으면 합니다.
Composer가 프로젝트의 저장소가 어디에 있는지 알 수 없거나 프로젝트에 적절한 composer.json이 없는 경우 상황은 조금 복잡하지만 다른 사람들은 이미 이러한 시나리오에 답했습니다.
여기에 기재되어 있는 솔루션에는 몇 가지 중요한 포인트가 있기 때문에 여기에 기재되어 있는 솔루션에 참여하려고 합니다.
@igorw의 답변에서 설명한 바와 같이 저장소에 대한 URL은 composer.json 파일에 지정되어 있어야 합니다.단, 두 경우 모두 composer.json이 존재해야 합니다(@Mike Graf의 두 번째 방법과는 달리). 또한 Github은 현재 npm 패키지로만 패키지를 제공하고 있습니다).ifreference는 등록 후 Packagist 인터페이스에서 URL을 문자 그대로 입력하는 대신 사용할 수 있습니다.
또한 Composer에서는 재귀 저장소 정의가 작동하지 않으므로 이 방법을 사용하는 외부 라이브러리에 의존할 수 없다는 단점이 있습니다.또한 이로 인해 재귀 정의가 의존관계에서 실패했기 때문에 루트에 명시적으로 저장소를 재지정하는 것만으로는 충분하지 않은 것 같지만 패키지의 모든 의존관계도 재지정해야 합니다.
작곡가 파일 포함 (2012년 10월 18일 15:13 igorw에 응답)
{
"repositories": [
{
"url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
"type": "git"
}
],
"require": {
"gedmo/doctrine-extensions": "~2.3"
} }
작곡가 파일 없음 (13년 1월 23일 17:28 Mike Graf에 응답)
"repositories": [
{
"type":"package",
"package": {
"name": "l3pp4rd/doctrine-extensions",
"version":"master",
"source": {
"url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
"type": "git",
"reference":"master"
}
}
} ], "require": {
"l3pp4rd/doctrine-extensions": "master" }