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

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

출시 프로젝트 중에 사용한 네이버 지도 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