Git 저장소를 오래 운영하다보니
호스팅하고 있는 서버의 스토리지가 부족한 일이 종종 발생한다. (Gerrit 또는 GitHub Enterprise)
(대체 왜 자꾸 바이너리를 올리는 것인지... 우이쒸~!!)
스토리지를 팍팍 늘리면 좋겠지만... 우리는 가난하기에.. ^^
이럴 때 보통 "git gc"를 실행하곤 하는데...
이게 성능/효과가 얼마나 있는지 실험을 해보고 싶었다!!!
0. target
- 실험할 repo가 필요해서 찾던 中 최근 유명한 tensorflow를 대상으로 정했다.
$ git clone --bare https://github.com/tensorflow/tensorflow.git
- 저장공간을 줄이는 것에 대한 실험이니만큼 "--bare" 옵션으로 clone 하였다.
$ du -hs ./
455M ./
- 기본 저장 공간은 "455M"
1. [ git gc --aggressive ]
- 가장 기본적으로 사용하는 옵션으로 해봤다. (오래걸렸다)
$ time git gc --aggressive
Counting objects: 769698, done.
Compressing objects: 100% (760700/760700), done.
Writing objects: 100% (769698/769698), done.
Total 769698 (delta 636704), reused 111483 (delta 0)
Checking connectivity: 769698, done.
real 41m45.048s
user 28m54.865s
sys 0m3.769s
$ du -hs ./
243M ./
2. [ git gc --aggressive --prune=now ]
- 구글링을 했더니, 안전하게 그리고 확실하게 gc를 하는 방법이라고 되어있는 2단계 실행법이다.
. reflog는 "git rebase" 같은 작업을 하다가 발생하는 끈 떨어진(?) log들에 대한 정보이다.
$ git reflog expire --expire=now --all
$ time git gc --aggressive --prune=now
Counting objects: 769698, done.
Compressing objects: 100% (760700/760700), done.
Writing objects: 100% (769698/769698), done.
Total 769698 (delta 636704), reused 111483 (delta 0)
Checking connectivity: 769698, done.
real 41m17.315s
user 28m51.873s
sys 0m3.522s
$ du -hs ./
243M ./
뭐 결론은 2번 방법으로 실행하면 되겠다~!!!
안전한게 짱이지~!!
조금은 실망~
'SCM > Git-GitHub' 카테고리의 다른 글
GitHub CLI (GitHub Command line) (0) | 2020.09.20 |
---|---|
git clone [bare/mirror] 에 대해서 알아보기 (0) | 2020.01.01 |
Git 특정 파일에 대한 이력 삭제 (0) | 2019.11.09 |
Login with GitHub OAuth using PHP (0) | 2019.08.04 |
repo (git-repo) : 복수 저장소 다루기 (#2) in Windows (0) | 2019.06.18 |