惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
T
Tor Project blog
T
Troy Hunt's Blog
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
W
WeLiveSecurity
Cloudbric
Cloudbric
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
爱范儿
爱范儿
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
I
Intezer
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
腾讯CDC
L
LangChain Blog
L
LINUX DO - 热门话题
H
Help Net Security
S
Schneier on Security
N
Netflix TechBlog - Medium
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Spread Privacy
Spread Privacy
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
P
Privacy & Cybersecurity Law Blog
Cyberwarzone
Cyberwarzone
A
About on SuperTechFans
NISL@THU
NISL@THU
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
Recorded Future
Recorded Future
雷峰网
雷峰网
AWS News Blog
AWS News Blog
V2EX - 技术
V2EX - 技术

The Tracks of mulder21c

고정된 참조 위치 정보 선형 이미지의 최소 명도 대비 요구사항은 몇 대~ 몇? 단일 문자 단축키 (Character Key Shortcuts) 입력 방식(Input Modalities) 적응성(Adaptable) KWCAG 2.2 변경 사항 개요 댓글 시스템 remark42로 변경기 새 테마로 갈아입힘 Atomic Design + Storybook 적용 후기 json-server에 사용자 인증 구현하기 개발환경 WSL2 + zsh로 갈아타기 Pass function as props in vue 2020년 회고 colum flexbox에서 padding bottom 문제 해결 Nuxt를 통해 보는 프론트엔드 개발자가 하는 일 Nuxt Router kebab-case 처리 JS to SCSS 변환 Nuxt + Storybook 통합 하기 2020 이직 이야기 2020 이직 이야기 2020 이직 이야기 2020 이직 이야기 Windows에서 PM2 실행 오류 해결 오픈톡 정지에 대한 카카오톡 고객센터 후기 배려에 대한 단상 학습이 잘 되지 않는 이유 웹팩 4 마이그레이션 삽질기 babel 7 업데이트 후 node_modules 패키지가 변환되지 않는다면? white space는 4px이다? 정말? 2020년 시간 관리를 위해서 도입 한 툴들 Codility Lesson 5 — PassingCars 2019년 회고 Codility Lesson 4 — MissingInteger Codility Lesson 4 — MaxCounters Codility Lesson 4 — FrogRiverOne Codility Lesson — PermCheck 착각은 자유가 아닌각 세미나 진행 후기 Codility Lesson 3 — tapeEquilibrium Codility Lesson 3 — PermMissingElm Codility Lesson 3 — FrogJump 알고리즘 연습을 다시 시작했다. Codility Lesson 2 — CyclicRotation Codility Lesson 2 — OddOccurrencesInArray Codility Lesson 1 — BinaryGap 아이패드 구매 하고 3주 써 본 기록 세미나 어떻게 준비해야 할까? HTML은 웹이다 접근성 향상을 위한 이름 짓기 접근성 교육에서 자주 나오는 상위 5가지 질문
Git hook으로 브랜치 이름 규칙 강제하기
멀더끙 · 2023-07-10 · via The Tracks of mulder21c

2년 전에 작성했어야 할 글을 오늘에서야 작성하는 게으른 나 헤헷…

멋쩍은 웃음

현 회사에 합류하고 처음 담당한 프로젝트는 프론트엔드 경험이 거의(?) 없는 팀원 두 명을 리드하면서 Nuxt 기반의 프로덕트를 개발하는 프로젝트였다. (내가 입사 당시 UI 개발팀이었고 프론트엔드로 전환 중이었다.)

개발 환경을 설정하고 협업 간 여러 규칙을 설정해 가는 중에 git branch 네이밍에 대한 정책도 함께 설정했는데 역시 평소 사용하지 않던 규칙은 몸에 배어 있지 않기 때문에 놓치거나 오탈자가 발생하는 문제들이 종종 발견되었다.

도구로 해결할 수 있는 문제는 도구로 해결하자는 주의라 브랜치 네이밍 규칙을 강제할 수 있는 방법을 고민해 보기 시작했고, 몇 번의 리서칭 끝에 githook을 이용해서 강제성 부여가 가능함을 확인했다.

다만 너무 엄격한 강제성은 안 그래도 새로운 것들에 대한 부담이 있는 상태에서 계속 스트레스를 가중 시키는 일이 될 것 같아 어차피 협업 시 또는 GitLab CI에서만 정도로 문제가 될 수 있을 것으로 예상하여 push 시에만 규칙을 검증하고 실패 시 push를 막는 쪽으로 설정하기로 했다.

방법은 의외로 간단했는데 단지 shell script를 작성할 줄 알기만 하면 되고 정규식을 사용할 줄만 알면 되었다. (물론 몰라도 검색하면 나오고 요새는 chatGPT가 다 작성해주더라…)

current_branch="$(git rev-parse --abbrev-ref HEAD)"​​
valid_regex="^(feature|fixup|hotfix|refactor)\/[a-zA-Z0-9_-]+$"message="브랜치 이름이 규칙에 맞지 않아요."if [[ $current_branch= "develop" ]]then
  exit 0fi
if [[ ! $current_branch=~ $valid_regex ]]then
  printf "​$message"exit 1fi

이런식으로 말이다.

참고로 현재 브랜치를 가져오는 코드는 git branch --show-current로도 될거다.
git을 CLI로 사용한게 2014년부터였어서 rev-parse가 더 익숙해서 습관적으로 쓴 거라…

Hero image from pixabay