svn에서 파일에 rev 정보 포함시키려면?

wafe의 이미지

subversion 에서 소스 파일을 checkout/export 할 때 자동으로 소스 파일 상단에 파일 이름과 revision 번호를 주석으로 첨부하고 싶은데 어떻게 해야하나요?

ktd2004의 이미지

다음과 같이 속성을 주시면 하시면 됩니다.

# cat a.c
const char *Rev = "$Rev$";
const char *Date = "$Date$";
# svn propset svn:keywords "Date Rev" a.c
# svn commit

다음과 같은 keywords가 가능합니다.

LastChangedData ( = Date)
LastChangedRevision ( = Rev)
LastChangedBy ( = Author)
HeadURL ( = URL)
Id ( = Id)

subversion 매뉴얼에서 keywords로 검색하시면 자세한 내용을 보실 수 있을 것 같네요.

wafe의 이미지

감사합니다. Subversion Book에서 properties 부분의 svn:keywords 에 설명돼있네요. 매뉴얼에 있는 걸 몰랐다니 부끄러울 따름입니다. :oops:

Heejoon Lee

eminency의 이미지

이것과 관련해 다른 질문이 있습니다.

위의 방법을 사용할 경우 해당 파일에 대한 revision만을 변경시키게 되더군요.

저는 소스 전체의 global revision을 계속 유지하고 싶은데 방법이 없을까요?

hook script를 사용하는 방법도 고려해 보았는데 그럴 경우 revision이 변경되는 파일이 늘 커밋되어야 할 거 같아서 모양새가 안 좋을 거 같고..
그리고 hook script는 커밋이나 락킹하는 경우에 대해 지원할 뿐 update나 checkout에 대해서는 안 되는 거 같더군요. 그렇게라도 되면 checkout이나 update시에 revision 번호를 업데이트 해주도록 만들겠습니다만...

혹 제가 모르는 다른 것이 있는지 궁금하네요 -_-;

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

ktd2004의 이미지

저도 그래서 svn:keywords 기능을 사용하지 않습니다.

방법이라면 다음과 같은 방법들이 있습니다.
1. "svn info" 혹은 "svnversion" 명령어를 사용해서 현재의 Working copy의 revision 정보를 parsing해서
빌드시에 이용하는 방법입니다.
2. TortoiseSVN을 사용하신다면, SubWCRev.exe 라는 파일이 TortoiseSVN의 설치 디렉토리에 있습니다.
TortoiseSVN의 경우에는 빌드할 때, 이 파일을 이용해서 프로젝트의 revision 정보를 추가하고 있습니다.

제 경우에는 리눅스에서 거의 개발을 하기 때문에 SubWCRev.exe는 사용할 일이 없고,
빌드시에 다음 명령으로 저장소의 URL과 revision 정보를 이용하고 있습니다.
* "svnversion" 명령어의 출력결과 : revision 정보.(Working Copy의 수정상태도 표시됩니다.)
* "svn info" 명령어는 출력결과 : 저장소의 URL 정보.

다음은 제가 사용하는 bash script 파일의 일부입니다. 참고하세요...

TREV=`LANG=en_US svnversion -nc .`
if [ "${TREV}" = "exported" ];then
    echo "UNKNOWN" > revision
    echo "NONE" >> revision
    return
fi
REV=`echo "${TREV}" | sed -ne "s/\(.*:\)\?\(.*\)$/\2/p"`
URL=`LANG=en_US svn info . | grep "^URL:" | sed -e "s/URL: //g"`
echo "${URL}" > revision
echo "${REV}" >> revision
eminency의 이미지

음 저도 svn 파이썬 바인딩 같은 걸 쓸까 고민중이었는데 파싱하는게 더 쉬울 거 같네요.
감사합니다.

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.