Programming/Git (3) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Gitlab] ๋ฐฑ์ ์ ์ํ ๋ฏธ๋ฌ๋ง(gitlab mirroring) ํ์๋ง์์ gitlab์ ํธ์คํ ํ์ฌ ์์ค๋ฅผ ๊ด๋ฆฌ ์ค์ด์๋๋ฐ ํด๋น ์๋ฒ์ ์ฅ์ ๊ฐ ์์ ๊ฒฝ์ฐ, ๋น ๋ฅธ ๋ณต๊ตฌ๊ฐ ์ด๋ ต๊ธฐ์ ๋ฐฑ์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ธฐ๋ก ํ๋ค. ๊ธฐ์กด gitlab๊ณผ ๋์ผํ ํ๊ฒฝ์ gitlab์ docker๋ฅผ ํตํด ํธ์คํ ํ๋ค.๋ฐฑ์ gitlab์ ์์ค ๋ฐ commit ํํฉ์ ์๋ณธ gitlab๊ณผ ์ฑํฌ๋ฅผ ๋ง์ถ๊ธฐ ์ํด์ ์๋ณธ gitlab -> ๋ฐฑ์ gitlab์ผ๋ก mirroring ์์ ์ ์งํํ๋ค.๋ฏธ๋ฌ๋ง(mirroring) ๊ธฐ๋ฅ์ gitlab, github ๋ชจ๋ ์ง์ํ๋ค. 1. ๋ฐฑ์ gitlab์ ์์ค๋ฅผ ๋ฐ์ ํ๊ฒ ํ๋ก์ ํธ๋ฅผ ์์ฑ 2. ๋ฐฑ์ gitlab์ ์ธ์ฆ์ ์ํ access token์ ์์ฑ(์ ํ์ด๋ฉฐ token์ด ์๋ ๋ก๊ทธ์ธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด๋ ๋จ)access token์ ํด๋น ๋ฉ๋ด์์ ์์ฑํ ์ ์๋ค.ํ๋์.. [Git Hook] pre commit ์ผ๋ก ์ฅ์ ์๋ฐฉํ๊ธฐ(ft. husky, osascript) d์ต์ ์ด์ ์ค์ธ ์ฑ์์ ํน์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค ์ฅ์ ๊ฐ ๋ฌ์๋ค. ์ผ๋ถ ์๋น์ค์์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ ๋ฉ์๋๊ฐ ์์๋๋ฐ, ํ๊ฒฝ์ด ๋ถ์ฐ๋๊ณ ๋ณต์กํ๋ค๋ณด๋ ๊ฐ๋ฐ์๊ฐ ํ ์คํธ๋ฅผ ๋์น ์ผ์ด์ค์์๋ค. ์ด ๋ถ๋ถ์ ๊ฐ์ ํ๊ณ ๋น์ทํ ์ฅ์ ๋ฅผ ์๋ฐฉํ๊ธฐ ์ํด์ pre commit rule์ ์ถ๊ฐํด์ ํน์ ํค์๋๊ฐ ์์ค์ ์ถ๊ฐ๋๋ฉด ์๋ด๋ฅผ ์ํ ํ์ ์ ๋์ฐ๊ฒ ํ๋ค. ๐ค ํ๊ฒฝ๊ฐ๋ฐํ์ ํ๊ฒฝ์ Mac์ ์ฌ์ฉํ๊ณ ์๊ณ Husky plugin์ด ์ค์น๋์ด ์์๋ค. git์ ๊ฐ๋ฐ์๊ฐ commit์ ์ํํ๋ฉด, commit ์ด ์ํ๋๊ธฐ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ๋๊ฒ๋ํ๋ pre-commit ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.๋ฐฉ๋ฒ์ ํ๋ก์ ํธ์ .git/ ํ์์ "pre-commit"์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉด ๋๋ค.ํ์ง๋ง, git์์ ์ ๊ณตํ๋ pre-commit์ ๊ฒฝ์ฐ, ๊ฐ์ธ ๋ก์ปฌ.. ๊นํ ํน์ ๋ธ๋์น ํด๋ก ํ๊ธฐ / github branch clone ํ์ผ๋ก ์งํ๋์๋ ํ๋ก์ ํธ์์ ์์ ์ ๋ธ๋์น ๊ฐ์ ธ์ฌ ๋, ์ฌ์ฉํ๊ธฐ ์ข์ต๋๋ค. ๐ ํน์ branch cloneํ๊ธฐ git clone -b [๋ธ๋์น ์ด๋ฆ] --single-branch [๋ฆฌํฌ์งํ ๋ฆฌ ์ฃผ์] ๋ฆฌํฌ์งํ ๋ฆฌ ์ฃผ์๋ HTTPS, SSH ์ฃผ์ ๋ชจ๋ ๊ฐ๋ฅ ํฉ๋๋ค. ์์ git clone -b space_jin --single-branch https://github.com/space-team/toy-proj space-team ๊นํ์ toy-proj ๋ฆฌํฌ์งํ ๋ฆฌ์ space_jin ๋ธ๋์น๋ง ํด๋ก ํฉ๋๋ค. ์ด์ 1 ๋ค์