์ค๋ต๊น ๐ช - ํ์ ํธ #1: GitHub์์ ๋ฆฌ๋ทฐ์ด ์์ฒญํ๋ ๋ฒ๊ณผ ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ ๊ฐ์ด๋
by its_TIMI๐น GitHub์์ ๋ฆฌ๋ทฐ์ด ์์ฒญํ๋ ๋ฒ๊ณผ ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ ๊ฐ์ด๋ ๐
1๏ธโฃ ๋ฆฌ๋ทฐ์ด ์์ฒญ์ด ์ค์ํ ์ด์
GitHub์์ PR(Pull Request)์ ์์ฑํ ํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ๋ ๊ฒ์ ํ ํ์ ์ ํ์ ๊ณผ์ ์ด๋ค.
๋ฆฌ๋ทฐ์ด์ ํผ๋๋ฐฑ์ ํตํด ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๊ณ , ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด, ํจ๊ณผ์ ์ผ๋ก ๋ฆฌ๋ทฐ์ด๋ฅผ ์์ฒญํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น?
๋จ์ํ “๋ฆฌ๋ทฐ ์์ฒญ” ๋ฒํผ์ ๋๋ฅด๋ ๊ฒ๋ง์ผ๋ก ๋๋๋ ๊ฒ์ด ์๋๋ค.
์ด๋ป๊ฒ ์์ฒญํ๋๋์ ๋ฐ๋ผ ์ฝ๋ ๋ฆฌ๋ทฐ์ ์ง์ด ๋ฌ๋ผ์ง๋ค.
์ด ๊ธ์์๋ GitHub์์ ๋ฆฌ๋ทฐ์ด๋ฅผ ์์ฒญํ๋ ๋ฐฉ๋ฒ๊ณผ, ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ ๊ฐ์ด๋๋ฅผ ์ ๋ฆฌํ๋ค.
2๏ธโฃ GitHub์์ ๋ฆฌ๋ทฐ์ด ์์ฒญํ๋ ๋ฐฉ๋ฒ
(1) PR ์์ฑ ํ ๋ฆฌ๋ทฐ์ด ์ง์
GitHub์์ PR์ ์์ฑํ ํ, ๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
โ ๋ฆฌ๋ทฐ์ด ์ง์ ๋ฐฉ๋ฒ
1. PR์ ์์ฑํ ํ, ์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฐ์์ "Reviewers" ์น์ ์ ์ฐพ๋๋ค.
2. ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ํ์(๋๋ ํ ์ ์ฒด)์ ์ ํํ์ฌ ์ถ๊ฐํ๋ค.
3. "Request review" ๋ฒํผ์ ๋๋ฌ ๋ฆฌ๋ทฐ ์์ฒญ์ ๋ณด๋ธ๋ค.
โ ๋ฆฌ๋ทฐ์ด๊ฐ ์ง์ ๋๋ฉด, ํด๋น ํ์์๊ฒ GitHub ์๋ฆผ์ด ์ ์ก๋๋ค.
(2) PR ์์ฒญ ์ ๋ฆฌ๋ทฐ์ด ์๋ ๋ฐฐ์ (CODEOWNERS ํ์ฉ)
ํ ํ๋ก์ ํธ์์๋ ํน์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํ์์ด ์ ํด์ ธ ์์ ์๋ ์๋ค.
์ด ๊ฒฝ์ฐ, GitHub์ CODEOWNERS ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด PR ์์ฑ ์ ์๋์ผ๋ก ๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ํ ์ ์๋ค.
๐ CODEOWNERS ์ค์ ๋ฐฉ๋ฒ์ ๋ค์ ๊ธ์์ ์์ธํ ๋ค๋ฃฌ๋ค.
๐ “GitHub PR ์์ฑ ์ ๋ฆฌ๋ทฐ์ด ์๋ ์ง์ ํ๋ ๋ฒ” (ํ์ ํธ #2)
โ ์ด ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๋ฆฌ๋ทฐ์ด๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ผ ์ ์๋ค.
3๏ธโฃ ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ ๊ฐ์ด๋
(1) PR ์ ๋ชฉ์ ๋ช ํํ๊ฒ ์์ฑํ๊ธฐ
PR ์ ๋ชฉ๋ง ๋ณด๊ณ ๋ “์ด๋ค ๋ณ๊ฒฝ์ด ์์๋์ง” ์ดํดํ ์ ์๋๋ก ์์ฑํด์ผ ํ๋ค.
๐ซ “Fix bug”, “Update code” (X)
โ “Fix: ๋ก๊ทธ์ธ ์ NullPointerException ๋ฐ์ ๋ฌธ์ ํด๊ฒฐ” (O)
(2) PR ๋ณธ๋ฌธ์์ ํต์ฌ ๋ด์ฉ ์ ๋ฌํ๊ธฐ
์ข์ PR ์ค๋ช ์ ๋ค์ ๋ด์ฉ์ ํฌํจํด์ผ ํ๋ค.
โ ๋ณ๊ฒฝ ์ฌํญ ์์ฝ: ์ฝ๋์์ ๋ฌด์์ด ๋ณ๊ฒฝ๋์๋๊ฐ?
โ ์ด์ ๋ฒํธ ์ฐ๋: ์ด๋ค ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ PR์ธ๊ฐ? (ex. Closes #123)
โ ๋ฆฌ๋ทฐ์ด๊ฐ ์ง์คํด์ผ ํ ๋ถ๋ถ: ํน์ ๋ก์ง์ด๋ ๋ ผ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์ ์ ํ์ง ๋ฆฌ๋ทฐํด๋ฌ๋ผ๊ณ ์์ฒญ
โ ํ ์คํธ ๋ฐฉ๋ฒ: ๋ก์ปฌ์์ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ค๋ช (ex. npm start ํ ํน์ ํ์ด์ง ํ์ธ ๋ฑ)
๐ PR ์ค๋ช ์์
## ๐ ๋ณ๊ฒฝ ์ฌํญ ์์ฝ
- ๋ก๊ทธ์ธ ํ์ด์ง์์ ๋ฐ์ํ๋ NullPointerException ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค.
## ๐ ํด๊ฒฐํ ์ด์
- Closes #123
## ๐ ๋ฆฌ๋ทฐ ์์ฒญ ์ฌํญ
- `LoginService.java`์ ์์ธ ์ฒ๋ฆฌ ๋ก์ง์ด ์ ์ ํ์ง ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
- ์ถ๊ฐ์ ์ธ ์์ธ ์ผ์ด์ค๊ฐ ์์์ง ๋ฆฌ๋ทฐ ๋ถํ๋๋ฆฝ๋๋ค.
## ๐งช ํ
์คํธ ๋ฐฉ๋ฒ
1. ๋ก์ปฌ์์ `npm start` ์คํ ํ, ๋ก๊ทธ์ธ ํ์ด์ง ์ ์
2. `ID: test@test.com`, `PW: test123`๋ก ๋ก๊ทธ์ธ ์๋
3. ๋ก๊ทธ์ธ ์ฑ๊ณต ์ฌ๋ถ ํ์ธ
โ ๋ฆฌ๋ทฐ์ด๊ฐ ๋ณ๊ฒฝ๋ ์ฝ๋์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ํ ์ ์๋๋ก ๋๋ ๊ฒ์ด ์ค์ํ๋ค.
(3) ๋ฆฌ๋ทฐ์ด์๊ฒ ๋ช ํํ ํผ๋๋ฐฑ ์์ฒญํ๊ธฐ
๋ฆฌ๋ทฐ์ด๊ฐ ๋ชจ๋ ์ฝ๋๋ฅผ ํ๋ํ๋ ํ์ธํ๋ ๊ฒ์ ์ด๋ ต๋ค.
๋ฐ๋ผ์ “์ด ๋ถ๋ถ์ ์ค์ ์ ์ผ๋ก ๋ด์ฃผ์ธ์!” ํ๋ ์์ฒญ์ด ์๋ค๋ฉด ๋์ฑ ํจ๊ณผ์ ์ธ ๋ฆฌ๋ทฐ๊ฐ ๊ฐ๋ฅํ๋ค.
๐ ๋ฆฌ๋ทฐ ์์ฒญ ์ ๋ช ํํ ๊ฐ์ด๋ ์ ๊ณต ์์
โ “์ด ๊ธฐ๋ฅ์์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ์ ํ๊ฒ ํ๋์ง ๋ด์ฃผ์ธ์!”
โ “์ด SQL ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ด ๊ด์ฐฎ์์ง ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค!”
โ “์ด ์ฝ๋์์ ๋ ์ข์ ๋ค์ด๋ฐ์ด ์์๊น์?”
4๏ธโฃ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ ํ ์ข์ ํผ๋๋ฐฑ ๋ฐ๊ธฐ
โ ์ข์ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ์ ์ํ ํ
1๏ธโฃ ์์ ๋จ์๋ก PR์ ์์ฑ: PR ํฌ๊ธฐ๊ฐ ํด์๋ก ๋ฆฌ๋ทฐํ๊ธฐ ์ด๋ ค์
2๏ธโฃ ์๋๋ฅผ ๋ช ํํ๊ฒ ์ค๋ช : ์ฝ๋ ๋ณ๊ฒฝ์ ์ด์ ๋ฅผ ๋ช ํํ ์์ฑ
3๏ธโฃ ํ ์คํธ๋ฅผ ์ถฉ๋ถํ ๊ฑฐ์น ํ PR ์์ฒญ: ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ๊ฐ ๋๋ ์ฝ๋๋ง PR ์์ฒญ
๐ก ์ข์ PR ์์ฒญ์ ๋ฆฌ๋ทฐ์ด์ ํผ๋๋ฐฑ์ ๋น ๋ฅด๊ฒ ๋ฐ๊ณ , ํ์ ์ ์ํํ๊ฒ ํ๋ ์ค์ํ ์์์ด๋ค.
๐ ๊ฒฐ๋ก
- GitHub์์ ๋ฆฌ๋ทฐ์ด๋ฅผ ์์ฒญํ๋ ๊ธฐ๋ฅ์ ํ์ ์ ์ํํ๊ฒ ์งํํ๋ ํ์ ์์์ด๋ค.
- ๋จ์ํ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ง์ ํ๋ ๊ฒ์ด ์๋๋ผ, ํจ๊ณผ์ ์ธ PR ์์ฑ๊ณผ ๋ฆฌ๋ทฐ ์์ฒญ ๋ฐฉ์์ด ํ์ํ๋ค.
- PR ํ ํ๋ฆฟ, ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ ๊ฐ์ด๋, ๋ช ํํ ํผ๋๋ฐฑ ์์ฒญ์ ํตํด ๋ฆฌ๋ทฐ์ ํ์ง์ ๋์ผ ์ ์๋ค.
๐ฅ ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ์ ํ ์ ์ฒด์ ์ฝ๋ ํ์ง์ ๋์ด๋ ์ค์ํ ๊ณผ์ ์ด๋ค!
GitHub์ ๋ฆฌ๋ทฐ์ด ์์ฒญ ๊ธฐ๋ฅ์ ์ ํ์ฉํ์ฌ, ํ์ ์ ๋ ์ํํ๊ฒ ์งํํด ๋ณด์. ๐
'์ค๋ต ๊น๐ช > ํ์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ก๊ทธ์ ์ ๋ณด
Dev_TIMI
its_TIMI