<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://127.0.0.1:3001/hgsubversion/</link>
    <language>en-us</language>

    <title>hgsubversion: tests/fixtures/renames.svndump history</title>
    <description>tests/fixtures/renames.svndump revision history</description>
    <item>
    <title>editor: fix edge case with in memory file-store size limit</title>
    <link>http://127.0.0.1:3001/hgsubversion/log/0d0132cba155/tests/fixtures/renames.svndump</link>
    <description><![CDATA[editor: fix edge case with in memory file-store size limit<br/>
<br/>
There are a few cases where we will set a single file into to the<br/>
editor's FileStore object more than once.  Notably, for copied and<br/>
then modified files, we will set it at least twice.  Three times if<br/>
editing fails (which it can for symlinks).<br/>
<br/>
If we pass the in-memory storage limit in between the first (or second<br/>
if editing fails) time we set the file and the last time we set the<br/>
file, we will write the data to the in memory store the first time and<br/>
the file store the last time.  We didn't remove it form the in-memory<br/>
store though, and we always prefer reading from the in-memory store.<br/>
This means we can sometimes end up with the wrong version of a file.<br/>
<br/>
This is fairly unlikely to happen in normal use since you need to hit<br/>
the memory limit between two writes to the store for the same file.<br/>
We only write a file multiple times if a) the file (and not one of<br/>
it's parent directories) is copied and then modified or b) editing<br/>
fails.  From what I can tell, it's only common for editing to fail for<br/>
symlinks, and they ten to be relatively small data that is unlikely to<br/>
push over the limit.  Finally, the default limit is 100MB which I<br/>
would expect to be most often either well over (source code) or well<br/>
under (binaries or automated changes) the size of the changes files in<br/>
a single commit.<br/>
<br/>
The easiest way to reproduce this is to set the in-memory cache size<br/>
to 0 and then commit a copied and modified symlink.  The empty-string<br/>
version from the failed editing will be the one that persists.  I<br/>
happened to stumble upon this while trying (and failing) to test a<br/>
bug-fix for a related bug with identical symptoms (empty simlink). I<br/>
have seen this in the wild, once, but couldn't reproduce it at the<br/>
time. The repo in question is quite large and quite active, so I am<br/>
quite confident in my estimation that this is a real, but very rare,<br/>
problem.<br/>
<br/>
The test changes attached to this was mneant to test a related bug,<br/>
but turned out not to actually cover the bug in question.  They did<br/>
trigger this bug though, and are worthwhile to test, so I kept them.]]></description>
    <author>&#68;&#97;&#118;&#105;&#100;&#32;&#83;&#99;&#104;&#108;&#101;&#105;&#109;&#101;&#114;&#32;&#60;&#100;&#115;&#99;&#104;&#108;&#101;&#105;&#109;&#101;&#114;&#64;&#102;&#98;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 07 Apr 2014 17:51:59 -0700</pubDate>
</item>
<item>
    <title>test_fetch_rename: test content of files coming from the past</title>
    <link>http://127.0.0.1:3001/hgsubversion/log/c2a84d436202/tests/fixtures/renames.svndump</link>
    <description><![CDATA[test_fetch_rename: test content of files coming from the past]]></description>
    <author>&#80;&#97;&#116;&#114;&#105;&#99;&#107;&#32;&#77;&#101;&#122;&#97;&#114;&#100;&#32;&#60;&#112;&#109;&#101;&#122;&#97;&#114;&#100;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 10 Dec 2008 11:03:22 -0600</pubDate>
</item>
<item>
    <title>test_fetch_renames: test directory copy with children files changed in-between</title>
    <link>http://127.0.0.1:3001/hgsubversion/log/bf1e8b8ed452/tests/fixtures/renames.svndump</link>
    <description><![CDATA[test_fetch_renames: test directory copy with children files changed in-between]]></description>
    <author>&#80;&#97;&#116;&#114;&#105;&#99;&#107;&#32;&#77;&#101;&#122;&#97;&#114;&#100;&#32;&#60;&#112;&#109;&#101;&#122;&#97;&#114;&#100;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 05 Nov 2008 13:37:08 +0100</pubDate>
</item>
<item>
    <title>hg_delta_editor: register copies only if files are unchanged between source and dest</title>
    <link>http://127.0.0.1:3001/hgsubversion/log/63ece4ea25c9/tests/fixtures/renames.svndump</link>
    <description><![CDATA[hg_delta_editor: register copies only if files are unchanged between source and dest<br/>
<br/>
Handle copies of items from revision X into revision Y where X is not the<br/>
parent of Y. This cannot happen in Mercurial because copies always happen<br/>
between parents and children. A file copy is recorded if:<br/>
1- Source and destination revs are in the same branch.<br/>
2- The file is unchanged (content, type, removal) through all revisions between<br/>
destination and source, not including source and destination.<br/>
<br/>
Directory copies are registered only if the previous rules apply on all copied<br/>
items.<br/>
<br/>
[1] is there because file copies across branches are meaningless in Mercurial<br/>
world. We could have tried to remap the source rev to a similar one in the<br/>
correct branch, but anyway the intent is wrong.<br/>
<br/>
[2] is more questionable but I think it's better this way for we live in a<br/>
non-perfect svn world. In theory, 99% of copies out there should come from the<br/>
direct parent. But the direct parent is a fuzzy notion when you can have a<br/>
working directory composed of different directory at different revisions. So we<br/>
assume that stuff copied from past revisions exactly matching the content of<br/>
the direct parent revision is really copied from the parent revision. The<br/>
alternative would be to discard the copy, which would always happen unless<br/>
people kept updating the working directory after every commit (see<br/>
tests).]]></description>
    <author>&#80;&#97;&#116;&#114;&#105;&#99;&#107;&#32;&#77;&#101;&#122;&#97;&#114;&#100;&#32;&#60;&#112;&#109;&#101;&#122;&#97;&#114;&#100;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 05 Nov 2008 13:37:08 +0100</pubDate>
</item>
<item>
    <title>test_fetch_renames: test copy of deleted stuff from the past</title>
    <link>http://127.0.0.1:3001/hgsubversion/log/e0c86ebe05e3/tests/fixtures/renames.svndump</link>
    <description><![CDATA[test_fetch_renames: test copy of deleted stuff from the past]]></description>
    <author>&#80;&#97;&#116;&#114;&#105;&#99;&#107;&#32;&#77;&#101;&#122;&#97;&#114;&#100;&#32;&#60;&#112;&#109;&#101;&#122;&#97;&#114;&#100;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 05 Nov 2008 13:37:08 +0100</pubDate>
</item>
<item>
    <title>hg_delta_editor: register svn file copies</title>
    <link>http://127.0.0.1:3001/hgsubversion/log/e319c9168910/tests/fixtures/renames.svndump</link>
    <description><![CDATA[hg_delta_editor: register svn file copies]]></description>
    <author>&#80;&#97;&#116;&#114;&#105;&#99;&#107;&#32;&#77;&#101;&#122;&#97;&#114;&#100;&#32;&#60;&#112;&#109;&#101;&#122;&#97;&#114;&#100;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 05 Nov 2008 13:37:07 +0100</pubDate>
</item>

  </channel>
</rss>
