/ DEVOPS

Git Convention

DevOps 관련 포스팅

https://codingsight.com/git-branching-naming-convention-best-practices/의 내용을 번역한 것입니다.

Git Branching Naming Convention: Best Practices

Git branch는 Regular와 Temporary branch로 나눔

Regular Git Branches

  • 영구적인 repository에 씀
  • 간단하고 쉬운 naming convention
  • dev(development)는 main 개발 branch임
    dev branch의 아이디어는 해당 branch에서만 변경를 일으키고, master branch의 직접적인 변경은 제한함
    dev branch의 변경은 review(검토)를 받고, 테스트 후 master branch와 merge됨
  • master는 Git repository의 기본 branch임
    항상 안정적이며, 어떠한 직접적인 check-in도 허용하지 않음
    code review이후에만 merge가 가능함
    팀 구성원 모두가 master를 안정적이며, 최신의 상태로 유지하는 것에 책임이 있음
  • QA 또는 test branch는 QA testing과 자동 testing을 위한 모든 코드를 포함하고 있음
    어떠한 변경이 production 환경으로 가기 전, 안정적인 codebase를 위해 반드시 QA testing을 거쳐야 함

Temporary Git Branches

  • 이름에서 알 수 있는 것처럼, 필요할 때마다 만들고 없앨 수 있음
  • Bug Fix, Hot Fix, Feature Branches, Experimental Branches, WIP branches 용도로 사용할 수 있음

Git Branching Naming Convention

수많은 naming convention이 존재함
이 중 가장 좋은 일곱 개의 naming convention에 대해 알아보자

1. Start branch name with a Group word

group word로 branch 이름을 시작하라.

  • 최고의 방법 중 하나
  • group word는 자신의 작업 흐름과 일치하는 어느것이든 상관 없음
    e.g.)
    Bug - 곧 해결되어야하는 버그,
    WIP - 작업이 진행 중에 있으며, 조만간 끝나지 않을 것이라 예상되지 않을 때
    (WIP: work in process/progress)
  • branch 이름을 봤을 때, 해당 Git branch가 무엇에 대한 것이며, 어떤 목적을 가지고 있는지 알 수 있어야 함
    e.g.) bug-logo-alignment-issue: logo alignment issue를 고치는 중임
    wip-ioc-container-added: IoC container를 추가하는 작업을 진행 중임

2. Use Unique ID in branch names

branch이름에 고유한 ID를 사용하라.

  • branch 이름에 issue tracker ID를 사용할 수 있음
  • 버그를 고칠 때, 선호하는 방법임

e.g.)
wip-8712-add-testing-module라는 이름은
해당 branch가 testing module을 추가하는 업무에 적용되며,
issue의 tracking Id는 8712이고,
해당 업무가 진행 중에 있다는 것을 보여줌

  • branch 이름에 외부 tracking ID를 사용하는 것의 장점은 외부 시스템에서 진행 상황을 추적할 수 있다는 것임

3. Use Hyphen or Slash as Separators

구분자로 하이픈이나 슬래시를 사용하라.

  • 많은 개발자들은 구분자로 슬래시와 하이픈을 사용함
  • 어떤 것을 사용할 지는 자신 또는 자신의 팀의 선호에 달려있음

  • 개인적으로, 하이픈은 이름을 읽기 편하게 만들어 주어서 branch 이름의 구분자로 적절하다고 생각함
  • 슬래시, 하이픈, 언더스코어 모두 사용할 수 있음
  • 중요한 것은 일관되어야 한다는 것임

branch 이름에 구분자를 넣으면 두 가지 장점이 있음

  1. 가독성을 높일 수 있으며, 혼동을 줄여줄 수 있음
  2. 특히, 많은 branch를 다루고 있다면 관리하기 좋음

구분자가 없는 featureupgradejqueryversionloginmodule보다는
구분자가 있는 feature_upgrade_jquery_version_login_module이 읽기 쉬움

4. Git Branch with Author Name

작성자 이름을 포함하는 Git branch

  • 많은 회사들은 <author>_<branch-type>_<branch-name> 형식에 따라 작성자의 이름이 branch이름에 있는 것을 선호함

e.g.) rajeev.bera_feature_new-experimental-changes

  • 이 방법은 다른 개발자들의 작업과 추가적인 시스템의 진행 상황을 추적하기 좋음

5. Avoid using numbers only

숫자만 사용하는 것을 피하라.

  • 몇몇 개발자들은 branch 이름에 issue Id만 기입하는데, 이는 일의 진행에 도움이 되지 않음
  • 예를 들어, 9912라는 branch 이름은 무엇을 설명하는지 알 수가 없음
  • 특히 이 방식은 다른 git branch와 merge하는 중에 혼란과 실수의 가능성만 증가시킴

6. Avoid using all naming convention simultaneously

모든 naming convention을 동시에 사용하는 것을 피하라.

  • 모든 naming convention을 혼용해 사용하는 것은 좋은 방식이 아님
  • 혼란만 가중시키고, 전반적인 처리 과정을 더 복잡하게 만듦

  • 팀은 업무 중에 사용할 naming convention을 한번 정한 후, 팀원들이 받아들이도록 해야 함
  • 일관성이 가장 중요함

7. Avoid long descriptive names for long-lived branches

오래가는 branch에 길게 설명하는 이름은 피하라.

  • branch 이름의 필수적인 특징은 정확해야 하며, 유용한 정보를 주어야 한다는 것임

e.g.)
wip_login_module_which_will_used_in_the_public_website, wip_login_module_which_will_used_in_the_internal_website
와 같은 branch 이름의 경우, 길고 상세함 필수적이지 않음 대신에,
wip_feature_login_module과 같은 branch 이름은 짧지만 branch의 목적을 잘 설명함

Conclusion

  • Git의 Branching 모델은 강력하지만, branch를 적절하고 효과적으로 다뤄야만 함
  • 필수적인 요건 중 하나는 모든 팀원이 같은 convention을 따라야 하는 것임
  • pre-commit hook과 같은 Git hook을 사용하는 것도 쉬운 방법 중 하나임