UseModWiki소스수정/RcOldFile버그 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/RcOldFile버그 는 읽기 전용 페이지입니다.
== $RcOldFile 관련 버그 수정 == * 오리지널 0.92 버전에서는 페이지 삭제나 이름 바꾸기를 하면 RcOldFile ("oldrclog" 로 지정되어 있음) 을 열 수 없다며 에러가 나온다. 화일이 있는지 없는지를 판단하지 않고 무조건 관련 연산을 수행하기 때문이다. * UseMod:UseModWiki/Bugs 에 관련 내용이 언급되어 있다. * Luke 님의 K3 버전에서는 $RcOldFile = "rcold.log" 로 지정했는데, 이러면 위의 에러는 발생하지 않는데, [[최근변경내역]]에서 다음과 같이 항목이 중복해서 나오는 문제가 발생한다. : {{{ 2003-03-09 ... 2003-03-08 ... ... 2003-02-20 ... <-- rclog 화일의 가장 첫번째 라인 2003-03-08 <-- rclog.old 화일의 가장 마지막 라인 ... <-- 이하 rclog.old 화일의 내용이 다시 한 번 출력된다. }}} : 이 문제의 원인은, "oldrclog" 와 "rclog.old" 는 서로 다른 역할의 화일이라는 것이다. oldrclog 는 rclog 의 내용이 너무 길어질 경우에 일정 기간 이전의 내용을 따로 떼어내어 보관하기 위한 화일이다. "90일 전까지의 변경"을 볼 때, rclog 의 내용을 다 읽었는데도 90일이 채 되지 않은 경우에 이 oldrclog 화일을 마저 읽어서 채워넣는다. rclog 화일의 내용을 oldrclog 로 옮기는 것은 수작업으로 해 주어야 한다. : rclog.old 는, 페이지 삭제 또는 이름 바꾸기를 할 때 rclog 화일 엔트리도 같이 치환을 하는데, 이 때 치환되기 전의 내용을 백업해 두기 위해서 자동으로 생성되는 화일이다. : 따라서, 사이트가 생성된지 90일이 되지 않은 상태에서, 90일 이전까지의 변경 내역을 보겠다고 하면 저 RcOldFile 을 읽어서 합쳐넣게 되는데, 이 때 k3 버전에서는 RcOldFile 이 자동으로 생성된 rclog.old 이기 때문에 엉뚱한 출력이 나오는 것이다. * PalmWiki 에서 정재목님이 이 것을 다시 수정을 하여, rclog 라인을 읽을 때마다 그 라인의 timestamp 를 저장해 두어 이런 라인의 timestamp 와 비교하는 방법을 사용했는데, 결과적으로 불필요한 일일 뿐더라 최근변경내역을 날짜순으로 출력시킬 경우 하나도 출력이 되지 않는 문제가 있다. * 필수 요구 사항: 없음 * 선택 요구 사항: 없음 * 소스 수정: : config.pl 에서 다음 라인 수정 {{{#!vim perl # $RcOldFile = "$DataDir/rclog.old"; # Old RecentChanges logfile $RcOldFile = "$DataDir/oldrclog"; # 굳이 oldrclog 가 아니더라도 되지만, 어쨌거나 rclog.old 가 아닌 다른 이름으로 지정 }}} : wiki.pl 에서 재목님의 패치를 제거한다. {{{#!vim perl sub GetRcHtml { ... my @outrc = @_; my ($rcline, $html, $date, $sum, $edit, $count, $newtop, $author); my ($showedit, $inlist, $link, $all, $idOnly); ############### ### replaced by gypark ### RcOldFile 버그 수정 # my ($ts, $oldts, $pagename, $summary, $isEdit, $host, $kind, $extraTemp); my ($ts, $pagename, $summary, $isEdit, $host, $kind, $extraTemp); ### ############### my ($tEdit, $tChanges, $tDiff); my %extra = (); ... $idOnly = &GetParam("rcidonly", ""); @outrc = reverse @outrc if ($newtop); ############### ### commented by gypark ### RcOldFile 버그 수정 # ($oldts, $pagename, $summary, $isEdit, $host, $kind, $extraTemp) # = split(/$FS3/, $outrc[0]); # $oldts += 1; ### ############### foreach $rcline (@outrc) { ($ts, $pagename, $summary, $isEdit, $host, $kind, $extraTemp) = split(/$FS3/, $rcline); # Later: need to change $all for new-RC? next if ((!$all) && ($ts < $changetime{$pagename})); next if (($idOnly ne "") && ($idOnly ne $pagename)); ############### ### commented by gypark ### RcOldFile 버그 수정 # next if ($ts >= $oldts); # $oldts = $ts; ### ############### # print $ts . " " . $pagename . "
\n"; %extra = split(/$FS2/, $extraTemp, -1); ... } }}} : RcOldFile 이 존재할 경우에만 치환 작업을 하도록 수정 {{{#!vim perl sub EditRecentChanges { my ($action, $old, $new) = @_; &EditRecentChangesFile($RcFile, $action, $old, $new); ############### ### replaced by gypark ### RcOldFile 버그 수정 # &EditRecentChangesFile($RcOldFile, $action, $old, $new); &EditRecentChangesFile($RcOldFile, $action, $old, $new) if (-f $RcOldFile); ### ############### } }}} ---- [[위키위키분류]]
UseModWiki소스수정/RcOldFile버그
페이지로 돌아가기 |
다른 수정본 보기