CVS Web Interface part2

김정균의 이미지

http://kldp.org/node/87760 에서 일전에 CVS Web interface 를 만들고 있다고 광고(?)를 한 적이 있었습니다. 그 이후로 조용히 개발을 계속해왔는데.. 마지막에 local repository 를 처리하는 부분에서 꼬여서 푸느라 좀 애를 먹었습니다.

나름대로 출시는 할 만하다고 생각되어 공개를 합니다.

이 프로그램의 특징으로는

1. 기본적으로 FreeBSD 에서 배포하는 CVS Web 의 기본적인 기능을 지원
   (long colored diff 만 지원 안합니다. colored diff 만들다가 너무 머리아파서 포기 --)
2. remote(cvs protocol) / local (rcs) repository 지원 (rlog 또는 rls 이용)
3. parsing 속도 개선 (대신 코드가 더러워 졌습니다. T.T)
4. 언어셋 문제 처리 (iconv extension)
5. Any Browser (XHML 1.0/CSS 2 validate)
6. i18N 지원 (gettext extension 또는 cvsd 내장 gettext)

정도 입니다. 자세한 사항은 http://my.oops.org/114 참조 하시고.. 제일 머리아프고 이 프로그램을 만들도록 한 부분은 2번, 3번, 4번 사항입니다. 이 중에서 4번이 가장 머리가 아픈 문제였는데.. 다음의 예를 들어서 보면 확실히 차이가 나게 될 겁니다.

1. Web interface 의 charset 과 저장소 문서의 charset 이 맞지 않는 경우

http://kldp.net/plugins/scmcvs/cvsweb.php/jsboard-2/doc/ko/INSTALL?rev=1.16;content-type=text%2Fx-cvsweb-markup;cvsroot=jsboard

와 같이 깨지는 문제가 발생하게 됩니다. Web Interface 는 UTF8 이고 문서는 EUC-KR 이기 때문이죠. 하지만 OOPS-CVSd 에서는

http://cvs.oops.org/?cvsroot=KLDPnet:WikiPlus&module=wikiplus&file=wplus.py,v&rev=1.32

와 같이 맞출 수가 있습니다. Web UI는 EUC-KR이고 저장소 문서는 UTF-8 입니다.

WikiPlus 프로젝트가 개발에 참 많이 도움이 되었는데.. (따로 감사드립니다. ^^) 참 재미있게도 WikiPlus 는 UTF8 을 사용하도록 규정을 하였는데, CVS commit comment 에는 UTF8과 EUC-KR이 섞여 있있습니다.

http://kldp.net/plugins/scmcvs/cvsweb.php/wikiplus/config.py?cvsroot=wikiplus

문서를 보시면.. 잘나오다가 이전에는 깨지는 것을 확인할 수 있습니다. 이런 부분까지도

http://cvs.oops.org/?cvsroot=KLDPnet:WikiPlus&module=wikiplus&file=config.py,v

와같이 픽스를 하고 있는 것이 가장 신경쓴 부분입니다. 이 예는 동일한 페이지를 CVS Web으로 본것과 OOPS-CVSd 로 본것을 비교한 것입니다.

데모는 http://cvs.oops.org 에서 확인하실 수 있습니다.

댓글

김정균의 이미지

흠.. GPL 로 배포 안하려고 하기가 정말 힘들군요. 그 수많은 코드들을 바라보며 군침을 흘리다가 GPL 을 포기하기 위해서 눈물을 머금고 다시 다 써내려가야 한다는...

얼마전 중국산 없이 살기.. 라는 프로젝트인가를 TV에서 한적이 있는데.. 이 GPL 이 꼭 중국산 같은 느낌이 들더군요 --; 쓰면 편한데.. GPL이 싫으니 쓰지는 못하고..

아..참고로 CVSd 는 BPL (http://devel.oops.org/BPL) 입니다.

wkpark의 이미지

BPL은 BSD라이센스와 호환인가요? ㅋ

밥을 사드리고 제가 고쳐쓰면 제 맘대로가 되는거죠? ㅎㅎ

온갖 참된 삶은 만남이다 --Martin Buber

김정균의 이미지

네 그렇죠. 마음대로가 되는 겁니다.

BSD 호환이라기는 좀 그렇고요. 밥만 사주면.. BSD보다 더한게 되는 거죠. 맘대로..

이게 약간 문제 소지가 있는데.. 밥사주고 그 소스를 그대로 자기 명의로 재배포 하는 경우에 대하여 좀 문제 소지가 있을 수 있는데.. 그거 조차도 맘대로 하라고.. ^^;

sheep의 이미지

회사 cvs를 제컴에서 보려고 설치 했는데...

$CVSROOT 디렉토리에 CVSROOT 이라는 폴더가 있으면 CVSROOT 이전 디렉토리만 보여주고 마네요...

의도 된것인지 몰라도...

만드시느라 애 쓰셨습니다...

아르헨티나에 있어서 밥도 한끼 못 사드립니다...

언제 한국 나갈지 몰라도 들르게 되면 연락할께요.... ;)

--------
From Buenos Aires, Argentina
No sere feliz pero tengo computadora.... jaja
닥치고 Ubuntu!!!!!
To Serve My Lord Jesus
blog: http://sehoonpark.com.ar (블로그 주소 바꼈습니다)

--------
From Buenos Aires, Argentina
No sere feliz pero tengo computadora.... jaja
닥치고 Ubuntu!!!!!
To Serve My Lord Jesus
blog: http://sehoonpark.com.ar
http://me2day.net/sheep

김정균의 이미지

잇힝.. 무슨말씀 하시는지 모르겠습니다. T.T

혹시.. $CVSROOT 가 /home/cvs/ 이고, /home/cvs/work 라는 프로젝트가 있고, /home/cvs/work/CVSROOT 가 있을 경우인가요? 흠.. 이런 경우라면 문제가 될 수 있겠군요. 임시땜빵으로 cvsd.ini 에서 cvsroot_hide 값을 off 시키면 해결은 되는데.. 궁극적으로는 수정이 되어야 할 것 같기는 하군요. 현재는 CVSROOT 라는 문자열로 체크를 할 테니까....

김정균의 이미지

댓글 달기

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