WebSVN Patch

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

WebSVN에서 소스파일 내용을 볼때나, 비교, 수정한 사람 보기에서 한글이 깨지는 것을 수정한 패치입니다. enscript를 사용한 상태에서도 문제 없이 한글을 표시 할 수 있으며 시간 및 날짜도 정상적으로 표시됩니다.

버전은 2.0 기준입니다. 최신 수정 내용은 http://www.pyrasis.com/repos/websvn에서 확인 할 수 있습니다.

강제 줄바꿈이 되어 있는 줄은 한줄로 붙여서 적용해 주시기 바랍니다.

Index: include/svnlook.php
===================================================================
--- include/svnlook.php (revision 16)
+++ include/svnlook.php (revision 19)
@@ -212,9 +212,10 @@
          $m =  substr("00".$m, -2);
          $s =  substr("00".$s, -2);

-         $curLog->curEntry->date = "$y-$mo-$d $h:$m:$s GMT";
+         setLocale(LC_TIME, "ko_KR");
+         $curLog->curEntry->date = date("Y-m-d H:i:s \G\M\TO", gmmktime($h, $m, $s, $mo, $d, $y));

-         $committime = strtotime($curLog->curEntry->date);
+         $committime = mktime($h, $m, $s, $mo, $d, $y);  // GMT+0
          $curLog->curEntry->committime = $committime;
          $curtime = time();

Index: include/command.php
===================================================================
--- include/command.php (revision 16)
+++ include/command.php (revision 19)
@@ -68,6 +68,9 @@

    if (empty($inputEncoding))
       $inputEncoding = $config->inputEnc;
+
+   if (isUTF8($str))
+      return $str;

    // Try to convert the messages based on the locale information
    if ($config->inputEnc && $config->outputEnc)
Index: include/utils.php
===================================================================
--- include/utils.php   (revision 16)
+++ include/utils.php   (revision 19)
@@ -148,6 +148,27 @@
    return $url;
 }

+function isUTF8 ($Str) {
+   for ($i = 0 ; $i < strlen ($Str); $i ++)
+   {
+      if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
+      elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n = 1 ; # 110bbbbb
+      elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n = 2 ; # 1110bbbb
+      elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n = 3 ; # 11110bbb
+      elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n = 4 ; # 111110bb
+      elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n = 5 ; # 1111110b
+      else
+         return false; # Does not match any model
+
+      for ($j = 0 ; $j < $n ; $j ++) # n bytes matching 10bbbbbb follow ?
+      {
+         if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
+            return false;
+      }
+   }
+   return true;
+}
+



@@ -160,6 +181,10 @@

 function hardspace($s)
 {
+   global $rep;
+
+   $s = toOutputEncoding($s, $rep->getContentEncoding());
+
    return '<code>' . expandTabs($s) . '</code>';
 }

Index: include/feedcreator.class.php
===================================================================
--- include/feedcreator.class.php       (revision 16)
+++ include/feedcreator.class.php       (revision 19)
@@ -613,7 +613,7 @@
      * @return a date in RFC 822 format
      */
     function rfc822() {
-       return gmdate("r",$this->unix);
+       return date("r",$this->unix);
     }


Index: languages/korean.php
===================================================================
--- languages/korean.php        (revision 16)
+++ languages/korean.php        (revision 19)
@@ -32,6 +32,8 @@

 $lang["NOREP"] = "저장소가 지정되어 있지 않습니다.";
 $lang["NOPATH"] = "경로를 찾을 수 없습니다.";
+$lang["NOACCESS"] = "디렉토리를 읽을 수 있는 권한이 없습니다.";
+$lang["RESTRICTED"] = "제한된 접근";
 $lang["SUPPLYREP"] = "include/config.php 파일의 \$config->parentPath 또는 \$config->addRepository에 저장소의 경로를 지정해 주십시오.<p>설치 설명서를 참조해 주십시오.";

 $lang["DIFFREVS"] = "리비전간 비교";
@@ -41,6 +43,7 @@
 $lang["SHOWENTIREFILE"] = "모두 보기";
 $lang["SHOWCOMPACT"] = "바뀐 부분만 보기";

+$lang["FILEDETAIL"] = "파일 세부 내용";
 $lang["DIFFPREV"] = "이전 리비전과 비교";
 $lang["BLAME"] = "수정한 사람 보기";

@@ -67,16 +70,22 @@
 $lang["SHOWALL"] = "모두 보기";

 $lang["BADCMD"] = "명령 실행 에러";
+$lang["UNKNOWNREVISION"] = "리비전을 찾을 수 없습니다.";

 $lang["POWERED"] = "Powered by <a href=\"http://websvn.tigris.org/\">WebSVN</a>";
 $lang["PROJECTS"] = "Subversion&nbsp;프로젝트";
 $lang["SERVER"] = "Subversion&nbsp;서버";

+$lang["FILTER"] = "필터링 옵션";
+$lang["STARTLOG"] = "에서";
+$lang["ENDLOG"] = "까지";
+$lang["MAXLOG"] = "최대 리비전";
 $lang["SEARCHLOG"] = "로그 검색";
 $lang["CLEARLOG"] = "검색 조건 삭제";
 $lang["MORERESULTS"] = "나머지 검색 결과...";
 $lang["NORESULTS"] = "검색 조건에 맞는 결과가 없습니다.";
 $lang["NOMORERESULTS"] = "더 이상 검색 조건에 맞는 결과가 없습니다.";
+$lang['NOPREVREV'] = '이전 리비전이 없습니다.';

 $lang["RSSFEEDTITLE"] = "WebSVN RSS feed";
 $lang["FILESMODIFIED"] = "파일 수정됨";
@@ -85,12 +94,10 @@
 $lang["LINENO"] = "행번호";
 $lang["BLAMEFOR"] = "수정한 사람 보기, 리비전 ";

-$lang["YEARS"] = "년";
-$lang["MONTHS"] = "개월";
-$lang["WEEKS"] = "주일";
-$lang["DAYS"] = "일";
-$lang["HOURS"] = "시간";
-$lang["MINUTES"] = "분";
+$lang["DAYLETTER"] = "년";
+$lang["HOURLETTER"] = "시간";
+$lang["MINUTELETTER"] = "분";
+$lang["SECONDLETTER"] = "초";

 $lang["GO"] = "Go";

@@ -103,6 +110,8 @@
 $lang["REVCOMP"] = "역 비교";
 $lang["COMPPATH"] = "비교 경로:";
 $lang["WITHPATH"] = "경로:";
+$lang["FILEDELETED"] = "파일 삭제됨";
+$lang["FILEADDED"] = "새 파일";

 // The following are defined by some languages to stop unwanted line splitting
 // in the template files.

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2007-05-17

Tags