2009-02-09 3 views
0

나는 내 자신의 필요에 맞게 오픈 소스 프로젝트를 포크화할 필요가 있다고 생각하기 시작했다. 나는 원저자에게 패치를 보냈지 만, 그 반응은 꽤 간결하고 잘, 환영받지 못했다.FOSS 프로젝트의 Git 저장소 포크 화

아무튼. Forking an open source project nicely 질문을 읽었지만 더 구체적인 질문에 대답하지 않습니다.

파일을 어떻게해야합니까?

우선, origninal Git 저장소를 계속 사용하거나 모든 기록을 버리고 새로 시작해야합니까 ("rm -rf .git && git init")? 둘째, 이전 readme에 대한 의견이 있습니까? s, 이전 릴리스 정보 및 버전 관리?

당연히 라이센스 및 귀속은 라이센스 요구 사항에 따라 처리됩니다.

+0

기록을 보관하지 않으면 포크가 아닙니다. –

+0

@Ali A : 나는 그런 말을하지 않을 것이다. 누군가가 현재의 상태를 체크하고 그것에 대해 작업한다면 나는 여전히 그것을 포크라고 부를 것이다. 유용한 정보를 버리는 포크지만 여전히 포크. –

답변

1

완전히 다시 작성하려면 init라는 새 항목을 사용해보십시오. 그 외에는 복제품을 만드십시오.

8

기록은 소스 제어에서 가장 중요한 부분입니다. 나는 역사를 지키고 자신의 발전이 시작되는 지점에 레이블을 붙이라고 말하고 싶습니다.

  • 패치를 적용하여 로컬 시스템으로 Github에서에서

  • 5
    1. 포크를
    2. 복제 당신은
    3. 밀어

    꽤 고통이 될해야 승인되지 않은 원래의 저자를 전송하고, 모든 것을 처음부터 다시 작성하지 않는 한 올바른 방법입니다.

    +0

    선택적으로 끌어 오기 요청을 보냅니다. 그런 다음 원저자의 손에 싫어하는 부분을 병합합니다. –

    6

    나는 역사를 계속하는 이유 이유 :

    1. 가장 중요한 이유는. 당신은 당신의 프로젝트에서 분기 할 것이라는 것을 예측하지 않는 한 그들이에서 와서이 원래 코드에서 유용 변화를 가져올 수 있습니다 원본을 철저히 지키면 자신의 것으로 나타나기를 원하지 않을 것이므로 유용한 변경 사항을 추적하고 가져 오는 것이 훨씬 쉬워집니다.
    2. 원래 프로젝트의 소유자가 당신과 더 기꺼이 의견을 나눠야한다고 말하면 쉽게 되돌릴 수 있습니다.
    3. 당신이 머리를 긁적으로 본다면 그것이 무엇을 의미하는지 궁금해지면 특정 변화의 기원을 쉽게 추적 할 수 있습니다. git의 경우 git bisect 때문에 버그를 찾아 낼 수 있습니다. 실제로 위험한 것으로 생각되는 변경 사항을 발견 할 수 있습니다. 이것은 bisect으로 쉽게 찾을 수 있고 그것 없이는 매우 힘든 일종입니다. 역사가 없으면 그렇게 할 수 없습니다.

    해당 사항이없는 경우 새로 시작할 수 있습니다. 하지만 그렇게해도 개인 기록에 역사를 남겨 두십시오. 새로운 저장소에서 변경 사항을 이식하고 위의 모든 작업을 수행 할 수 있습니다.

    1

    실제로 프로젝트를 시작한 곳에서 시작하여 원래의 저장소를 확실히 복제하고 커밋을 계속 진행하십시오. 이렇게하면 원래 저장소의 변경 사항을 병합 할 수있을뿐 아니라 원래 프로젝트의 개발자가 포크에서 변경 사항을 다시 병합 할 수 있습니다. 두 프로젝트가 모두 Github에있는 경우이 공동 작업은 훨씬 쉽습니다 (요청을 가져옴).

    저장소에서 변경하고 패치를 보내거나 요청을 전송해야하기 때문에 실제로는 자연 스럽습니다. 포크는 별도의 프로젝트로 분류되는 것을 제외하고는 동일합니다.

    2

    다른 사람들이 지적했듯이 : 당신은 정말로 역사를 지켜야합니다. README 및 버전 관리 : 원본 프로젝트와의 혼동을 피하기 위해 프로젝트의 이름을 변경해야합니다. 원래 프로젝트를 암시하는 이름을 사용할 수는 있지만 (잠재적 인 상표 문제는 알고 있어야 함) 불쾌하지 않도록 노력하십시오. 예를 들어, 원래 프로젝트의 이름이 "foo"인 경우 "foo-ng"프로젝트 (다음 세대)를 명명하면 어떻게 든 프로젝트가 다른 프로젝트보다 "좋음"이라고 기술 할 수 있습니다. 이것이 사실이라고 생각한다고해도 그렇게하지 마십시오.

    귀하의 필요에 따라 README를 업데이트해야합니다. 나는. 새 프로젝트 이름, 프로젝트 "foo"의 포크 및 가능한 포크 지점이라는 사실을 문서화해야합니다. 개인적으로, 필자는 변경 로그 (ChangeLog) 및 이와 유사한 기술 지향 문서를 유지하고 필요에 따라 추가 할 것이지만 "NEWS"스타일 문서, 즉 최종 사용자를 대상으로하는 문서를 새로 시작합니다.

    3

    원래 작성자에게 패치를 보내지 않으려는 경우에도 git은 멋진 로컬 버전 관리 도구를 만듭니다.

    GitHub의에 대한 또 다른 좋은 점

    , 다른 워크 플로우의 일부에 부록으로 이전에 게시 :

    1. 는 github의 계정을 만듭니다.
    2. 포크 당신이 원하는대로
    3. 로컬 일에 로컬
    4. git clone 새의 repo에 대한 지침을 따르십시오 (포크 버튼을 GitHub의에 자신의 페이지로 이동하고 클릭하여) 원하는 저장소; github에서 원본 소스의 업데이트를 가져 오십시오. (프로젝트의 github에서 포크 대기열에서
    5. (원래 작성자에게 패치를 보내는 대신) 제작자가 원래 프로젝트의 포크 대기열 페이지로 이동하여 패치를 가져 오려면 원본 작성자가 변경 사항을 적용하는 것이 어려워집니다.

    프로젝트 작성자의 반응이 좋지 않은 경우 정확하게 도움을받을 자격이 없으며 반환하는 것에 대해 너무 걱정하지 않아도됩니다. 그러나 포크 대기열에 대해 4 단계를 계속 수행하십시오. 프로젝트를 변경하는 github의 모든 사람들과 최신 소식을 접할 수 있습니다.

    빠른 추가 : 원래 작성자와 약간의 작업을 유지하려는 경우 매우 쉽게 수행 할 수 있습니다. * 새 분기 (git checkout -b my_branch_name)를 만들고 거기에서 작업하십시오.
    * 원하는 상태로 해당 분기가 있으면 원래 분기 (git checkout master)로 다시 전환하고 변경 내용을 다시 (git merge my_branch_name) 병합 할 수 있습니다.
    * 그런 다음 다시 github (git push origin master) 또는 으로 푸시 할 수 있습니다. * 원본 작성자 (일부 버전은 git format-patch)에게 패치를 만듭니다.