project/code_flow.html · project/code_flow.rst 공식 원문 ↗

Zephyr 3.7.0 · Project

Code Flow and Branches

복잡한 기능을 임시 collaboration branch에서 검토하고 mainline으로 안전하게 통합하는 정책을 설명합니다.

Official pathproject/code_flow.html
Source fileproject/code_flow.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

Branch 종류, TSC 승인·exit criteria·timeline, upstream sync와 review 책임을 한 흐름으로 정리합니다.

main

latest development

collab-*

temporary feature work

vx.y

maintenance release

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 9B8F5A7B48411D2C4F4157BF987A8900F83AD1F652D6D3E0876AF9EEF16E7522
.. _code-flow-and-branches:

Code Flow and Branches
######################

Introduction
************

The zephyr Git repository has three types of branches:

main
  Which contains the latest state of development

collab-\*
  Collaboration branches that are used for shared development
  of new features to be introduced into the main branch when ready. Creating a new
  collaboration branch requires a justification and TSC approval. Collaboration branches
  shall be based off the main branch and any changes developed in the collab
  branch shall target the main development branch. For released versions of
  Zephyr, the introduction of fixes and new features, if approved by the TSC,
  shall be done using backport pull requests.

vx.y-branch
  Branches which track maintenance releases based on a major
  release

Development in collaboration branches before features go to mainline allows teams to
work independently on a subsystem or a feature, improves efficiency and
turnaround time, and encourages collaboration and streamlines communication
between developers.

Changes submitted to a collaboration branch can evolve and improve
incrementally in a branch, before they are submitted to the mainline tree for
final integration.

By dedicating an isolated branch to complex features, it's
possible to initiate in-depth discussions around new additions before
integrating them into the official project.

Collaboration branches are ephemeral and shall be removed once the collaboration work
has been completed. When a branch is requested, the proposal should include the
following:

* Define exit criteria for merging the collaboration branch changes back into the main branch.
* Define a timeline for the expected life cycle of the branch. It is
  recommended to select a Zephyr release to set the timeline. Extensions to
  this timeline requires TSC approval.

Roles and Responsibilities
**************************

Collaboration branch owners have the following responsibilities:

- Use the infrastructure and tools provided by the project (GitHub, Git)
- All changes to collaboration branches shall come in form of github pull requests.
- Force pushing a collaboration branch is only allowed when rebasing against the main branch.
- Review changes coming from team members and request review from branch owners
  when submitting changes.
- Keep the branch in sync with upstream and update on a regular basis.
- Push changes frequently to upstream using the following methods:

  - GitHub pull requests: for example, when reviews have not been done in the local
    branch (one-man branch).
  - Merge requests: When a set of changes has been done in a local branch and
    has been reviewed and tested in a collaboration branch.

Part 3

한국어 전문 번역

소개

Zephyr Git repository에는 다음 세 종류의 branch가 있습니다.

main
최신 development 상태가 들어 있습니다.
collab-*
준비되면 main branch에 도입할 새 feature를 공동 개발하는 collaboration branch입니다. 새 collaboration branch를 만들려면 justification과 TSC 승인이 필요합니다. Main branch를 기반으로 만들어야 하고 여기서 개발한 change는 main development branch를 target으로 해야 합니다. 이미 release된 Zephyr version에 fix나 new feature를 넣는 작업은 TSC가 승인한 경우 backport pull request로 수행합니다.
vx.y-branch
Major release를 기반으로 maintenance release를 추적하는 branch입니다.

Feature가 mainline에 들어가기 전에 collaboration branch에서 개발하면 team이 subsystem 또는 feature를 독립적으로 작업할 수 있고 efficiency와 turnaround time이 개선됩니다. Developer 사이 collaboration을 장려하고 communication도 단순화합니다.

Collaboration branch에 제출한 change는 mainline tree의 final integration을 요청하기 전까지 branch 안에서 점진적으로 발전하고 개선될 수 있습니다. Complex feature 전용 isolated branch를 두면 official project에 통합하기 전에 새 addition에 대해 깊이 논의할 수 있습니다.

Collaboration branch는 임시이며 공동 작업이 끝나면 제거해야 합니다. Branch 요청 proposal에는 다음 내용이 필요합니다.

  • Collaboration branch의 change를 main branch로 merge하기 위한 exit criteria를 정의합니다.
  • Branch expected life cycle의 timeline을 정의합니다. Zephyr release 하나를 기준으로 정하는 것을 권장하며 timeline 연장은 TSC 승인이 필요합니다.

역할과 책임

Collaboration branch owner는 다음을 책임집니다.

  • Project가 제공하는 GitHub·Git infrastructure와 tool을 사용합니다.
  • Collaboration branch의 모든 change는 GitHub pull request 형태로 받아야 합니다.
  • Force push는 main branch를 기준으로 rebase할 때만 허용합니다.
  • Team member의 change를 review하고, change를 제출할 때 branch owner에게 review를 요청합니다.
  • Branch를 upstream과 sync하고 정기적으로 update합니다.
  • 다음 방법으로 change를 upstream에 자주 push합니다.
    • GitHub pull request: 예를 들어 local branch에서 review하지 않은 one-person branch change에 사용합니다.
    • Merge request: Local branch에서 만든 change set을 collaboration branch에서 review·test한 뒤 사용합니다.

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.