IOS

[IOS] NaverMap SDK 사용 중 알게된 Git LFS에 대하여

김중위 2022. 10. 3. 01:51

출시 프로젝트 중에 사용한 네이버 지도 SDK를 Git에 업로드하기 위해서 사용했던 방법을 공유한다.


1. Git LFS 란?

LFS는 Large File Storage의 약자로, Git에서 관리중인 파일을 원격 서버에 업로드할 때
GitHub에는 업로드 가능한 용량 제한(100MB 미만)이 존재한다. 

 

Git LFS는 오디오, 비디오 같은 큰 용량의 파일을 GitHub에 업로드 하려고 할 때 해당 파일들을
다른 원격 서버에 별도로 저장하고 GitHub에는 그 파일에 대한 포인터만 저장하게 해주는 오픈소스이다.

 

2. 사용 방법

1) Git LFS 설치

먼저 homebrew를 사용해서 Git LFS를 설치해준다.

$ brew install git-lfs

홈브루가 설치돼있지 않다면 아래 링크에서 설치해주자.

https://brew.sh/index_ko

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

설치가 완료되면 터미널에 명령어를 입력해서 LFS 설정을 완료해준다.

$ git lfs install

2) Git LFS 시작하기

이제 업로드하고자 하는 대용량 파일을 LFS에서 관리할 수 있도록 지정해 줄 것이다.

만약 그 파일이 인덱스에 추가돼있다면 인덱스에서 제거 후 아래 명령어를 입력해주자.

$ git lfs track '지정할 파일 이름'

지정할 파일 이름에는 '*.psd' 처럼 특정 확장자를 가진 모든 파일을 지정해줄 수도 있고

'images/' 처럼 특정 폴더 또는 'images/*.psd' 처럼 특정 폴더의 특정 파일을 지정해줄 수도 있다.

 

3) 이슈

나는 CocoaPod으로 네이버 맵 SDK를 설치했기 때문에

Pods 폴더 전체를 지정하도록 아래 처럼 명령어를 입력했는데

$ git lfs track 'Pods/'

폴더의 하위 파일들을 재귀적으로 지정하는 방식이 아니라서 그런건지 업로드 할 때 오류가 발생했다.

그래서 결국 문제가 되는 대용량 파일의 이름을 직접 입력해서 해결할 수 있었다.

$ git lfs track 'Pods/NMapsMap/framework/NMapsMap.xcframework/ios-arm64_armv7/NMapsMap.framework/NMapsMap'

 

4) GitHub에 업로드

lfs가 해당 파일을 추적하도록 지정하면 디렉토리에 .gitattributes 라는 파일이 생성됐을 것이다.

이 파일을 추적할 파일과 함께 원격 저장소에 업로드 해줘야 한다.

 

아래처럼 명령어를 순서대로 입력하면 원격 저장소에 파일을 push할 때
LFS는 그 파일(지정한 파일)을 가로채서 Git LFS 서버로 보낸다.

$ git add .
$ git push origin main

이렇게 GitHub에 업로드된 파일은 Git LFS 서버와 연결하는 포인터가 저장된다.

 

3. 참고 자료

https://www.youtube.com/watch?v=uLR1RNqJ1Mw