Search Results for '서브버전'

2 POSTS

  1. 2009/12/15 DVCS의 유용성 (4)
  2. 2009/01/15 Assembla와 버전 관리 시스템 (2)

DVCS의 유용성

2009/12/15 15:25

예전에는, 버전 관리 시스템으로는 CVS를 사용하다가, 2004년부터는 Subversion을, 2009년부터는 Mercurial(= hg)을 사용하고 있는데, 폴더마다 .svn 이 생기지 않는다는 것과, 오프라인에서 commit이 가능하다는 점, 공유되지 않은 코드를 부담 없이 롤백 및 revert 할 수 있다는 점, TAG가 branch가 아니라는 점 등의 이유 때문이었다. Distributed의 진짜 장점은 체감하진 못하고 있었는데…

몇 일 전에, 멤버십에서 진행하던 프로젝트에서, 버전관리를 위해 중앙 저장소로 사용하던 서버를 사용할 수 없게 되는 초유의 불상사가 생겼다. 대체 소스코드 공유를 어떻게 해야 하나? 이 난관을 어떻게 극복해야 하나? 한~참을 고민하다가, Mercurial은 DVCS라는 것이 기억났다. 우와!

Subversion 이었으면, diff와 patch로 극복하거나, 임시로 다른 서버를 구해서 저장하거나 했겠지만, Mercurial은 그럴 필요가 없었다. 각 사용자가 가지고 있는 Repository 하나하나가 하나의 서버나 마찬가지다. Mercurial은 (Subversion과 다르게) 서버의 저장소 구조와 클라이언트의 저장소 구조가 전혀 차이가 없다. 단 한 명만이, hg serve를 실행하고, 나머지 사용자들은 기존대로 자기의 저장소에 commit 하다가, 모아서 hg serve를 실행한 사용자의 IP로 push를 하면 된다. 나중에 중앙 저장소 서버가 복구되면, 그쪽으로 push 해주면 그만이다. 같은 족보니깐 문제도 없다. 그래. Mercurial은 중앙 저장소가 필요 없는, 분산 버전 관리 시스템이잖아.

-- 이상한 나라의 종텐.


Assembla라는 사이트가 있다. 얘들은 서브버전 Repository를 무료로 적당 용량 제공해주고, Trac과 연동도 되어있다. 나는 개인적으로 진행하는 대부분의 프로젝트를 Assembla을 이용했는데, 내가 Google Code Hosting이 아닌 Assembla를 썼던 유일한 이유는, 소스코드가 비공개인 개인 프로젝트도 운영할 수 있기 때문이었다. (구글 코드 호스팅은 소스가 공개되야하고, 강제적으로 오픈소스 라이센스를 적용해야 한다. 원래부터, 오픈소스를 위한 서비스이기 때문에.)

나는 2004년에 4달간 만들던 프로그램을 날린 경험 이후로, Version Control System에 집.착.해왔다. Assembla는 좀 느리긴 하지만, 어느정도 믿을만한 서비스이고, 내가 직접 서버를 운영하는 것 보다는, 다운이 덜 될테니깐, 상당히 애용했었다.

그.런.데. 갑.자.기. 1년 넘게 쓰던 이 사이트의 정책이 변경되어서, 소스코드가 비공개인 개인 프로젝트는 유료로 전환하거나, 곧 사용이 중지된다는 통보 메일이 왔다. -_-;; 일단은 다른 서브버전 저장소를 구하지 못해서, 몇일간 쓰고 있었는데, 오늘은 갑.자.기. commit이 안되더라! 당황하여 사이트에 들어갔더니, 대충 이런 뉘앙스의 문장이. “님하 프로젝트는 돈을 안냈으니깐, 이젠 읽기만 가능하고, 수정은 못합니당. 돈 내삼”.

일단은, Trial로 전환해놔서 몇일은 더 쓸 수 있게 해놨는데, 이것도 2주뿐인 것 같다. 덕분에, 팔자에도 없이, 톰캣만 돌아가던 개인(?) 서버에 서브버전을 돌리게 생겼다. 문제는, 이 서버는 어느날 갑자기 접속이 안되고, 하드가 다 날아가도, 어디 푸념할 데도 없는 그런 상황이라, 불안하기 짝이 없다. 나름 백업이라고 해두는 것을 이런 곳에 해야 한다니. 또한, 컴퓨터가 물리적으로 내것이 아니고, 이 서버를 돌리는 학교도 나랑 직접적인 관련이 없기 때문에, 주인이 어느날 갑자기 치워도 뭐라 할 말이 없다. -_-;; 일단은 내가 “끄지 마시오”라고 모니터에 붙여놨고, 내 연락처가 모니터에 써있고, 내가 Ubuntu 8.04 LTS를 깔아놨고, 내가 원격에서 root로 쓰고 있긴 하지만.

Assembla를 유료로 전환하느니, 나도 GitHub의 유료버전으로 갈아타는게 나을 것 같지만, 어쨌든 그건 내가 경제력이 있을 때의 이야기고. 나는 아.직.도. 가난한 학생이라서. 아음~. 1년만 어찌어찌 버틸 수 있으면 좋겠다.

안전한 서버에서 돌아가는 버전관리가 꼭 필요한 이유는, 첫째로는, 버전컨트롤을 안쓰면, 수정할 때에 불안과 불편을 동반하고, 둘째로, 인터넷 어딘가에 내 코드가 백업이 안되어있으면, 아무래도 불안하단 말이지. 노트북을 잃어버리거나, 내 하드를 다 날려도, 그 코드는 복구할 수 있으니깐. 4개월간 만들던 프로그램은 D드라이브에 보관했음에도 날려버렸었는데, 그런 일이 다시 일어나지 말라는 법도 없으니깐. 그리고.. 코드는 영혼의 일부이기에, 백업해놔야 한다.

-- 이상한 나라의 종텐.