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

여기 내 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-> 일치하는 패키지가 없습니다.

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

어떤 제안?



답변

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

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

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

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

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


답변

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"
},

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


답변

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

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

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


답변

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

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

1- 포크 저장소

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

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

"repositories": [

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

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

composer require vendor/packagename:dev-branchname

그리고 Voilá !!

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


답변

Composer 문서 http://getcomposer.org/doc/05-repositories.md#vcs 에 따르면
( require귀하의 경우 “nodge / lessphp” )에서 포크가 아닌 원래 저장소를 지정하는 것으로 충분합니다 . 그런 다음 작곡가가 포크를 설치합니다 (공급 업체의 코드 확인).


답변

따라서 이것은 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


답변

나는 보통 패키지 정의에 “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": "*"
    }
}