작곡가와 포크를 요구하는 방법


172

여기 내 composer.json이 있습니다 .Github에서 Nodge의 lessphp 프로젝트 포크를 사용하고 싶습니다.

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

하지만 업데이트 할 때이 오류가 있습니다.

nodge / lessphp dev-master-> 일치하는 패키지가 없습니다.

이 포크를 올바르게 요구하는 방법을 모르겠습니다 ...

어떤 제안?

답변:


228

가장 일반적이고 쉬운 방법은 VCS 리포지토리를 사용하는 것입니다.

포크를 리포지토리로 추가하고 사용자 지정 분기를 가리 키도록 버전 제약 조건을 업데이트하기 만하면됩니다. 사용자 지정 분기 이름 앞에 접두사가 있어야합니다dev- .

버그 픽스 브랜치에서 버그를 수정하기 위해 모노로그를 패치했다고 가정하는 예제 :

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

bugfix 브랜치를 지정하는 것 외에는 require 문을 변경하지 마십시오. 개인 포크 ( )가 아닌 업스트림 패키지 ( monolog/monolog)를 계속 참조하십시오 . 문서에서 세부 정보 읽을 수 있습니다igorw/monolog


6
github.com/jwage/purl 의 포크 인 github.com/Polycademy/purl 에서는 작동하지 않는 것 같습니다 . "저장소": [{ "type": "vcs", "url ":"git@github.com : Polycademy / purl.git "}] 및"필수 ": {"jwade / purl ":"dev-master ",}, 계속 표시됩니다. 문제 1-요청한 패키지 jwade / purl을 어떤 버전에서도 찾을 수 없습니다. 패키지 이름에 오타가있을 수 있습니다.
CMCDragonkai

11
@CMCDragonkai 실행 composer show jwade/purl -v하면 dev-master 버전이 무시 된 이유를 알려줍니다.
Seldaek

4
@seldaek 당신은 저를 저장했습니다! 감사합니다! (내 포크는 dev-dev- ..라고 불렀습니다.) 이름이 자동으로 알지 못했습니다.
Miguel Stevens

15
"문서를 읽으십시오"는 나쁜 대답입니다. 더 나은 대답은 구체적인 예를들 것입니다.
oskarth

7
개인 포크를 참조하지 않는 것에 대해 경고하는 것이 좋습니다. 이것은 나의 하루, +1을 저장했다
edrian

42

VCS 사용하기 :

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

그러나이 모듈이 필요하면 composer.json작동하지 않습니다. 포크가 아닌 원래 프로젝트를 설치합니다.

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

저장소를 다시 언급해야합니다. 그게 정상인가요?


여기 동일한 문제
Aysennoussi

"rm -rf"를 사용한 다음 "composer update"를 사용하여 수동으로 모듈을 삭제하십시오. 그것은 나를 위해 일했다.
Hubert Perron

3
나는 수십 개의 포크를 사용 했지만 이것은 효과가 없었습니다 . 효과적인 해결책은 다음과 같습니다. stackoverflow.com/a/27970559/183904
Julien

4
@Julien, 방금이 방법을 사용했으며 매력처럼 작동했습니다 ... 문서 는 매우 분명합니다 . 문제가있는 패키지가 필요할 때 사용자 지정 분기 이름에 dev- 접두사 를 넣어야한다는 것을 기억해야합니다 .
mTorres

2
나를 위해 일했지만 ... URL에 https : //를 사용해야한다고 언급하고 싶습니다.
plong0

33

@Neilime 답변을 얻을 수 없다면 포크가 다른 지점을 사용하는지 확인하십시오.

예를 들어 my-bugfix, 포크에있는 분기에 변경 사항을 푸시하십시오. dev-분기 이름 에 접 두부를 추가하지 말고 composer.json에 추가해야합니다. 작곡가 파일은 다음과 같습니다.

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},

1
이것은 저에게 독창적이고 명확한 설명입니다! 감사합니다 !
Dominik

1
하지만 다른 사람의 포크 라면 어떨까요? 예를 참조하십시오 여기
abbood

또한 name분기 저장소 composer.json파일 의 필드 는 원래 소유자와 동일하게 유지되어야합니다.
NecipAllef

11

나는 많은 옵션을 시도했지만이 게시물을 얻은 후 나는 빛을 보았고 그것은 완벽하게 작동했습니다.

이것은 당신이해야 할 일입니다.

1- 포크 저장소

2- 분기를 생성하고 필요한 수정을합니다.

3- composer.json에 저장소 레이블 추가

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4- 프로젝트 내부의 명령 행에서 다음과 같은 포크가 필요합니다.

composer require vendor/packagename:dev-branchname

그리고 Voilá !!

당신은 당신의 포크 버전을 작동



5

따라서 이것은 2019 년이며 여기의 대부분의 답변이 이미 맞습니다.

그러나 자신이 발견 한 경우 (만든 만든) 포크 의 특정 분기 가 필요한 상황에서는 작곡가에게 사용 가능한 버전 / 태그를 먼저 나열하십시오. 이로 인해 많은 시간이 절약되었습니다.

spatie/laravel-backup패키지 와 함께 전체 예제 .

먼저 repositoriescomposer.json 에 키를 추가하십시오 . 포크의 URL로

"repositories": [{
   "type": "vcs",
   "url": "https://github.com/holymp2006/laravel-backup"
 }]

사용 가능한 버전 / 태그 받기

composer show "spatie/laravel-backup" --all

versions터미널 출력에서 원하는 버전을 선택한 다음 해당 버전이 필요합니다

composer require spatie/laravel-backup:v5.x-dev

2

나는 보통 패키지 정의에 "dist"노드를 추가한다. 이런 식으로 사용하는 데 아무런 문제가 없었습니다.

그러나 추가 설명을 위해이 트릭을 어디서 얻었는지 기억할 수 없습니다.

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "dev-master",
                "name": "nodge/lessphp",
                "source": {
                    "url": "https://github.com/Nodge/lessphp.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lessc.inc.php"]
                },
                "dist": {
                    "url": "https://github.com/Nodge/lessphp/archive/master.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require": {
        "nodge/lessphp": "*"
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.