개인용 Git Remote Repositary 구축기(1)

1. 구축 이유

개인적으로 진행하는 일반적인 프로젝트들은 딱히 보안상중요한게 아니라면 Github나 BitBucket같은 무료서비스를 사용하면되기때문에 문제가 될것이없다. 다만 게임개발을 위한 프로젝트는 가장 커다란 문제가 있었다. 바로 소스및 리소스 보안문제와 기본용량에의 문제. 여기에서 첫번째 보안문제는 최근에 MS가 Github를 인수하면서 무료사용자에게도 private repositary를 제공하는걸로 바뀌면서 해결되었다. 그러나 두번째문제는 아직까지 남아있다. 한개의 Repo에 limit을 1기가정도로 정하고있는데(이건 최근에 더 올랐는지는 모르겠다.) 게임프로젝트는 리소스를 계속 추가하는관계로 금방 이정도의 용량은 넘어버린다. 결국 push를 할수없는 순간이 오게된다는것이다. 이 같은 문제를 직면하면서부터 개인적으로 사용할 Git 원격저장소를 구축해야겠다는 생각을 하게되었다.

2. 구글 드라이브 Stream을 활용한 원격저장소.

사실 개인작업을 하면서 굳이 원격저장소를 구축하려 하는 이유는 작업의 편의성때문이다. 작업내용을 Github에 올려두면 얼마나 편리한가. 아무기기라도 터미널을 열수있고 Git이 설치된환경에서 인터넷만 있으면 내가 작업하던 내용을 바로 이어서 할수있다. 집에서는 iMac으로 작업을 하는 나는 밖에서는 맥북이나 아이패드로 작업을 하는데 그때마다 하던 작업을 복사하고있는건 진짜 귀찮은짓이다. 원격저장소를 인터넷으로 연결만 해두면 되는거니까. 그래서 해당 원격저장소를 클라우드서비스에 올려두는식으로 생각을 해보았다. 마침 나는 학교계정을 이용해서 구글드라이브를 무제한으로 사용중이었고, 한개 프로젝트당 몇기가이상이 되는 나의 게임프로젝트들을 담아두기에는 매우 적당하다고 생각하였다. 아마 원드라이브나 드롭박스들도 동일하게 사용할수있을것이라고 생각된다.

1) 구글드라이브등 클라우드 서비스의 환경조건.

일단 클라우드 서비스는 대부분 웹에서 접근이 가능하다. 그래서 웹에서만 사용하거나 앱으로 사용하는사람이 많은데, 당연하겠지만 원격저장소를 클라우드서비스에 넣고 접근하기위해서는 웹,앱접근이 아닌 파일탐색기(윈도우)혹은 Finder(맥)에서 접근이 가능하여야한다. 구글에서는 관련하여 파일스트림 클라이언트를 제공하고있고 아마 드롭박스나 원드라이브같은 다른 서비스도 비슷한것은 다 제공하고있는것으로 알고있다.

Download - Google Drive

해당 클라이언트를 설치하고나면 터미널이든 Finder에서든 클라우드내부에 있는 파일에 대한 접근이 가능해지는데(물론 다운을 받지않아 캐싱이 되어있지않은 파일에 접근하면 다운을 받기시작하는데, 의외로 접근시 다운받을때까지 어떤 명령이든 대기상태가된다.) 이 환경이 먼저 선행되어야 원격저장소로 클라우드 서비스를 사용할수가 있다.

2) 구글드라이브 Remote Repositary 환경 설정

완전히 새로운 Git Repo를 만든다고 가정할때 다음과 같은 과정을 따른다.

맥에서 구글드라이브 스트림폴더를 터미널에서 접근할때의 경로가 “/Volumes/GoogleDrive-133/내\ 드라이브/ “이라면 개인 Repositary를 생성할 폴더를 먼저 드라이브에 생성해준다. 여기에서는 Private_GitRepo라는 이름을 폴더를 생성하였다. (윈도우 환경에서도 명령어는 같다. 구글드라이브 경로만 다를뿐이다) 만들어진 이 폴더는 원격저장소가 될것이다.

mkdir /Volumes/GoogleDrive-133/내\ 드라이브/Private_GitRepo

이제 로컬 Repositary를 만들 폴더로 이동한다.

cd /Users/cho-eul-yeon/PrivateProject

로컬 Git Project를 생성한다. git init 후에는 readme파일이라도 만들어서 첫 커밋을 한다.

git init
git add .
git commit -m "First Commit"

원격 저장소가 있는 폴더로 돌아가 해당폴더에 bare git repo를 만든다. 여기에서는 testProject라고 만들었는데 원하는 프로젝트 이름으로 넣어준다.

cd  /Volumes/GoogleDrive-133/내\ 드라이브/Private_GitRepo
git init --bare testProject.git

이제 로컬 repo를 원격 repo와 연결해주기만 하면된다. 연결후 첫커밋을 push해준다.

cd /Users/cho-eul-yeon/PrivateProject
git remote add origin /Volumes/GoogleDrive-133/내\ 드라이브/Private_GitRepo/testProject.git
git push -u origin master

해당 원격저장소를 클론하기위해서는 해당 드라이브에 있는 git 경로를 넣어주기만하면된다.(물론 드라이브 스트림연결이 되어있어야한다.)

git clone /Volumes/GoogleDrive-133/내\ 드라이브/Private_GitRepo/testProject.git

3) 사용후기.

구글드라이브를 활용한 방식은 꽤나 만족스러운방식이었다. 고용량의 프로젝트임에도 불구하고 용량생각하지않고 작업할수있었고 구글드라이브 동기화 속도도 그렇게 나쁘지는 않았다. 다만 사용에 있어서 불편한점이 없었다고는 할수없다. 몇가지 적어보면, 다음과같다.

첫번째 구글드라이브 스트림을 사용하기때문에 fetch가 자동으로는 잘 안된다는 문제가있었다. git을 사용할때 편의성을 위해 소스트리도 같이 사용중인데 구글드라이브 스트림이 동기화를 바로 하지않으면 git관련한 내용이 업데이트가 되지않는다. 스트림방식자체가 해당파일에 접근을해야 업데이트를 확인하고 동기화하는 방식이라서인지 수동으로 git fetch를 해줘야 그제서야 동기화를 진행했다. 이점은 좀 불편한점이었다.

두번째, 결국 원격저장소와 로컬저장소를 한 피씨에서 다 들고있는 모양새가 되기때문에 컴퓨터 용량에대한 압박이 좀 있다. 사용하다보면 구글드라이브스트림 캐시가 엄청 생기는데 결국 원격저장소를 다 로컬에 용량으로 차지하기 때문이다.

세번째, 구글드라이브용량이 무제한이 아니라면 문제가 생긴다. 구글에서 제공하는 기본 용량은 15기가인데 어느정도 프로젝트가 진행된다보면 프로젝트하나만으로도 이 용량을 다 차지하는 문제가 생긴다. 나같은경우에는 무제한용량이었기때문에 이 문제에서는 자유로울수있었는데, 최근들어 이 문제가 나에게도 찾아오게된다. 바로 학교 계정에 대한 구글드라이브 용량제한…

“The new storage model will provide schools and universities with a baseline of 100TB of pooled cloud storage shared across all of your users”

GSuite for Education 에 대해 리브랜딩을 하면서 학교당 100테라로 용량을 제한한다고 한다. 학생수가 몇명인데 학교당 100테라라니.. 이런 문제로 구글드라이브말고 대안책을 생각해야하는 상황에 빠졌다. 그래서 생각한게 open ssh 서버구축 방식. 이건 다음에 작성할계획.

댓글남기기