From 361ec86696628cdfe2f8904211c8b747bde10468 Mon Sep 17 00:00:00 2001 From: joey Date: Fri, 26 May 2006 15:22:43 +0000 Subject: [PATCH 1/1] * --getctime had bitrotted (well I only ever used it the once so far..), fix and make it a bit more flexible * rcs_getctime is changed, now rather than needing to loop over all pages, it should just use the rcs to get the ctime of the passed file. --- IkiWiki/Rcs/Stub.pm | 2 +- IkiWiki/Rcs/svn.pm | 43 +++++++++++++++++++++---------------------- doc/usage.mdwn | 11 ++++++----- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/IkiWiki/Rcs/Stub.pm b/IkiWiki/Rcs/Stub.pm index 15e6cfb48..82edbd43e 100644 --- a/IkiWiki/Rcs/Stub.pm +++ b/IkiWiki/Rcs/Stub.pm @@ -27,7 +27,7 @@ sub rcs_recentchanges ($) { sub rcs_notify () { } -sub rcs_getctime () { +sub rcs_getctime ($) { error "getctime not implemented"; } diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index b45b69197..86fe69ab8 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -227,32 +227,31 @@ sub rcs_notify () { #{{{ } } #}}} -sub rcs_getctime () { #{{{ +sub rcs_getctime ($) { #{{{ + my $file=shift; eval q{use Date::Parse}; - foreach my $page (keys %pagectime) { - my $file="$config{srcdir}/$pagesources{$page}"; - next unless -e $file; - my $child = open(SVNLOG, "-|"); - if (! $child) { - exec("svn", "log", $file) || error("svn log $file failed to run"); - } + + my $child = open(SVNLOG, "-|"); + if (! $child) { + exec("svn", "log", $file) || error("svn log $file failed to run"); + } - my $date; - while () { - if (/$svn_log_infoline/) { - $date=$3; - } - } - close SVNLOG || warn "svn log $file exited $?"; + my $date; + while () { + if (/$svn_log_infoline/) { + $date=$3; + } + } + close SVNLOG || warn "svn log $file exited $?"; - if (! defined $date) { - warn "failed to parse svn log for $file\n"; - next; - } - - $pagectime{$page}=$date=str2time($date); - debug("found ctime ".localtime($date)." for $page"); + if (! defined $date) { + warn "failed to parse svn log for $file\n"; + return 0; } + + $date=str2time($date); + debug("found ctime ".localtime($date)." for $file"); + return $date; } #}}} 1 diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 03f40a892..c0fab5232 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -181,12 +181,13 @@ These options configure the wiki. Be vebose about what is being done. -* --fixctime +* --getctime - Pull last changed time for all pages out of the revision control system. - This rarely used option provides a way to get the real creation times of - items in weblogs, for example when building a wiki from a new subversion - checkout. It is unoptimised and quite slow. + Pull last changed time for each new page out of the revision control + system. This rarely used option provides a way to get the real creation + times of items in weblogs, for example when building a wiki from a new + subversion checkout. It is unoptimised and quite slow. It is best used + with --rebuild, to force ikiwiki to get the ctime for all pages. # AUTHOR -- 2.44.0