분기(버전 제어)

Branching (version control)

버전 관리 및 소프트웨어 구성 관리에서 분기는 버전 관리 대상 개체(소스 코드 파일이나 디렉토리 트리 등)의 복제입니다.그 후 각 오브젝트를 개별적으로 병렬로 수정하여 오브젝트를 다르게 할 수 있습니다.이 컨텍스트에서는 오브젝트를 브랜치라고 부릅니다.버전 관리 시스템의 사용자는 모든 브랜치를 브랜치할 수 있습니다.

나뭇가지들은 나무, 개울 또는 코드라인으로도 알려져 있습니다.발신기지 브랜치는 부모 브랜치, 업스트림브런치(특히 브랜치가 다른 조직이나 개인에 의해 유지되는 경우에는 단순히 업스트림) 또는 백업스트림이라고 불리는 경우가 있습니다.

자녀 브랜치는 부모가 있는 브랜치입니다.부모가 없는 브랜치는 트렁크 또는 [1]메인라인이라고 불립니다.트렁크는 HEAD라고도 불리지만 적절한 헤드는 브랜치가 아니라 특정 브랜치 상의 최신 커밋을 가리킵니다.트렁크와 이름 있는 브랜치 모두 자체 헤드를 가집니다.트렁크는 보통 개발이 진행되는 프로젝트의 기반이 되는 것을 의미합니다.개발자가 트렁크에서만 작업하는 경우 트렁크에는 항상 최신 버전의 프로젝트가 포함되지만 가장 불안정한 버전일 수도 있습니다.또 하나의 접근방식은 브런치를 트렁크에서 분리하여 그 브런치에 변경을 실장하고 브런치가 안정적이고 동작하고 있는 것이 판명되었을 때 그 변경을 트렁크에 Marge하는 것입니다.개발 모드 커밋정책에 따라서는 트렁크에 가장 안정성이 높은 버전 또는 가장 안정성이 낮은 버전 또는 중간 버전이 포함될 수 있습니다.트렁크의 다른 용어로는 베이스라인, 메인라인 및 마스터있습니다.단, 이 용어들이 유사하지만 다른 의미로 사용되는 경우도 있습니다.버전관리 § 공통용어를 참조해 주세요.대부분의 경우 메인 개발자의 작업은 트렁크에서 이루어지며 안정적인 버전이 브랜치됩니다.또한 때때로 버그 수정이 브랜치에서 트렁크로 통합됩니다.트렁크 이외의 브랜치에서 향후 버전 개발이 이루어지는 경우, 일반적으로 자주 변경되지 않는 프로젝트 또는 트렁크에 포함할 준비가 될 때까지 변경에 오랜 시간이 걸릴 것으로 예상되는 프로젝트에 대해 개발됩니다.

Darcs와 같은 일부 분산 리비전 제어 시스템에서는 저장소와 브랜치 간의 구분이 없습니다.이러한 시스템에서는 저장소 복사본을 가져오는 것은 분기와 같습니다.

브런치란 일반적으로 나중에 변경을 부모 브런치로 Marge 또는 통합하는 기능을 의미합니다.대부분의 경우 변경은 부모 브랜치가 아닌 경우에도 트렁크로 Marge됩니다.합병을 의도하지 않은 지점(예를 들어 제3자에 의해 호환되지 않는 라이선스로 잔존했거나 다른 목적을 달성하려고 하는 경우)은 보통 포크라고 불립니다.

분기 동기

브랜치에서는 소프트웨어의 일부를 [2]병렬로 개발할 수 있습니다.대규모 프로젝트에서는 개발자, 빌드 매니저, 품질보증 담당자 등 많은 역할을 수행해야 합니다.또, 다른 operating·시스템·플랫폼상의 복수의 릴리스를 유지할 필요가 있는 경우가 있습니다.브랜치를 사용하면 버그 수정, 신기능,[3] 버전 통합 코드 베이스를 불안정하게 하지 않고 변경을 분리할 수 있습니다.이러한 변경은 테스트 후에 나중에 Marge(재동기화)될 수 있습니다.

개발부

소프트웨어의 개발 브랜치 또는 개발 트리는 개발 인 버전으로 아직 공식적으로 출시되지 않았습니다.오픈 소스 커뮤니티에서는 일반적으로 릴리스의 개념은 은유적입니다.이는 개발 브랜치에 있든 없든 누구나 원하는 버전을 체크할 수 있기 때문입니다.종종 최종적으로 다음 메이저버전이 되는 버전을 개발 브랜치라고 부릅니다.단, 한 번에 개발 중인 소프트웨어의 후속 버전이 여러 개 있는 경우가 많습니다.

일부 리비전 제어 시스템은 메인 개발 브랜치를 위한 특정 용어를 가지고 있다. 예를 들어, CVS에서는 "MAIN" 브랜치라고 부른다. Git에서는 일반적으로 "main"("마스터")라고 불리지만 소프트웨어에 의해 [4][5]특정 브랜치 이름이 요구되지는 않는다.더 일반적인 용어는 "트렁크"입니다.

그림자 또는 마법의 가지

CVSNT에서 섀도 또는 매직브런치는 작은 변경을 유지하기 쉽게 하기 위해 업스트림브런치에서 이루어진 변경을 "섀도"한다(cvc는 rPath에 의해 생성된 패키지의 리비전 제어 시스템을 포함하는 오픈소스 패키지 구축[citation needed] 시스템이다).

저장소 클론

분산 리비전 제어에서는 분기가 있는 전체 저장소를 복사하여 추가로 작업할 수 있습니다.Monotone(mtn), Mercurial(hg) 및 git은 이를 "clone"이라고 부르고, Baza는 "branch"[citation needed]라고 부른다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Berczuk, Steve; Appleton, Brad (2003). Software Configuration Management Patterns: Effective Teamwork, Practical Integration. Addison-Wesley. ISBN 0-20174117-2. Retrieved 2007-05-24.
  2. ^ Appleton, Brad; Berczuk, Stephen; Cabrera, Ralph; Orenstein, Robert (1998-02-08). "Streamed Lines: Branching Patterns for Parallel Software Development" (PDF). Hillside. Retrieved 2009-08-12.
  3. ^ Bailey, Derick (2009-07-15). "Part 1: Why". Branch-Per-Feature Source Control. Los techies. Retrieved 2009-08-12.
  4. ^ Wallen, Jack (2020-09-22). "GitHub to replace master with main starting in October: What developers need to do now". TechRepublic. Retrieved 2022-04-24.
  5. ^ Heinze, Carolyn (2020-11-24). "Why GitHub renamed its master branch to main". TheServerSide. Retrieved 2022-04-24.