David Weintraub wrote on Thu, Nov 03, 2011 at 12:46:52 -0400: > I've written a Perl post-commit hook that emails out via SMTP. I was > getting the following error when I try to do a commit: > > Sending subversion/README > Transmitting file data .svn: Commit failed (details follow): > svn: MERGE of '/mfxcm/trunk/subversion': 200 OK (http://source) > > The commit actually had worked, but the revision of my working copy > wasn't updated until I did a "svn up": > > $ svn commit -m"Finding what's causing commit errors. I think it's > the post-commit script" > Sending subversion/README > Transmitting file data .svn: Commit failed (details follow): > svn: MERGE of '/mfxcm/trunk/subversion': 200 OK (http://source) > david@DaveBook.local:~/workspace/svn-cm-trunk/subversion > $ svn up > G README > Updated to revision 94. > > I've played around with my post-commit script, and everything is find > until I do: > > my $smtp = Net::SMTP->new( > Host => $self->SmtpHost, > Debug => $main::debugLevel, > > Then, I get the MERGE error again. If I take out the SMTP portion of > the script, everything works just fine. If I put in starting SMTP, it > fails. > > I know the script actually works because I print out the command to > execute my post-commit hook, and I can run it from the command line > without any problems. It only gets that MERGE error if run as a > post-commit hook. > > What exactly does that MERGE error mean, and why do I get it when > Subversion runs the post-commit hook vs. when I run the same thing > from the command line?
I think MERGE is the DAV command that corresponds to "Commit this transaction (i.e., promote it to a revision)". Anyway: when svn runs the hook, it only looks at its exit code, stderr, and stdout. So, check how these three change with/without the Net::SMTP invocation. You probably know that there's a FAQ entry recommending the proper way to test a hook: as the server's user, with an empty environment, etc. > > -- > David Weintraub > qazw...@gmail.com