aggregate: Avoid resetting ctime when an item md5 changes.
authorJoey Hess <joey@kitenet.net>
Fri, 12 Jun 2009 23:31:18 +0000 (19:31 -0400)
committerJoey Hess <joey@kitenet.net>
Fri, 12 Jun 2009 23:31:23 +0000 (19:31 -0400)
Besides being wrong to do, this could lead to the wrong item
being expired, as follows: If B is added and at the same time
A is changed, then A's ctime may be set to the current time,
while B's is set to its creation time. Thus the new item, A,
is incorrectly removed as older.

(This interacted especially badly with the bug fixed by
90b4d079605b72bb50d1da41402d994960e10937.)

IkiWiki/Plugin/aggregate.pm
debian/changelog

index 60c292d52d0db9624381271aa2dc24b001b9244e..5a9eb433de8311e0a9d77909aa45343c609bdea5 100644 (file)
@@ -650,11 +650,13 @@ sub add_page (@) {
                # creation time on record for the new page.
                utime $mtime, $mtime, "$config{srcdir}/".htmlfn($guid->{page});
                # Store it in pagectime for expiry code to use also.
-               $IkiWiki::pagectime{$guid->{page}}=$mtime;
+               $IkiWiki::pagectime{$guid->{page}}=$mtime
+                       unless exists $IkiWiki::pagectime{$guid->{page}};
        }
        else {
                # Dummy value for expiry code.
-               $IkiWiki::pagectime{$guid->{page}}=time;
+               $IkiWiki::pagectime{$guid->{page}}=time
+                       unless exists $IkiWiki::pagectime{$guid->{page}};
        }
 }
 
index 6444fb8ba7fec2f0cd59d20a9d757b4094dbb433..9b96eee811d95d49212895046fffd08aa2b86f7c 100644 (file)
@@ -25,6 +25,7 @@ ikiwiki (3.141) UNRELEASED; urgency=low
   * Disable the Preferences link if no plugin with an auth hook is enabled.
   * Updated French translation. Closes: #532654
   * aggregate: Fix storing of changed md5.
+  * aggregate: Avoid resetting ctime when an item md5 changes.
 
  -- Joey Hess <joeyh@debian.org>  Tue, 02 Jun 2009 17:03:41 -0400