๋ ๋ฌ ๊ฐ์ ๊ฐ๋ฐ ๋์ ๋ถ์ฐ ์์ค ์ ์ด ์์คํ Git 2.39๊ฐ ์ถ์๋์์ต๋๋ค. Git์ ๊ฐ์ฅ ์ธ๊ธฐ ์๊ณ ์์ ์ ์ธ ๊ณ ์ฑ๋ฅ ๋ฒ์ ์ ์ด ์์คํ ์ค ํ๋๋ก ๋ถ๊ธฐ ๋ฐ ๋ณํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ์ฐํ ๋น์ ํ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ก์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์๊ธ ๋ณ๊ฒฝ์ ๋ํ ์ ํญ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ ์ปค๋ฐ์์ ์ ์ฒด ์ด์ ๊ธฐ๋ก์ ์์์ ํด์ฑ์ด ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋ฐ์์ ๋์งํธ ์๋ช ์ผ๋ก ๊ฐ๋ณ ํ๊ทธ์ ์ปค๋ฐ์ ์ธ์ฆํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ด์ ๋ฒ์ ์ ๋นํด ์ ๋ฒ์ ์๋ 483๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ฐธ์ฌํ์ฌ 86๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์์ผ๋ฉฐ, ์ด ์ค 31๋ช ์ด ์ฒ์์ผ๋ก ๊ฐ๋ฐ์ ์ฐธ์ฌํ์ต๋๋ค. ์ฃผ์ ํ์ :
- ๋ณ๊ฒฝ ๋ด์ญ์ ํต๊ณ์ ํจ๊ป ์์ฝ์ ํ์ํ๋๋ก ์ค๊ณ๋ "git shortlog" ๋ช
๋ น์ ์์ฑ์ ๋๋ ์ปค๋ฏธํฐ์ ๊ตญํ๋์ง ์๊ณ ํ๋๋ณ๋ก ์ปค๋ฐ์ ์์๋ก ๊ทธ๋ฃนํํ๊ธฐ ์ํ "-group" ์ต์
์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, "๊ณต๋ ์์ฑ์" ํ๋์ ์ธ๊ธ๋ ๋์ฐ๋ฏธ๋ฅผ ๊ณ ๋ คํ์ฌ ๋ณ๊ฒฝ ํ์์ ๋ํ ์ ๋ณด์ ํจ๊ป ๊ฐ๋ฐ์ ๋ชฉ๋ก์ ํ์ํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค: git shortlog -ns --group=author - -๊ทธ๋ฃน=์๊ณ ํธ:๊ณต๋ ์์ฑ์
Shortlog ์ถ๋ ฅ์ ํ์ ์ง์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ง๊ณํ ์ ์์ผ๋ฉฐ "--group" ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๋ณด๊ณ ์ ์์ฑ์ ํฌ๊ฒ ๋จ์ํํ๊ณ ์ถ๊ฐ ์ ๋ ฌ ๋ช ๋ น์ด ํ์ํ์ง ์๊ฒ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๋ฆด๋ฆฌ์ค์ ๋ํด ๋งค๋ฌ ์๋ฝ๋ ์ปค๋ฐ ์์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ๋ณด๊ณ ์๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์์ ์ง์ ํ ์ ์์ต๋๋ค. git shortlog v2.38.0.. โdate='format:%Y-%m' โgroup=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 ์ด์ ์๋ ์ ์ฌํ ์์ ์ ์ํํ๋ ค๋ฉด sort ๋ฐ uniq ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค: git log v2.38.0 .. โ๋ ์ง='ํ์:%Y -%m' โํ์='%cd' | ์ ๋ ฌ | ์ ๋ํฌ -c
- ์ ์ฅ์์์ ์ฐธ์กฐ๋์ง ์๊ณ (๋ธ๋์น๋ ํ๊ทธ๋ก ์ฐธ์กฐ๋์ง ์๋) ์ ๊ทผํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ํจํนํ๊ธฐ ์ํด ์ค๊ณ๋ "cruft packs" ๋ฉ์ปค๋์ฆ์ ๊ธฐ๋ฅ์ด ํ์ฅ๋์์ต๋๋ค. ์ฐ๊ฒฐํ ์ ์๋ ๊ฐ์ฒด๋ ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ์ญ์ ๋์ง๋ง ๊ฒฝ์ ์กฐ๊ฑด์ ํผํ๊ธฐ ์ํด ์ญ์ ๋๊ธฐ ์ ์ ํน์ ์๊ฐ ๋์ ์ ์ฅ์์ ๋จ์ ์์ต๋๋ค. "cruft packs" ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ฉด ์ฐ๊ฒฐํ ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ๋์ ํฉ ํ์ผ์ ์ ์ฅํ ์ ์๊ณ , ".mtimes" ํ์ฅ์๋ฅผ ๊ฐ์ง ๋ณ๋์ ํ์ผ์ ์ ์ฅ๋ ๋ณ๋์ ํ
์ด๋ธ์ ๊ฐ ๊ฐ์ฒด์ ์์ ์๊ฐ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ด ์์ ์๊ฐ๊ณผ ์ค๋ณต๋์ง ์์ต๋๋ค.
์ฐ๊ฒฐํ ์ ์๋ ๊ฐ์ฒด๊ฐ ์ค์ ๋ก ์ญ์ ๋๊ธฐ ์ ์ ์ ์ฅ์์ ๋จ์ ์๋ ์๊ฐ์ "โprune=" ์ต์ ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. " ๊ทธ๋ฌ๋ ์ญ์ ํ๊ธฐ ์ ์ ์ง์ฐํ๋ ๊ฒ์ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ธํ ์ ์ฅ์ ์์์ ๋ฐฉ์งํ๋ ์๋นํ ํจ๊ณผ์ ์ด๊ณ ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ด์ง๋ง 100% ์ ๋ขฐํ ์๋ ์์ต๋๋ค. ์์๋ ์ ์ฅ์๋ฅผ ๋ ์ฝ๊ฒ ๋ณต์ํ ์ ์๋๋ก ์ ๋ฆด๋ฆฌ์ค์์๋ "git repack" ๋ช ๋ น์ "--expire-to" ์ต์ ์ ์ถ๊ฐํ์ฌ ๋๋ฝ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ญ์ ๋ ๋ชจ๋ ๊ฐ์ฒด์ ๋ณต์ฌ๋ณธ. ์๋ฅผ ๋ค์ด, ์ง๋ 5๋ถ ๋์ ๋ณ๊ฒฝ๋์ง ์์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฐ์ฒด๋ฅผ backup.git ํ์ผ์ ์ ์ฅํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค: git repack --cruft --cruft-expiration=5. Minutes.ago -d --expire -to=../backup.git
- ๋ถ๋ถ ๋ณต์ (์คํ์ค ์ฒดํฌ์์)๋ฅผ ์ฌ์ฉํ๊ณ ๋ถ๋ถ ์ธ๋ฑ์ค(์คํ์ค ์ธ๋ฑ์ค)๊ฐ ์๋ ์์ญ์ ๊ฒ์ํ ๋ "git grep -cached" ์์ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋์์ต๋๋ค(์ต๋ 70%). ์ด์ ์๋ "-cached" ์ต์ ์ ์ง์ ํ๋ฉด ๋จผ์ ์ผ๋ฐ ์ธ๋ฑ์ค์์ ๊ฒ์์ด ์ํ๋ ๋ค์ ๋ถ๋ถ ์ธ๋ฑ์ค์์ ๊ฒ์์ด ์ํ๋์ด ๋๊ท๋ชจ ์ ์ฅ์์์ ๊ฒ์ํ ๋ ๋์ ๋๋ ์ง์ฐ์ด ๋ฐ์ํ์ต๋๋ค.
- "git push" ์์ ์ค์ ์ ๊ฐ์ฒด๊ฐ ์ ์ฅ์์ ๋ฐฐ์น๋๊ธฐ ์ ์๋ฒ์ ์ผ๊ด์ฑ ํ์ธ์ด ๊ฐ์ํ๋์์ต๋๋ค. 7๋ง ๊ฐ์ ๋งํฌ๊ฐ ์๋ ํ ์คํธ ์ ์ฅ์(๊ทธ ์ค 3%๋ง์ด ํธ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋จ)์์ ํ์ธํ ๋ ์ ์ธ๋ ๋งํฌ๋ง ๊ณ์ฐํ๋๋ก ์ ํํจ์ผ๋ก์จ ์ต์ ํ๋ฅผ ํตํด ํ์ธ ์๊ฐ์ 4.5๋ฐฐ ์ค์ผ ์ ์์์ต๋๋ค.
- ์ฝ๋์์ ์ ์ฌ์ ์ธ ์ ์ ์ค๋ฒํ๋ก๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด "git apply" ๋ช ๋ น์ ์ฒ๋ฆฌํ ์ ์๋ ํจ์น์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ํจ์น ํฌ๊ธฐ๊ฐ 1GB๋ฅผ ์ด๊ณผํ๋ฉด ์ด์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
- ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด HTTP/2์ ํจ๊ป GIT_TRACE_CURL=3 ๋๋ GIT_CURL_VERBOSE=1 ์ต์ ๊ณผ ํจ๊ป h1h2 ๋ชจ๋์ ์ฌ์ฉํ ๋ ์ค์ ๋ ํค๋์์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์ ๋ฆฌํ๋๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
- ๋ค๋ฅธ ๋ธ๋์น์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ธ ๋ธ๋์น์์ ์ฒดํฌ์์์ ์ํํ ๋ "git Symbolic-ref HEAD" ๋ช ๋ น์ ์ด์ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์ด๋ฆ์ด ์๋ ๋์ ๋ธ๋์น์ ์ด๋ฆ์ ํ์ํฉ๋๋ค.
- ์ด์ ๋ถ๊ธฐ์ ์ค๋ช ์ ํธ์งํ๊ธฐ ์ํด "--edit-description" ์ต์ ("git Branch โedit-description @{-1}")์ @{-1} ์ธ์์ ๋ํ ์ง์์ ์ถ๊ฐํ์ต๋๋ค.
- ํ์ค ์ ๋ ฅ์ ํตํด ์ต์ ๋ชฉ๋ก์ ์ ๋ฌํ๋ "git merge-tree --stdin" ๋ช ๋ น์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋คํธ์ํฌ ํ์ผ ์์คํ ์์๋ ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ํฐ๋งํ๋ fsmonitor ํธ๋ค๋ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
์ถ์ฒ : opennet.ru