[Git] submodule
git submodule์ git ์ฐจ์์์ ์ง์ํ๋ ์์ฒด์ ์ธ ๋ชจ๋์์คํ
์ด๋ค.
ํ๋์ git ํ๋ก์ ํธ์, ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ํฌํจ์ํค๊ณ clone๋ฐ์์์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
๊ทผ๋ฐ ์ด๊ฒ ์ฐ๋ค๋ณด๋ฉด ํ์คํ ๋ฆฌ ๊ด๋ฆฌ๋ ์ ๊ฒฝ์ ์จ์ผํ๊ณ .. ์ฌ๋ฌ๋ชจ๋ก ํผ๊ณคํ๊ฒ ๋ง์์ ํธ๋ถํธ๊ฐ ๊ฐ๋ฆฐ๋ค.
๊ทธ๋๋ ํ์ ๋ ์ํฉ์์๋ ๋์ฒดํ์ด ์์ด์ ์ข ์ข ์จ์ผํ ์ผ์ด ์๋ค.
์๋ธ๋ชจ๋ ๋ฑ๋ก
ํ๋ก์ ํธ์ ์๋ก ๋ชจ๋์ ๋ฑ๋กํ๋ ค๋ฉด, submodule add ๋ช ๋ น์ ์ฌ์ฉํ๋ค.
git submodule add ๋งํฌ
๋ง์ฝ llvm ํ๋ก์ ํธ๋ฅผ ๋ชจ๋๋ก์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด, ์๋์ ๊ฐ์ด ๊ทธ github ๋งํฌ๋ฅผ ๋ฐ์์ฃผ๋ฉด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ clone๋ ๋ฐ์์ง๊ณ
์์ฒด ๋ชจ๋ ๊ด๋ฆฌ ํ์ผ์ธ .gitmodules๋ ์ถ๊ฐ๋์์ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์ถ๊ฐ๋ ๋ชจ๋์ ๋ ํฌ์งํ ๋ฆฌ ์์ฒด์ ์ฝ๋๊ฐ ๋ค ์ถ๊ฐ๋๋๊ฒ ์๋๋ผ
๋งํฌ๊ฐ ๋๋ค.
submodule ์ฌ์ค์น
git ์ฝ๋๋ฅผ ๋ค์ ์ฒ์๋ถํฐ clone๋ฐ์๋ค๋ฉด, ์๋ธ๋ชจ๋๋ค์ ๊ทธ๋ฅ ํ ๋น์ด์์ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ด๊ธฐํ๋ฅผ ํด์ค๋๋ง๋ค .gitmodules๋ฅผ ๊ธฐ๋ฐ์ผ๋ก submodule์ ๋ค์ ๋ด๋ ค๋ฐ์์ผ ํ๋๋ฐ, ๊ทธ๋ด๋๋ ๋ค์๊ณผ ๊ฐ์ด init ๋ช ๋ น์ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.

submodule ๋ณ๊ฒฝ์ฌํญ ๋ฐ์
์๋ณธ ๋ชจ๋ ๋ ํฌ์งํ ๋ฆฌ์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์ํ๊ณ , ๊ทธ๊ฑธ ์ง๊ธ ๋ค์ ๋ฐ์ํด์ผ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด update ๋ช ๋ น์ ์ฌ์ฉํด์ค๋ค.
๊ทธ๋ผ ์๋์ผ๋ก ์ต์ ์ํ๋ก pull์ ๋ฐ์์ค ๊ฒ์ด๋ค.
submodule์ ์ฌ๊ท์ ์ฐธ์กฐ
์๋ธ๋ชจ๋์ ๋ ์๋ธ๋ชจ๋์ด ์์ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ ๊น?
๋คํํ ์ ์ฉ ๋ช
๋ น์ ์ ๊ณตํ๋ค.
init์ ์ฌ๊ท์ ์ผ๋ก ์ํํ๋ ค๋ฉด ์ด๋ ๊ฒ ๋ ๋ฆฌ๋ฉด ๋๊ณ
git submodule update --init --recursive
update๋ง ํ๋๊ฑฐ๋ฉด ์ด๋ ๊ฒ ํ๋ฉด ๋๋ค.
git submodule update --recursive์ฐธ์กฐ
https://stackoverflow.com/questions/1030169/pull-latest-changes-for-all-git-submodules