summaryrefslogtreecommitdiff
path: root/doc/bugs/conflicts.mdwn
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2010-08-27 10:01:58 +0200
committerJonas Smedegaard <dr@jones.dk>2010-08-27 10:01:58 +0200
commitf398ad035b973608d380c9939ea845d8e2a0cdc2 (patch)
tree1ba1a0c94e375ab8ed609eaa57a542c6b87de5a8 /doc/bugs/conflicts.mdwn
parent958e5735c946263a111420fe47abe58782581e8c (diff)
parent6d213a0c739d5b34357b01a616f99197eeba6ad9 (diff)
Merge branch 'master' of git://git.ikiwiki.info
Diffstat (limited to 'doc/bugs/conflicts.mdwn')
-rw-r--r--doc/bugs/conflicts.mdwn32
1 files changed, 32 insertions, 0 deletions
diff --git a/doc/bugs/conflicts.mdwn b/doc/bugs/conflicts.mdwn
new file mode 100644
index 000000000..bef0f54cd
--- /dev/null
+++ b/doc/bugs/conflicts.mdwn
@@ -0,0 +1,32 @@
+The `conflicts` testcase has 4 failing test cases. The underlaying problem
+is that there are multiple possible source files that can create the same
+destination files.
+
+1. `foo.mdwn` is in srcdir, rendered to destdir. Then
+ it is removed, and `foo` is added, which will be rendered
+ raw to destdir. Since the `foo/` directory still exists,
+ it fails.
+1. `foo` is added to srcdir, rendered raw to destdir.
+ Then it is removed from srcdir, and `foo.mdwn` is added.
+ The `foo` file is still present in the destdir, and mkdir
+ of the directory `foo/` fails.
+1. `foo.mdwn` renders to `foo/index.html`. Then `foo/index.html`
+ is added to the srcdir, using rawhtml. It renders to the same
+ thing.
+1. `foo/index.html` in srcdir is rendered to same thing in destdir
+ using rawhtml. Then `foo.mdwn` is added; renders same thing.
+
+Note that another case, that of page `foo.mdwn` and page `foo.txt`, that
+both render to `foo/index.html`, used to cause problems, but no longer
+crashes ikiwiki. It now only complains in this situation, and which
+file "wins" is undefined. The fix for this relied on both pages being
+named `foo`; but in the above cases, the source files have different
+pagenames.
+
+One approach: Beef up checking in `will_render` to detect when the same
+destination file is rendered by multiple pages. Or when one page renders
+a file that is a parent directory of the rendered file of another page.
+It could warn, rather than erroring. The last page rendered would "win";
+generating the destdir file.
+
+[[done]]