2015-01-13 3 views
2

Symfony2 프로젝트를 개발하는 동안 제 3 자 번들의 버그를 종종 접하게됩니다. 대부분 버그는 미묘하지만 발견하기가 어렵습니다. 예를 들어 이번 주에만 나는 값이 간단한 if ($value) 구조를 사용하여 테스트되었지만 ($value !== null) 또는 ($value !== false)을 사용해야하는 세 가지 버그를 발견했습니다.작곡가 및 제 3 자 버그

해당 프로젝트의 관련 github 페이지에 대한 충분한 권한이 없으면 내가 할 수있는 최선의 방법은 끌어 오기 요청을 푸시하는 것입니다. 요청을 병합하는 데는 보통 꽤 시간이 걸립니다. 한편, 특히 마스터 버전을 사용할 때 다른 끌어 오기 요청이 병합되어 작곡가가 업데이트되도록 유도합니다. 이러한 상황이 발생하면 모든 로컬 버그를 수정하여 원래 코드로 되돌립니다.

이 상황을 처리 할 수있는 방법이 있습니까?

이상적으로 제 3 자 번들을 업데이트하고 싶지만 제 수정안을 유지해야합니다. 당기기 요청이 병합 될 때까지.

+1

왜 프로젝트를 포크하지 않습니까? – COil

+0

@COil 포킹은 본질적으로 작곡가에게 마법을시키는 대신 자신을 동기화해야하는 다른 소스가 될 것입니다.) – Twifty

+1

내 대답을 참조하십시오. 다른 가능성이 있다고 생각하지 않습니다. – Fleshgrinder

답변

3

작성자는이 기능을 즉시 사용할 수 없습니다. 이유는 간단합니다. 다른 라이브러리의 개발 버전에서는 작동하지 않아야합니다. 그러나 걱정하지 말라. GitHub에서 프로젝트를 포크하여 쉽게이 문제를 해결할 수있다. 물론 이것은 오버 헤드의 많은을 의미하지만,이 문제를 해결할 수있는 최선의 해결책이라고 생각할 수 있습니다. 이 방법은 패치 방식에 비해 몇 가지 장점을 가지고

참고 :

  1. 직접 포크에서 끌어 오기 요청을 만들 수 있습니다.
  2. git merge 프로세스는 충돌을 식별합니다.

이 프로세스를 자동화하는 스크립트는 간단하다

#!/bin/sh 

git fetch upstream 
git checkout master 
git merge upstream/master 

당신은 설치/각 프로젝트에이 명령을 실행 스크립트를 작곡가 포스트 업데이트를 만들 수 로컬 디렉토리 그것이 당신의 포크 중 하나입니다합니다. (필자는이 구현 부분을 독자에게 맡긴다. 그러나 Composer는 저장소 데이터없이 최신 파일 만 다운로드하기 때문에 먼저 저장소를 로컬로 생성해야한다. 이것은 거대한 프로젝트가 있기 때문에 큰 .git 폴더를 프로젝트에 추가 할 수있다.)

+0

내가 피하려고하는 것은 그 오버 헤드입니다. 그러나 유일한 선택 일 수 있습니다. github이 어떤 제한을 부과하는지 궁금합니다 ... – Twifty

+0

알아요,하지만 당신은 항상 약간의 오버 헤드가 있습니다. 물론 쉘 스크립트에서 이러한 작업을 수행하는 데 필요한 모든 명령을 자동화하거나 Windows에서 작업하는 경우 다른 PHP 스크립트 만 자동화 할 수 있습니다. 어떤 종류의 한계를 의미합니까? – Fleshgrinder

+0

한계에 의해, 나는 그들의 자유 계획에 포크의 수, 저장소 크기 등을 의미한다. 지금 문서를 읽는 것만으로는 보이지 않습니다. 더 나아가서 PHP로 실행될 스크립트를 생성하여 작곡가 사전 업데이트에 추가 할 수 있습니다. 따라서 오버 헤드는 내 풀 요청의 상태를 정기적으로 확인하는 것입니다. – Twifty

5

작곡가와 함께 패키지를 다운로드 한 후 패치를 적용 할 수있는 프로젝트가 있습니다. 드루팔 (Drupal) 프로젝트와 함께 사용하기 위해 만들어졌지만 필자는 자신의 패치로도 잘 작동 할 것이라고 믿습니다.

https://github.com/jpstacey/composer-patcher

그렇지 않으면, 당신은, 당신에게 개선을, 프로젝트를 포크 끌어 오기 요청을 제출하고 그 동안 작곡가에 자신 갈래의 저장소를 사용할 수 있습니다. 이를 달성하는 방법에 대한 자세한 설명은 [이 대답] [https://stackoverflow.com/a/14637668/3492835]을 참조하십시오.

편집 :
별은 지금 2016 되려고 말, 그리고 몇 가지가 변경되었습니다. jpstacey/composer-patchernetresearch/composer-patches-plugin 프로젝트를 위해 더 이상 사용되지 않습니다. 이것은 기본적으로 동일한 합성기 플러그인이지만 로컬 패치도 적용 할 수 있습니다.

+0

Fleshgrinder의 대답은 더 조정되어 있고 자세한 정보는 내가 좋아하기 때문에 내가 할 수있는 최선은 upvote입니다. 성취하기를 원합니다 :) – Twifty

+0

문제 없습니다, 나는 Fleshgrinder의 해결책도 찾아 볼 것입니다 :) 단지 고려할 가치가있는 옵션이라고 생각했습니다. composer-patcher 프로젝트에는 원격 주소에서 패치를 가져올 수있는 또 다른 제한 사항이 있습니다. – Xatoo

+1

로컬 패치에서 패치를 원한다면 패치를 패치해야합니다. – Twifty