quilt 사용기

feanor의 이미지

quilt는 패치 관리 시스템입니다.

How To Survive With Many Patches (패치 속에서 살아남기)

수세의 커널 해커인 Andreas Grünbacher씨가 커널 패치 관리를 위해 만든 스크립트인데요, 예를 들어 버전 관리 시스템에 직접 쓰기 권한은 없지만 조금 긴 개발을 해야 할 때 (여러 개의 의존하는 패치가 있을 때) 유용합니다. 패치가 머지될 때까지 장기간 관리해야 할때도 쓸모가 많습니다.

간단한 사용법을 소개합니다.

1. quilt new "패치 이름"으로 패치를 시작합니다.
2. 파일을 편집하기 전에, quilt add "파일 이름"으로 현재 패치에 파일을 추가합니다.
3. 파일에 필요한 변경을 합니다.
4. quilt files 명령으로 현재 패치에 들어 있는 파일들을 볼 수 있습니다.
5. 파일을 패치에서 빼려면 quilt remove "파일 이름" 합니다.
6. quilt diff 명령으로 현재 패치의 내용을 볼 수 있습니다.
7. quilt refresh 명령을 내리면 패치가 저장됩니다. (다른 버전 관리 시스템의 커밋과 같습니다.)
8. 빠뜨린 게 있어서 변경을 더 합니다.
9. quilt diff 명령에 -z 옵션을 주면 마지막으로 refresh 한 시점부터의 변경 사항만 볼 수 있습니다.

패치는 소스 트리의 patches 디렉토리에 저장됩니다. patches를 심볼릭 링크로 만들면 패치를 다른 곳에 저장하게 할 수도 있습니다. quilt의 내부적인 정보는 .pc라는 숨겨진 디렉토리 안에 저장됩니다.

패치가 머지될 때까지 유지하기 위해 새 버전이 나왔을 때 따라가는 방법은 다음과 같습니다.

1. quilt import "패치 이름"으로 패치를 가져옵니다.
2. quilt push 명령으로 패치를 적용합니다. 이 때 소스 변경사항 때문에 앞뒤로 몇 줄 정도가 어긋날 수 있습니다. 충돌이 나면 수정해 줍니다.
3. quilt refresh 하면 다시 새 버전에 대한 깨끗한 패치로 정리됩니다.
4. quilt pop 명령으로 패치를 되돌립니다.

데비안 계열 배포판을 쓰시는 분들은 quilt 패키지를 받아서 쓰시면 됩니다. quilt의 개발은 Savannah에서 이루어지고 있습니다. 홈페이지는 http://savannah.nongnu.org/projects/quilt/ 입니다.

RPM 패키징과 사용할 때는 quilt setup 명령으로 일을 줄일 수 있습니다. 전체 명령의 목록은 quilt만 실행하면 나오고, 개별 명령의 도움말은 quilt "명령" -h 해서 볼 수 있습니다.

Happy patching!

댓글

권순선의 이미지

오랜만에 재미있는 글 읽었습니다. 감사합니다...

김정균의 이미지

흠 상당히 관심이 가는 군요. rcs 랑 다른 점이 무얼까 생각해 보고 있습니다. :-) 무언가 개선된 점이 있으니까 나왔겠죠. ㅋㅋ

atie의 이미지

quilt를 몰라서 소스 버전업이 된 패키지를 재-재패키징을 하는 경우에 곤란한 적이 저도 몇 번 있었습니다. manual을 따라서 하나씩 차근차근 해 본 것이 아니라, .pc의 존재도 그 패키지의 디렉토리를 뒤져서야 역으로 알아내고는 "아하ㅎㅎ" 하고는 했는데... 좋은 (제게는 요약) 글을 써주셔서 고맙습니다.

가지고 있는 rxvt 디렉토리에서 위의 quilt files와 quilt diff를 글을 쓰면서도 해 보았습니다. ^^;;
----
I paint objects as I think them, not as I see them.

----
I paint objects as I think them, not as I see them.
atie's minipage

joone의 이미지

wikipedia를 보니 Linux kernel 개발자인 Andrew Morton이 처음 개발을 시작했다고 합니다..

댓글 달기

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