<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in PageChangeLogTest.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>6372bc80cf66844189fb35b36624654d095e5f9b - fix(changelog): detect an externally restored deleted page as a re-creation</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php#6372bc80cf66844189fb35b36624654d095e5f9b</link>
        <description>fix(changelog): detect an externally restored deleted page as a re-creationA deleted page restored outside DokuWiki with a preserved mtime predating thedeletion (cp -p from an old backup, rsync --times) has content matching thedelete revision&apos;s attic copy. That copy holds the pre-delete content, so theunchanged-content shortcut in getCurrentRevisionInfo() wrongly treated therestore as an unchanged file, touched the mtime back to the delete revision andkept the DELETE as the current revision. The page then stayed &quot;deleted&quot; on everysubsequent read.A last recorded revision of type DELETE means the page did not exist then, so anexisting file is an external re-creation regardless of its mtime.getCurrentRevisionInfo() now classifies the external change and delegates tosynthesizeExternalDeletion/synthesizeExternalCreate/synthesizeExternalEdit; onlythe edit path keeps the unchanged-content shortcut. A re-creation records the fullfile as its size change and, when the restored mtime predates the delete, is datedjust after it with an unknown date.The getCurrentRevisionInfo() method got rather unwieldy, so it was refactored touse three helper methods, for synthesizing the changelog data.

            List of files:
            /dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php</description>
        <pubDate>Mon, 06 Jul 2026 10:54:49 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>eab6268cca3310499bb33a53846d6e00bebf8f3a - fix(changelog): keep out-of-order external edits out of recent changes (#4634)</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php#eab6268cca3310499bb33a53846d6e00bebf8f3a</link>
        <description>fix(changelog): keep out-of-order external edits out of recent changes (#4634)A detected external edit is recorded both in the page&apos;s own changelog and inthe global recent-changes feed. When its date is older than the most recentchange already in the global changelog &#8212; an old file surfacing after the feedhas moved on &#8212; appending it placed it at the top of recent changes with an olddate, above genuinely newer entries.writeLogEntry() now delegates the global-feed append to writeGlobalLogEntry(),which skips an external edit whose date predates the global changelog&apos;slast-modified time. The entry still lands in the page&apos;s own changelog; it isonly kept out of the cross-page feed. Normal edits are always appended.

            List of files:
            /dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php</description>
        <pubDate>Sun, 07 Jun 2026 18:20:44 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>0a245329500f3be55c2a4eb03710ad926803aac6 - fix(changelog): don&apos;t record an external edit when the content is unchanged (#4634)</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php#0a245329500f3be55c2a4eb03710ad926803aac6</link>
        <description>fix(changelog): don&apos;t record an external edit when the content is unchanged (#4634)A current revision&apos;s file mtime can change without its content changing &#8212; abackup restore, a git checkout, an in-place rewrite. Such a bump was detectedas an external edit and logged with a 0-byte size change, cluttering history.getCurrentRevisionInfo() now compares the current content against the lastrecorded revision before treating an mtime change as an external edit. When thecontent is identical no external edit happened: the file mtime is reset to therecorded revision date and the last revision is returned. The comparison is anabstract currentContentMatchesRevision() &#8212; pages compare the decompressed text,media compare file size then md5_file().

            List of files:
            /dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php</description>
        <pubDate>Sun, 07 Jun 2026 18:19:49 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>2bde879a12352d26be5e3f11e86855f463734d2d - Fix diff view comparing a deleted page with itself (#4635)</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php#2bde879a12352d26be5e3f11e86855f463734d2d</link>
        <description>Fix diff view comparing a deleted page with itself (#4635)When opening the diff of a deleted page without explicit rev parameters(?do=diff), Diff::handle() resolved the older side via getRevisions(0, 1).That helper only skips the current revision when the item file stillexists, so for a deleted page it returned the deletion entry itself andthe view ended up comparing the current revision with itself (&quot;no way tocompare when less than two revisions&quot;, empty diff).Use getRelativeRevision($rev2, -1) instead, which returns the revisionimmediately before the current one regardless of whether the page fileis still present. This covers both pages deleted through DokuWiki andexternally deleted pages (whose synthesized deletion entry is nowpersisted to the changelog).Add PageDiffTest and PageChangeLogTest covering the resolved revisionpair and the underlying changelog walk-back for both deletion kinds.

            List of files:
            /dokuwiki/_test/tests/ChangeLog/PageChangeLogTest.php</description>
        <pubDate>Sun, 07 Jun 2026 10:17:48 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
