Mercurial, ShareSource, hgsvn

feanor의 이미지

Mercurial은 소스 관리 시스템입니다.

OpenSolaris, Java, Mozilla 등이 Mercurial을 사용하고 있거나 사용을 계획하고 있습니다.

Subversion의 svnbook처럼 공개된 책이 있으니 책을 선호하시는 분은 이 책으로 시작하시면 됩니다.

Distributed revision control with Mercurial

CVS나 Subversion의 한가지 장점은 서버 호스팅입니다. SourceForge를 비롯하여 GForge나 Savane을 쓰는 사이트들이 호스팅을 제공하고, Google Code도 Subversion 호스팅을 제공합니다. 그에 비해 Mercurial은 별도의 서버가 필요 없고 개인 홈페이지에도 호스팅할 수 있기는 하지만 SourceForge와 같은 호스팅 사이트가 없는 아쉬움이 있었습니다.

얼마 전에 ShareSource라는 사이트가 Mercurial 호스팅을 제공하기 시작해서, ShareSource를 사용하는 방법을 간단히 적습니다.

1. 사용자 등록을 합니다. 메일 주소로 메일이 오면 확인하면 됩니다.
2. 프로젝트 신청을 합니다. 운영자의 허가가 필요하며 하루나 이틀 걸립니다. 물론 신청할 때 Mercurial을 사용하겠다고 명시해야 합니다.
3. 프로젝트가 만들어지면 Mercurial clone 주소는 http://hg.sharesource.org/clang (여기서 clang은 프로젝트 이름) 같은 형식이 됩니다.

4. 이미 사용하고 있던 Mercurial 저장소가 있다면, hg push http://hg.sharesource.org/clang 처럼 하면 됩니다. (CVSROOT를 묶거나 svnadmin dump를 하거나 svnsync 등을 쓸 필요가 없습니다.) 사용자 이름과 비밀번호를 물어보니 입력하시면 됩니다. (HTTP 인증을 사용합니다.)

사용자 이름과 비밀번호를 입력하지 않으려면 http://username:password@hostname/path 형식을 사용하시면 됩니다.

5. push를 하고 나서는 웹 인터페이스에서 업로드 된 것을 확인하고 다시 로컬로 clone하면 깨끗한 카피가 됩니다. (이게 싫으면 저장소 아래의 .hg/hgrc에서 default path를 직접 고치셔도 됩니다.)

기존에 Subversion 저장소가 있는데 Mercurial로 이전하려 하거나, Subversion 저장소를 계속 쓰면서 Mercurial에 미러를 하려는 경우에는 hgsvn을 사용할 수 있습니다.

미러의 장점으로는 오프라인 작업, quilt와 비슷하지만 버전 관리와 통합되어 더 사용하기 편한 MQ의 사용, 네트워크가 필요없어 빠른 log과 annotate 기능 등이 있겠습니다.

데비안에서는 apt-get install hgsvn으로 설치합니다.

사용방법은 간단합니다. 다만 저장소 변환에 상당한 시간이 걸립니다.

$ hgimportsvn http://llvm.org/svn/llvm-project/cfe/trunk clang
(약간의 출력)
$ cd clang
$ hgpullsvn
(많은 출력)

미러를 하는 경우 cron을 돌릴 수 있습니다. 이 경우 변환된 저장소에 default-push 설정을 잡아주어야 합니다. 물론 hgrc에 비밀번호를 적는 경우 소유자만 읽을 수 있도록 퍼미션을 조정해야 합니다.

$ cat .hg/hgrc
[paths]
default-push = http://username:password@hostname/path
$ crontab -l
30 0 * * * cd $HOME/hgsvn/clang; hgpullsvn >/dev/null; hg push -q

댓글

권순선의 이미지

재미있는 개념이로군요. 분산형 소스코드 관리 툴들은 아직 많이 안써 봤는데 언제 한번 해보고 싶네요. +1점 날립니다... :-)

semmal의 이미지

좀 자세히 알고 싶어서 이리저리 뒤져봤더니 자료가 많이 나오네요.

한국어 입문서
http://www.selenic.com/mercurial/wiki/index.cgi/KoreanTutorial

빨리 시작하기
http://wiki.kldp.org/wiki.php/MercurialQuickStart

각 버전 컨트롤 시스템 비교
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

과거에도 feanor님이 한번 소개해 주셨네요.
http://kldp.org/node/82622

------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

suapapa의 이미지

빨리 시작하기를 초벌 번역한 suapapa입니다.

wxGlade프로젝트에 한글 po파일을 전달하면서,
wxGlade가 Hg로 관리를 하고 있어 접해 보았는데,

Hg를 사용하면서 느낀 장/단점은 다음과 같습니다.

단점으로는

  • 분산 저장소에 대한 -저의-무지와 믿음 부족
  • 현 시점에서 -저같은- 바보도 쓸 수 있는 gui 프론트엔드의 부재

장점들은 아래와 같습니다. 대부분 분산 저장소에서 오는 장점들이죠.

  • cvs, svn과 비슷한 명령어 체계.
  • hgsvn!! 와우!! 이런게 가능하네요!!
  • 프로젝트의 Main stream이 죽거나 사라져도 계속 -이력을 남기며- 작업이 가능합니다.
  • 서버설정이 필요 없음. - 한줄의 명령으로 자신의 WorkingCopy를 저장소 서버로 가동할 수 있습니다. (WC가 리눅스에 있던 WindowXP에 있던 상관없이 동작합니다!)
  • 패치생성 불필요 - 참여하고자 하는 프로젝트의 cvs, svn저장소에 계정이 없는 경우 diff를 제공해 패치를 전달해야 했지만, hg에서는 위 항목과 같이 자신의 저장소 주소를 알려주면 됩니다. Main stream의 관리자는 한 줄의 명령어로 다른사람의 -다른 곳의- 저장소로부터 머지할 수 있습니다.

주로 svn을 많이 사용해 보며 별다른 불편함을 느끼지 못했었는데 이번에 여러 저장소에서 각각 svn으로 작업하던 내용을 합치는 일을 겪다 보니, "Hg 였으면 좋았을 텐데" 라는 생각이 들었습니다.

Tortoise Svn 같은 Hg를 위한 GUI프론트엔드가 존재하면 더 급속도로 대중화 될 것이라 생각하지만, 지금 상황에서도 Hg가 제공하는 분산 서버의 개념은 충분히 매력있으며, 꼭 한번 접해 보시라고 권유드립니다. :)

eminency의 이미지

분산 개발도구로 git도 많이 쓰는 거 같던데(리누스 토발즈가 만들었다는게 진짠가요? 리눅스 커널 관리도구로 git를 쓴다는 얘기도 들은 거 같은데...) 머큐리얼이랑 비교한 자료가 있으면 좋을 거 같네요.
둘 중에 하나 골라서 써보고 싶네요.

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.