]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/bugs/Problem_with_editing_page_after_first_SVN_commit.mdwn
Work around Debian #771047: use a non-blank SVG for the regression test
[git.ikiwiki.info.git] / doc / bugs / Problem_with_editing_page_after_first_SVN_commit.mdwn
index 065ba8bc3a37a85d02e70dd5973cee066fbfb8bb..b8a3e40ef0a804b58f3bf02210c91bbae89195e1 100644 (file)
@@ -48,9 +48,162 @@ to Bar page and next create the page. I do following steps:
 
 Where is my mistake?
 
---Pawel
+--[[Paweł|ptecza]]
 
 > It's not clear which Edit link you clicked in step 5. Is it the link on
 > the new page, or the old link back on page Foo that you clicked on before
 > to create Bar? It would also be good to see the URL you're at in step 5.
 > --[[Joey]]
+
+>> It was Edit link on new Bar page, of course. The URL in step 5 was
+>> http://my.host.com/wiki/ikiwiki.cgi?page=bar&do=edit.
+
+>> I've forget to add in my previous post that $pagesources{$page}
+>> (cgi_editpage subroutine of /usr/share/perl5/IkiWiki/CGI.pm file)
+>> doesn't exist in step 5. It exists after rebuilding all ikiwiki
+>> pages by hand.
+
+>> BTW, where does ikiwiki store information about rendered pages?
+>> Is it `/my/ikiwiki/src/dir/.ikiwiki/` directory?
+
+>> --[[Paweł|ptecza]]
+
+>>> Well, the missing %pagesources value explains the symptom for sure.
+>>> ikiwiki stores its state in .ikiwiki/index, and that should include
+>>> info about the new page you've created, including the source file for
+>>> it, which is where the data in %pagesources comes from.
+>>>
+>>> It sounds to me like somehow, when you commit a change to svn by
+>>> saving the page, it rebuilds the wiki, but does not update the index
+>>> file. Maybe it's crashing before it can save the index file. Or maybe
+>>> it's possibly be misconfigured, and updating a different index file in
+>>> a different copy of the source? You should be able to figure out what's
+>>> going on my looking at how the index file changes (or not) when you
+>>> create the new page. --[[Joey]]
+
+>>>> I've checked that my ikiwiki really doesn't touch `.ikiwiki/index` file
+>>>> when I create and save a new page. In `error.log` file of my Apache2
+>>>> server I can't see any "Permission denied" messages, but I suspect
+>>>> that a reason of my problem can be the bad access permissions:
+
+>>>>      root@my.host:/my/ikiwiki/src/dir# ls -ld .ikiwiki/
+>>>>      drwxrwsr-x  2 www-data src 4096 2007-01-11 10:00 .ikiwiki/
+>>>>      root@my.host:/my/ikiwiki/src/dir# cd .ikiwiki/
+>>>>      root@my.host:/my/ikiwiki/src/dir/.ikiwiki# ls -l
+>>>>      razem 48
+>>>>      -rw-rw-r--  1 www-data src 17353 2007-01-11 10:00 index
+>>>>      -rw-rw-r--  1 www-data src     0 2007-01-11 10:17 lockfile
+>>>>      -rw-------  1 www-data src 24576 2007-01-11 10:17 sessions.db
+>>>>      -rw-------  1 www-data src     0 2006-11-15 14:45 sessions.db.lck
+>>>>      -rw-------  1 www-data src   404 2007-01-08 10:24 userdb
+
+>>>> What do you think about it? Does it look good? My ikiwiki runs
+>>>> under control of Apache2 server and it's configured to run
+>>>> as `www-data` user and `www-data` group. --[[Paweł|ptecza]]
+
+>>>>> It's a bit weird to run ikiwiki as www-data. This means that www-data
+>>>>> can write to your subversion repository? And the svn post-commit hook
+>>>>> _also_ runs as www-data? It certianly could be some permissions issue
+>>>>> that is not being reported properly. --[[Joey]]
+
+>>>>>> No, my SVN `post-commit` hook runs as `root` (uid) and `www-data` (gid).
+>>>>>> Only `root` user and `src` group have write permissions to my SVN repo.
+
+>>>>>> Could you please show me your permissions for `repodir`, `srcdir`
+>>>>>> and `destdir` and how runs your Apache server? --[[Paweł|ptecza]]
+
+>>>>>>> Ugh, root? My permissions setup is simple, ikiwiki runs as a single
+>>>>>>> user, and that same user can commit to the svn repo and write to
+>>>>>>> all files. --[[Joey]]
+
+>>>>>>>> What's your user? Please show me result of `ls -ld dir` for
+>>>>>>>> directories above :) --[[Paweł|ptecza]]
+
+>>>>>>>>> All my directories are 755 joey:joey. --[[Joey]]
+
+>>>>>>>>>> Thanks! But I have another situation: a multiuser system and a few
+>>>>>>>>>> ikiwiki commiters. --[[Paweł|ptecza]]
+
+>>>>>>>>>>> Joey, I think I've just fixed the permission, but my ikiwiki still
+>>>>>>>>>>> doesn't update my `.ikiwiki/index` file. Could you please explain me
+>>>>>>>>>>> when ikiwiki calls `saveindex()` subroutine? My ikiwiki doesn't do it
+>>>>>>>>>>> when I create a new page and save it or when I update and save
+>>>>>>>>>>> a existing page. It does it only when I run
+>>>>>>>>>>> `ikiwiki --setup ikiwiki.setup` and I'm desperated...
+
+>>>>>>>>>>> BTW, where should I store my `ikiwiki.setup` file? It must be placed
+>>>>>>>>>>> under `$srcdir/.ikiwiki/` directory or it doesn't matter?
+>>>>>>>>>>> Does `ikiwiki.cgi` wrapper know where the `ikiwiki.setup` file
+>>>>>>>>>>> is stored? --[[Paweł|ptecza]]
+
+Sorry I am not indenting for my reply (in my browser the responses are very narrow.)
+
+I also had problem with no webpages getting generated via the CGI unless I ran ikiwiki to regen manually.
+I can't find the discussion here about in the ikiwiki website though. I think it was removed and now I can't find it in the history.
+My problem was caused by not having a revision system defined, so it defaulted to subversion (but I didn't have that installed).
+
+> Note that that confusing default to svn has been changed.. And you're
+> right about how the setup file is used below, BTW. --[[Joey]]
+
+As for your .setup file you can put it anywhere. I don't  think the CGI knows where it is at because its settings are set in the "wrapper".
+In my case, my setup file is in a different home and owned by a different user than the CGI or my generated website. By the way, I also don't keep my .ikiwiki private directory in my source directory by setting wikistatedir (which doesn't seem to be documented).
+
+--[[JeremyReed]]
+
+> Never mind about indentation, Jeremy! :) Thanks a lot you're interested in
+> my problem and you try to help me.
+
+> I use RCS backend and store my ikiwiki sources in SVN repo. Here is my SVN
+> related settings:
+>
+>        rcs => "svn",
+>        svnrepo => "/var/lib/svn/ikiwiki",
+>        svnpath => "trunk/pages",
+>
+> I've noticed the following piece of code in `/usr/share/perl5/IkiWiki/CGI.pm`
+> file (`cgi_editpage()` subroutine):
+>
+>        # save page
+>        page_locked($page, $session);
+>
+>        my $content=$form->field('editcontent');
+>
+>        $content=~s/\r\n/\n/g;
+>        $content=~s/\r/\n/g;
+>        writefile($file, $config{srcdir}, $content);
+>
+>        if ($config{rcs}) {
+>                # Here is RCS stuff
+>                # ...
+>        }
+>        else {
+>                require IkiWiki::Render;
+>                refresh();
+>                saveindex();
+>        }
+>
+>        # The trailing question mark tries to avoid broken
+>        # caches and get the most recent version of the page.
+>        redirect($q, "$config{url}/".htmlpage($page)."?updated");
+>
+> As you can see ikiwiki calls `saveindex()` subroutine if `rcs` variable
+> is not defined. I don't understand it, because in this way ikiwiki
+> doesn't update my `.ikiwiki/index` file. Joey, could you please
+> enlight me here ;)
+>
+> BTW, I also noticed `wikistatedir` variable in the ikiwiki code
+> and I couldn't find any information about it in ikiwiki docs :) --[[Paweł|ptecza]]
+
+>> wikistatedir is a non-configurable internal value.
+>> 
+>> What happens during an edit with the code you quoted is that the "rcs
+>> stuff" results in a commit of the page to svn. This results in the
+>> ikiwiki svn post-commit hook running. The post-commit hook updates the
+>> wiki, and calls saveindex. That's why it's not called in the RCS path in
+>> the code above.
+>> 
+>> It sounds like your post-commit hook is still not set up, or is failing
+>> for some reason (permissions perhaps?) --[[Joey]]
+
+>>> OK, [[bugs/done]]! It was problem with permissions and not upgraded
+>>> `editpage.tmpl` template :) --[[Paweł|ptecza]]
\ No newline at end of file