버전 관리 시스템: 애셋 서버 vs Git

작년 초에 게임팀에 와서 가장 먼저 한 일은 당시 게임팀이 사용하고 있던 버전 관리 시스템을 Unity Asset Server에서 Git으로 바꾼 것입니다. Unity Asset Server의 Unity Editor에서 편리하게 사용할 수 있다는 장점이 있지만, Subversion, Git 등이 제공하는 브랜치(branch)를 따는 기능을 제공하지 않기 때문에 문제라고 생각하였습니다. 구체적으로 무엇이 문제일까요?

브랜치를 딸 수 없으면 모든 개발자가 항상 마스터(master)에 작업물을 반영해야 합니다. 예를 들어, 제품을 출시한 이후 개발자들이 다음 업데이트를 위한 작업물을 마스터에 반영하고 있다고 가정해 봅시다. 만약 출시한 릴리즈에 버그가 있어서 수정해야 하는 상황이면 어떻게 될까요?

출시 버전 기준으로 해당 버그만 고쳐서 다시 릴리즈를 해야 하는데, 이미 마스터에는 아직 작업 중인 다음 업데이트 내용이 반영되어 있게 됩니다. 새로운 기능이 보이지 않게 끄고, 안정성에 문제가 없는지 테스트하기 시작하면 더 이상 간단한 패치 수정이 아니라 사실상 새로운 릴리즈를 하는 상황이 됩니다. 출시 시점에 브랜치를 따두었다면, 마스터에 반영된 추가 작업과 별개로 출시 브랜치에 버그 수정만 반영하고 곧 바로 릴리즈를 할 수 있었을 겁니다.

릴리즈에 대한 버그 수정과 다음 릴리즈 작업을 동시에 준비하기 위해 브랜치를 만드는 방법은 이미 수많은 소프트웨어 개발에 사용되고 있는 일반적인 프로세스인데 Unity Asset Server가 이런 기본적인 버전 관리 기능을 제공하지 않는다는 사실이 이상하게 느껴졌던 부분입니다.

Advertisements