mr 사용기

feanor의 이미지

mr은 저장소 관리 시스템입니다.

여러 오픈 소스 프로젝트에 참여하고 있거나, 아니면 큰 오픈 소스 프로젝트에 참여하고 있는 경우, 여러 개의 소스 저장소를 같이 관리해야 할 경우가 있습니다.

예를 들어 Mono 프로젝트의 SVN 버전을 컴파일하면서 쓸만한 개발 환경을 갖추려면 적어도 세 개의 저장소를 체크아웃 해야 합니다. (순서대로 런타임, 컴파일러, 디버거입니다.)

svn co <a href="//anonsvn.mono-project.com/source/trunk/mono" rel="nofollow">svn://anonsvn.mono-project.com/source/trunk/mono</a> mono
svn co <a href="//anonsvn.mono-project.com/source/trunk/mcs" rel="nofollow">svn://anonsvn.mono-project.com/source/trunk/mcs</a> mcs
svn co <a href="//anonsvn.mono-project.com/source/trunk/debugger" rel="nofollow">svn://anonsvn.mono-project.com/source/trunk/debugger</a> debugger

이 세 저장소를 홈 디렉토리 아래 $HOME/mono에 체크아웃 했다고 하면, 다음과 같은 명령을 주기적으로 반복하게 됩니다. (up이 아니라 st, diff 다 마찬가지입니다.)

cd mono
svn up mono
svn up mcs
svn up debugger

제가 원하는 것은 Mono를 업데이트 하는 것이지 Mono의 런타임, 컴파일러, 디버거를 따로 업데이트하는 (상태를 보는, 차이점을 보는) 것이 아닙니다. mr은 위 작업을

cd mono
mr up

으로 할 수 있게 해 줍니다.

mr은 CVS, SVN, git, hg, bzr, darcs 등을 모두 지원합니다. 이것은 mr 명령을 쓰면 저장소 상태를 보는 명령이 SVN에서는 status이고 darcs에서는 whatsnew라는 식의 차이점을 기억하지 않아도 된다는 뜻입니다.

mr은 .mrconfig 라는 파일로 설정합니다. 다음과 같이 되어 있습니다.

[mono/mono]
checkout = svn co <a href="//anonsvn.mono-project.com/source/trunk/mono" rel="nofollow">svn://anonsvn.mono-project.com/source/trunk/mono</a> mono
 
[mono/mcs]
checkout = svn co <a href="//anonsvn.mono-project.com/source/trunk/mcs" rel="nofollow">svn://anonsvn.mono-project.com/source/trunk/mcs</a> mcs
 
[mono/debugger]
checkout = svn co <a href="//anonsvn.mono-project.com/source/trunk/debugger" rel="nofollow">svn://anonsvn.mono-project.com/source/trunk/debugger</a> debugger

mr은 버전 관리 시스템들에 대해 알고 있기 때문에, checkout만 써 주면 나머지 명령들은 자동으로 자기가 생성합니다. 그러나 예를 들어 어떤 프로젝트가 SVN의 기본값인 unified diff 대신 context diff로 패치를 받는다면, 그에 필요한 diff 명령을 .mrconfig의 해당 저장소란에 넣어주면 그 명령이 자동으로 생성된 명령보다 우선해서 실행됩니다.

그러면 .mrconfig 파일을 손으로 만들어 주어야 하느냐? 아닙니다.

cd mono
mr register mono
mr register mcs
mr register debugger

위와 같이 mr register 명령을 쓰면 mr이 CVS, .svn, .git, .hg, .bzr, _darcs 디렉토리에서 메타데이타를 읽어서 알아서 .mrconfig 파일에 추가해 줍니다.

데비안 개발자인 Joey Hess가 만들었고, 물론 데비안 패키지가 있습니다.

사소한 것처럼 보이지만 mr을 쓴 이후로 오픈 소스 생활이 많이 편리해졌습니다. 다른 분들께도 도움이 되었으면 좋겠습니다.

댓글

M.W.Park의 이미지

좋은 툴 소개해주셔서 감사합니다 ^^

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

DebPolaris의 이미지

좋은 툴 감사합니다.
--------------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'
http://heu

-----------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'

DEBIAN TESTING, KDE...
debpolaris.blogspot.kr

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.