티스토리 뷰

Programming tips/tools

git lfs

bramach 2020. 3. 31. 15:06

https://www.atlassian.com/git/tutorials/git-lfs

 

Git LFS - large file storage | Atlassian Git Tutorial

Git LFS is a Git extension that improves handling of large files by lazily downloading the needed versions during checkout, rather than during clone/fetch.

www.atlassian.com

큰 파일을 반복적으로 수정하고 커밋하면 레포지토리 사이즈가 엄청 커지고 느려짐.

.git에 모든 커밋들의 파일이 압축 저장되어 있기 때문.

 

# git lfs 테스트 환경

* 깃 클라이언트

docker run -it gitclient_test --name gitclient_test bash

 

* 깃랩

 docker run   --hostname gitlab.example.com   --publish 8043:443 --publish 8077:80 --publish 8078:22   --name gitlab.example.com    --restart always   --volume /srv/gitlab/config:/etc/gitlab:Z   --volume /srv/gitlab/logs:/var/log/gitlab:Z   --volume /srv/gitlab/data:/var/opt/gitlab:Z   gitlab/gitlab-ce:latest

-> config/gitlab.rb에서 git-lfs 설정하고 재실행

-> 호스트네임으로 git 에서 clone 주소가 제공되고, name으로 docker dns에 등록되어 해당 이름으로 통신 가능해짐 (디폴트 네트워크에서는 안됨)

 

* 네트워크 연결

   docker network create gitNet
   docker network connect gitNet gitlab.example.com
   docker network connect gitNet gitclient_test

 

 

 

* 소스 업로드 시

git lfs를 설치 한 후

git 레포지토리 안에서 git lfs install

git lfs track *.test

->  .gitattribute 파일에서 필터로 lfs 가 추가됨 -> git add 및 push 시 lfs 후킹됨.

git add .gitattribte

일반적인 작업 후 git push

-> *.test 파일에 대하여 lfs object를 업로드한다는 메시지를 볼 수 있음

 

* 소스 다운로드시

git lfs를 설치 한 후

git clone/checkout 시 딱 헤드가 가르키는 위치의 *.test 파일만 다운로드됨.

다른 커밋으로 체크아웃시 기존 다운로드 파일은 .git에 캐싱되지 않음  (du -sh .git로 크기 확인)

 

git lfs clone 시 lfs 메타파일 형태의 *.test 파일로 클론.

클론이 완료되고 lfs에서 다시 파일을 다운로드하는데, 이 형태가 훨씬 속도가 빠르다고 한다.

두 번째 페이즈 수행을 멈추고 해당 파일을 cat해보면

root@2fa97e57724c:/test3/gitlfstest3# cat 1g2.test
version https://git-lfs.github.com/spec/v1
oid sha256:b5942042835a8d34639d804894bbfab007f6cc654de16ba6a12ee5504a8cf599
size 1073741824

이런 내용이 들어있음.

 

git lfs checkout은 하나의 파일에 대해서만 정상 동작하는 듯

 

* 소스다운 (lfs 없는 환경)

git clone 시 위와 같은 메타파일만 다운되고 lfs 오브젝트 파일 다운로드 안됨.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함