2009-12-06 3 views
14

나는 리눅스를 사용하는 임베디드 시스템을 만드는 회사에서 일한다. 역사적으로 우리는 항상 커널 작업을 저장하기 위해 CVS를 사용했습니다. 우리의 커널의 모음 끝나게 : 리눅스의 비트 우리가 리눅스를 맞게 기업 리눅스 커널 개발을위한 작업 흐름

  • 비 독점적 인 하드웨어 드라이버
  • 임의의 불쾌한 해킹을 사용하는 우리의 독점적 인 하드웨어에 대한

    • 드라이버
    • 임의 수정 우리 응용 프로그램

    우리는 이전 버전의 일부 커널을 최신 버전으로 리베이스하고 오래된 CVS 워크 플로우를 변경 세트를 기반으로 수정하려는 단계에 있습니다. 분명한 선택은 git입니다.

    저는 현명한 워크 플로우를 내놓으려고 애 쓰고 있습니다. 필자는 커널 중 하나에 CVS 저장소를 내보내고 적절한 기본 Linus 커널 위에 변경 집합을 가지고 있습니다. 여기서 어디로 가야합니까?

    모든 개발자가 변경 사항을 커밋하는 중앙 저장소가 필요합니다. 리베이스 (rebase)를 사용하여 우리의 콜렉션 집합을 새로운 기본 커널 개정판으로 이전 한 다음 우리의 개발을 새로운 중앙 지사 (central branch) 위에 수행하는 것이 안전합니까?

    업스트림에 적합한 변경 내용을 손쉽게 분리 할 수있는 워크 플로를 얻는 보너스 포인트입니다. 나는 항상 작은 (또는 작은) 일반적으로 유용한 변화의 컬렉션을 앞으로 밀어내는 것에 지쳐있다.

  • 답변

    8

    Rebase는 로컬 브랜치에 대해 integrating upstream branches에 적합합니다. 단, 로컬 브랜치의 히스토리가 다시 작성되었으므로 로컬 브랜치를 푸시하지 않는 것이 좋습니다. 예를 들어 "git workflow and rebase vs merge questions"을 참조하십시오.

    밀어 넣기 관련 변경 사항 인 merge/cherry-pick에 전용 Git 저장소에 전용 "공개"브랜치 (푸시 예정)가 있어야합니다.
    잠재적으로 여러 개의 공용 브랜치가 공존 할 수 있습니다. 필요에 따라 커널 버전 당 하나씩 유지 관리됩니다.

    그런 다음 중앙 저장소는 푸시 된 모든 개발자 분기를 통합 (즉, 가져온)하도록 설정할 수 있습니다.

    병합 워크 플로 및 게시 항목에 대한 자세한 내용은 "git releases management"을 참조하십시오.