๋ถ์ฐ ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ธ Git 2.53์ด ์ถ์๋์์ต๋๋ค. Git์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ์๋ํ๋ฉฐ ๋ธ๋์นญ๊ณผ ๋ณํฉ ๊ธฐ๋ฐ์ ๋น์ ํ ๊ฐ๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ก์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์๊ธ ๋ณ๊ฒฝ์ ๋ํ ๋ณต์๋ ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ ์ปค๋ฐ์ ์ด์ ํ์คํ ๋ฆฌ ์ ์ฒด๋ฅผ ์๋ฌต์ ์ผ๋ก ํด์ฑํ๊ณ , ๊ฐ๋ณ ํ๊ทธ์ ์ปค๋ฐ์ ๋์งํธ ์๋ช ์ ์ฌ์ฉํฉ๋๋ค. Git์ GPLv2+ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ด์ ๋ฒ์ ๊ณผ ๋น๊ตํ์ฌ ์ ๋ฒ์ ์๋ 70๋ช ์ ๊ฐ๋ฐ์(๊ทธ์ค 21๋ช ์ Git ๊ฐ๋ฐ ๊ฒฝํ์ด ์์)๊ฐ ์ฐธ์ฌํ 466๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ฃผ์ ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- "promisor" ๋ชจ๋(ํ์์ ๋ฐ๋ผ ๋๋ฝ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ด๋ก๋ํ๋ ๋ฐฉ์)๋ก ์คํ๋๋ ๋ถ๋ถ์ ์ผ๋ก ๋ณต์ ๋ ์ธ๋ถ ์ ์ฅ์์ "๊ธฐํํ์ " ์ ์ฅ์ ํจํน ์ ๋ต("git repack --geometric")์ ์ ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. "--geometric" ์ต์ ์ ์ฌ์ฉํ์ฌ ์ฌํจํนํ ๊ฒฝ์ฐ, ".promisor" ํ์ฅ์๋ฅผ ๊ฐ์ง ํฉํ์ผ์ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ณ ํจํน๋ฉ๋๋ค. "๊ธฐํํ์ " ์ ๋ต์ ๊ฐ์ฒด๋ฅผ ์ ํ์ ์ผ๋ก ์ฌํจํนํ๊ณ ๋ชจ๋ ํฉํ์ผ์ ๋ณํฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ถํ์ํ๊ณ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์์ ์ ์ ๊ฑฐํจ์ผ๋ก์จ ๋๊ท๋ชจ ๋ชจ๋ ธ ์ ์ฅ์์ ์ ์ง ๊ด๋ฆฌ ์๊ฐ์ ๋จ์ถํฉ๋๋ค. (ํฉํ์ผ ํฌ๊ธฐ์ ๊ธฐํ๊ธ์์ ์ฆ๊ฐ๊ฐ ์ ์ง๋๋ฏ๋ก ๊ฐ ํ์ ํฉํ์ผ์ ์ด์ ํฉํ์ผ ํฌ๊ธฐ์ ์ต์ ๋ ๋ฐฐ ์ด์์ด์ด์ผ ํฉ๋๋ค.)
- ์ด์ `git fast-import` ๋ช ๋ น์ด์ `--signed-commits=strip-if-invalid` ์ต์ ์ด ์ถ๊ฐ๋์ด ์ ์ฅ์ ๊ธฐ๋ก์ ์ผ๋ถ๋ฅผ ๋ฎ์ด์ด ํ ์ ํจํ์ง ์๊ฒ ๋ ๊ฐ์ ธ์จ ๊ฐ์ฒด์ ๋์งํธ ์๋ช ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ด์ ์๋ ์ ํจํ ์๋ช ๊ณผ ์ ํจํ์ง ์์ ์๋ช ์ ๊ตฌ๋ถํ์ง ์๊ณ ๋ชจ๋ ์๋ช ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์์ต๋๋ค. `strip-if-invalid` ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ํจํ ์๋ช ์ ์ ์งํ๊ณ ๋ง๋ฃ๋ ์๋ช ์ด ์๋ ๊ฐ์ฒด๋ ๋ค์ ์๋ช ํ๋ ๋๊ตฌ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
- ์ด์ 'git repo structure' ๋ช ๋ น์ ์ถ๋ ฅ์ ์ ์ฅ์์์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด์ ํฌ๊ธฐ๋ฅผ ์ ํ๋ณ๋ก ๊ตฌ๋ถํ์ฌ ๋ณด์ฌ์ค๋๋ค. ์ด ์ ๋ณด๋ ์ธก์ ๋จ์์ ํจ๊ป ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ํ์์ผ๋ก ํ์๋๋ฉฐ, ์ค์ ํฌ๊ธฐ์ ๋์คํฌ์์ ์ฐจ์งํ๋ ํฌ๊ธฐ๊ฐ ๋ณ๋๋ก ํ์๋์ด ์ ์ฅ์์ ์ด ๋์คํฌ ํฌ๊ธฐ๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. $ git repo structure | ์ ์ฅ์ ๊ตฌ์กฐ | ๊ฐ | | โโโโโโโ | โโโ- | | * ์ฐธ์กฐ | | | * ๊ฐ์ | 1.78k | | * ๋ธ๋์น | 5 | | * ํ๊ทธ | 1.03k | | * ์๊ฒฉ ์ ์ฅ์ | 749 | | * ๊ธฐํ | 0 | | | | | * ์ ๊ทผ ๊ฐ๋ฅํ ๊ฐ์ฒด | | | * ๊ฐ์ | 421.37k | | * ์ปค๋ฐ | 88.03k | | * ํธ๋ฆฌ | 169.95k | | * ๋ธ๋กญ | 162.40k | | * ํ๊ทธ | 994 | | * ๋ถํ๋ ค์ง ํฌ๊ธฐ | 7.61 GiB | | * ์ปค๋ฐ | 60.95 MiB | | * ํธ๋ฆฌ | 2.44 GiB | | * ๋ธ๋กญ | 5.11 GiB | | * ํ๊ทธ | 731.73 KiB | | * ๋์คํฌ ํฌ๊ธฐ | 301.50 MiB | | * ์ปค๋ฐ | 33.57 MiB | | * ํธ๋ฆฌ | 77.92 MiB | | * ๋ธ๋กญ | 189.44 MiB | | * ํ๊ทธ | 578.13 KiB |
- ์ด์ 'git maintenance' ๋ช ๋ น์ด์ 'is-needed' ํ์ ๋ช ๋ น์ด๊ฐ ์ถ๊ฐ๋์ด ํ์ํ ๊ฒฝ์ฐ์๋ง ์ ์ฅ์ ์ ์ง ๊ด๋ฆฌ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- ์ด์ ์คํ์ ์ธ "git replay" ๋ช ๋ น์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋์ญ์ ๋ด์ ์ฐธ์กฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด์ ์๋ ์ ๋ฐ์ดํธ ์์ด ์ฐธ์กฐ๊ฐ ๊ฐ๋ฆฌ์ผ์ผ ํ ์์น๋ฅผ ๋ณด์ฌ์ฃผ๊ณค ํ์ต๋๋ค.
- ์ด์ "git blame" ๋ช ๋ น์ด์์ "--diff-algorithm=" ์ต์ ์ ์ฌ์ฉํ์ฌ ์ฐจ์ด์ ํ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์์ต๋๋ค. ".
- "git repo info" ๋ช ๋ น์ด์ "--all" ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ะะท Git-for-Windows ์ฌ๋ณผ๋ฆญ ๋งํฌ ์ง์ ๊ธฐ๋ฅ์ด ํ๋ซํผ์ผ๋ก ์ด์ ๋์์ต๋๋ค. Windows.
์ด์ ๋ฆด๋ฆฌ์ค์์๋ Git 2.53์์ Rust ์ปดํฌ๋ํธ ๋น๋๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋๋ค๋ ๊ฒฝ๊ณ ๊ฐ ํฌํจ๋์์ต๋๋ค. ํ์ง๋ง Git 2.53์ Rust ์ง์์ ๋ํ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ(์: GNU sed ์์ด ๋น๋ํ๋ ๊ธฐ๋ฅ)๋ง ์ถ๊ฐํ์ ๋ฟ์
๋๋ค. ๋ฐ๋ผ์ Makefile์ ์ฌ์ฉํ ๋๋ Rust ๋น๋๊ฐ ์ฌ์ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ผ๋ฉฐ(WITH_RUST ํ๋๊ทธ ํ์), Meson์ ์ฌ์ฉํ ๋๋ rustc ์ปดํ์ผ๋ฌ๊ฐ ์ค์น๋์ด ์์ผ๋ฉด ์๋์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. Git 3.0์์๋ Rust ํด๋ง์ ํ์ ๋น๋ ์ข
์์ฑ์ผ๋ก ํฌํจํ ์์ ์
๋๋ค.
์ถ์ฒ : opennet.ru
