Fix longstanding bug (chdir to nonexistent dirs).
authorAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>
Mon, 28 Jan 2013 03:09:57 +0000 (22:09 -0500)
committerAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>
Mon, 28 Jan 2013 03:09:57 +0000 (22:09 -0500)
commitb30cacdf8da07f40af03f1b26021d8ec4d8b8b4c
tree204e454c2d5b5fe6e09300fe0f259c6c55392ae7
parent4d4c15a7c6f3ee073bf6d8aaf9a9a8b0b4c7fb40
Fix longstanding bug (chdir to nonexistent dirs).

In test, set up the post-commit hook for more realism (and bugs!).
To make wrappers work in test, set PERL5LIB, and allow the wrappee's
path to be overridden. Meta-test that post-commit is really hooked
up by verifying that content is getting generated in destdir.

About the longstanding bug, which as far as I know was harmless:
CVS can't operate outside a srcdir, so we're always setting $CWD.
"local $CWD" restores the previous value when we go out of scope.
Usually that's correct. But if we're removing the last file from a
directory, the post-commit hook will exec in a working directory
that's about to not exist (CVS will prune it).

The fix: chdir() manually in cvs_runcvs(), so we can selectively
not chdir() back.
IkiWiki/Plugin/cvs.pm
IkiWiki/Wrapper.pm
t/cvs.t