git-hook๋ ํฌ์งํ ๋ฆฌ๋ฅผcloneํฉ๋๋ค.- ํด๋น ํํธ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ
cloneํฉ๋๋ค. ํํธ๋ณ ๋ ํฌ์งํ ๋ฆฌ๋ ๋ถ์๊ณผ ๊ฐ๋ฐ ๊ฐ๊ฐproject-meat-chatbot-ml๊ณผproject-meat-chatbot-be์ ๋๋ค. ์ด๋ ์ ์์ฌํญ์,git-hook๋๋ ํ ๋ฆฌ ์์ ํด๋น ํํธ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผclone๋ฐ๊ฑฐ๋, ํด๋น ํํธ ๋ ํฌ์งํ ๋ฆฌ ์์git-hook๋ ํฌ์งํ ๋ฆฌ๋ฅผclone๋ฐ์ง ์์์ผ ํ๋ค๋ ์ ์ ๋๋ค. clone๋ฐ์ ํํธ๋ณ ๋ ํฌ์งํ ๋ฆฌ์master๋ธ๋์น์README.md์.gitignoreํ์ผ์ ์์ฑํ ํ ์๊ฒฉ์pushํฉ๋๋ค. 3์ ์๋ฃํ ๊ฒฝ์ฐ base branch๊ฐmaster๋ก ์ค์ ๋ฉ๋๋ค.- ํํธ๋ณ ๋ ํฌ์งํ ๋ฆฌ์ root (e.g.
~/project-meat-chatbot-be)์์cp ~/githook/utils .๋ช ๋ น์ด๋ฅผ ์คํํดutilsํ์ผ์ ํํธ๋ณ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ณต์ฌํฉ๋๋ค. ์ด๋.gitignoreํ์ผ์utilsํ์ผ์ ์ถ๊ฐํด์ค๋๋ค. - utils ํ์ผ์
PROJECT_NAME๊ฐ์ ํ๋ก์ ํธ์ ๋ง๊ฒ ์์ ํด์ค๋๋ค. e.g. ๋ถ์:ML, ๊ฐ๋ฐBE source utils๋ช ๋ น์ด๋ฅผ ์คํํด ํ์ํ ๋ณ์์ ํจ์๋ฅผ ์ ์ธํด์ค๋๋ค.~/.bashr๋๋~/.zshrcํ์ผ์ ํด๋น ๋ช ๋ น์ด๋ฅผ ์ ์ฅํด๋ ๊ฒฝ์ฐ ๋งค๋ฒ 5๋ฅผ ์คํํ์ง ์์๋ ๋ฉ๋๋ค.- ํ๋ก์ ํธ ์ต์์ ํด๋์์
cp ../git-hook/prepare-commit-msg .git/hooks/.๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋๋ค. ๊ด๋ จ ๊ธฐ๋ฅ ๊ด๋ จ ์์ธํ ์ค๋ช ์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
- Github Projects์์ ์ ๊ท ์ด์๋ฅผ ์์ฑํฉ๋๋ค.
- [๊ถ์ฅ์ฌํญ]
utilsํ์ผ์ISSUE_ID_SEQ๋ณ์ ๊ฐ๊ณผ ์ด์ ๋ฒํธ๊ฐ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค. git checkout master๋ช ๋ น์ด๋ฅผ ํตํด master ๋ธ๋์น์ ์ด๋ํ ํgit fetch -p๋ก ์ ๊ท ๋ณ๊ฒฝ ์ฌํญ์ ์๊ฒฉ์ผ๋ก๋ถํฐ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.git merge --ff-only origin/master๋ฅผ ํตํด HEAD๋ฅผ ์ด๋ํฉ๋๋ค.create_branch {simple branch description}๋ช ๋ น์ด๋ฅผ ํตํด ์ ๊ท ๋ธ๋์น์ ์ฒดํฌ์์ํฉ๋๋ค.- ํด๋น ๋ธ๋์น์์ ์ปค๋ฐํ ๊ฒฝ์ฐ ์ปค๋ฐ ๋ฉ์์ง์
{PROJECT_NAME}-{ISSUE_ID_SEQ}ํํ๋ก prefix๊ฐ ๋ถ์ต๋๋ค. - ์์ ๋ด์ฉ์
git log๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค. git push origin {new-branch}๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ์๊ฒฉ ์ ์ฅ์์์ ์๋ก์ด Pull Request๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. Pull Request๋ฅผ ๋ง๋ ํ ์ ํด์ง ๊ท์น (e.g. 1 Approve ๋ง์กฑ ๋ฑ)์ ์ถฉ์กฑ์ํฌ ๊ฒฝ์ฐ base branch์ธ master์mergeํฉ๋๋ค.
git branch -d {branch-to-delete}๋ช ๋ น์ด๋ฅผ ํตํด ์๋ชป ์์ฑํ ๋ธ๋์น๋ฅผ ์ญ์ ํฉ๋๋ค.utilsํ์ผ์์ISSUE_ID_SEQ๋ณ์ ๊ฐ์ ์ด์ ์ ๊ฐ์ผ๋ก ์์ ๋ณต๊ท์์ผ์ค๋๋ค.create_branch {simple branch description}๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ ๋ธ๋์น๋ฅผ ๋ง๋ค์ด ์ค๋๋ค.
utilsํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์git-hook์๊ฒฉ์ ์ฌ๋ฆฌ์๋ฉด ์ ๋ฉ๋๋ค.