์ƒˆ๋กœ์šด Git ์ €์žฅ์†Œ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

Git ์ €์žฅ์†Œ์— ์—ฐ๊ฒฐ๋œ LookML ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ํ”„๋กœ์ ํŠธ์˜ LookML์„ ์ƒˆ ์ €์žฅ์†Œ๋กœ ์ด๋™ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ€๋Šฅํ•œ ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ชจ๋‘ ๋‹ค์Œ ์„น์…˜์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • Git ์—ฐ๊ฒฐ ์žฌ์„ค์ •: ์ด ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์€ Looker์˜ ๋ชจ๋“  ๊ฐœ์ธ ๋ฐ ๊ณต์œ  ๋ธŒ๋žœ์น˜๋ฅผ ๋ณด์กดํ•˜๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • Git ์ €์žฅ์†Œ ํด๋ก : ์ด ๊ณ ๊ธ‰ ์†”๋ฃจ์…˜์€ Git ์ œ๊ณต์—…์ฒด์˜ UI๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ๋œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜์˜ ์ „์ฒด ๊ธฐ๋ก์„ ์ฆ‰์‹œ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜: Git ์—ฐ๊ฒฐ ์žฌ์„ค์ •

Git ์—ฐ๊ฒฐ์„ ์žฌ์„ค์ •ํ•˜๊ณ  ์ƒˆ Git ์ €์žฅ์†Œ URL์„ ์ž…๋ ฅํ•˜๋ฉด LookML์ด ํ•ด๋‹น ์ €์žฅ์†Œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ๋ฐ ๊ณต์œ  ๋ธŒ๋žœ์น˜์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ Looker์—์„œ ์œ ์ง€๊ด€๋ฆฌ๋˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” Git ์ œ๊ณต์—…์ฒด์˜ UI์— ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์™€ ๊ธฐ๋ก๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜ ๋ฐ ๊ธฐ๋ก์€ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์˜ ๋‹ค์Œ ์ปค๋ฐ‹ ์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์ €์žฅ์†Œ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ์ ํŠธ ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ”„๋กœ์ ํŠธ ์„ค์ • ํŽ˜์ด์ง€์˜ ๊ตฌ์„ฑ ํƒญ์—์„œ Git ์—ฐ๊ฒฐ ์žฌ์„ค์ • ๋ฒ„ํŠผ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. Git ๊ตฌ์„ฑ ํŽ˜์ด์ง€์—์„œ ์ƒˆ Git URL(๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ €์žฅ์†Œ์˜ Git URL)์„ ์ž…๋ ฅํ•˜๊ณ  ๊ณ„์†์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. SSH๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ ํ‚ค ์žฌ์„ค์ •์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋™์ผํ•œ SSH ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๋‘ ์ €์žฅ์†Œ๊ฐ€ ๋™์ผํ•œ ์„œ๋น„์Šค(์ด ๊ฒฝ์šฐ GitHub)์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๊ฒฝ์šฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. SSH ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ Git ์ €์žฅ์†Œ์— ์ƒˆ ๋ฐฐํฌ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  Git ์ €์žฅ์†Œ ๋ฐฐํฌ ํ‚ค ์„ค์ •์—์„œ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Git ์ €์žฅ์†Œ์˜ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Git ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์•ˆ๋‚ด๋Š” Git ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ํ…Œ์ŠคํŠธ ๋ฌธ์„œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒˆ ์ €์žฅ์†Œ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ํ”„๋กœ์ ํŠธ๋ฅผ ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ LookML์ด ์ƒˆ ์ €์žฅ์†Œ์˜ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š” ํ•œ LookML ์ฝ”๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ฑฐ๋‚˜ Git ์ž‘์—… ํŒจ๋„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›๊ฒฉ Git ๋ช…๋ น์–ด๋กœ ํ‘ธ์‹œํ•œ ํ›„ ์ƒˆ ์ €์žฅ์†Œ์˜ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜์—๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ณ ๊ธ‰ ์†”๋ฃจ์…˜: ์ €์žฅ์†Œ ํด๋ก 

์•ž์—์„œ ์„ค๋ช…ํ•œ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์—์„œ๋Š” ๋ชจ๋“  ๋ธŒ๋žœ์น˜์˜ ๊ธฐ๋ก์„ ๋ณด์กดํ•˜์ง€๋งŒ ์ฒ˜์Œ์—๋Š” ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์™€ ๊ธฐ๋ก๋งŒ GitHub UI์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Looker์˜ ๊ฐœ์ธ ๋˜๋Š” ๊ณต์œ  ๋ธŒ๋žœ์น˜์—์„œ ์ปค๋ฐ‹์ด ์ˆ˜ํ–‰๋˜๋ฉด ํ•ด๋‹น ๋ธŒ๋žœ์น˜์™€ ๊ธฐ๋ก์ด GitHub UI์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. GitHub UI๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ๋ฐ ๊ธฐ๋ก์„ ์ฆ‰์‹œ ๋ณด๋ ค๋ฉด ๊ณ ๊ธ‰ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € GitHub(๋˜๋Š” ๊ธฐํƒ€ Git ์ œ๊ณต์—…์ฒด)์—์„œ ์›๋ณธ ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ URL์€ ํ”„๋กœ์ ํŠธ ์„ค์ • ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ํŽ˜์ด์ง€ ํ•˜๋‹จ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” git@github.com:looker/PROJECT_NAME.git์ด ์›๋ž˜ ์ €์žฅ์†Œ์ด๊ณ  git@github.com:your_organization/PROJECT_NAME.git์ด ์ƒˆ ์ €์žฅ์†Œ๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ์›๋ž˜ ์ €์žฅ์†Œ๋ฅผ ์ปดํ“จํ„ฐ์— ํด๋ก ํ•˜๊ณ  ๋ณด์กดํ•  ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐํ•ฉ๋‹ˆ๋‹ค.

    git clone git@github.com:looker/PROJECT_NAME.git
    cd PROJECT_NAME
    git checkout master
    git pull
    
  2. ์ €์žฅ์†Œ์˜ ์›๊ฒฉ URL์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    git remote -v
    

    ๊ทธ๋Ÿฌ๋ฉด ์ €์žฅ์†Œ๊ฐ€ ํ˜„์žฌ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    origin git@github.com:looker/PROJECT_NAME.git (fetch)
    origin git@github.com:looker/PROJECT_NAME.git (push)
    
  3. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์›๊ฒฉ ์›๋ณธ์„ ์ƒˆ ์ €์žฅ์†Œ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    git remote set-url origin git@github.com:your_organization/PROJECT_NAME.git
    git push origin master
    
  4. ์ด์ œ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜์˜ ๊ธฐ๋ก๊ณผ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๊ฐ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜์— git checkout dev_branch_name ๋ฐ git push origin๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    #!/bin/bash
    for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
    done
    

    ๊ทธ๋Ÿฐ ๋‹ค์Œ git push --all๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋žœ์น˜๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

  5. Looker์˜ Git ์—ฐ๊ฒฐ์„ ์ด ์ƒˆ๋กœ์šด URL๋กœ ์žฌ์„ค์ •ํ•˜๊ณ  ์ด ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ์— ๋ฐฐํฌ ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์ด ํŽ˜์ด์ง€ ์•ž๋ถ€๋ถ„์˜ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜ ์„น์…˜ ๋‹จ๊ณ„ ์ฐธ์กฐ).