Hi Martin, Especially if you have done a little investigation first; then the smart money is always on a file bug.
It can always be closed if it turns out to not be a bug in the end, or if it is a duplicate of another that already exists. Which brings me to my last point of; Just make sure the you check the tracker first to see if there is one logged for your issue already. Gavin. On 22/08/2011, at 6:33 PM, Martin Kutter wrote: > Hi, > > I think there's a bug in JavaHL, which ignores post-commit error messages > and does not transmit it to the caller (neither directly, nor, via the > notify2 API). > > Shall I file a bug report? > > On Wed, 17 Aug 2011 19:56:13 +0200, Martin Kutter > <martin.kut...@fen-net.de> wrote: >> Hi, >> >> Am Dienstag, den 16.08.2011, 11:14 -0400 schrieb Mark Phippard: >>> On Tue, Aug 16, 2011 at 11:09 AM, Martin Kutter >>> <martin.kut...@fen-net.de>wrote: >>>> is there a way to receive get post-commit error messages on > performing >>>> a >>>> commit with the JavaHL bindings? >>> >>> Subclipse uses JavaHL and I believe it shows these messages. Have you >>> registered a call back to receive the Notifications? >>> >>> > http://subversion.apache.org/docs/javahl/1.6/org/tigris/subversion/javahl/Notify2.html >>> >> >> Subclipse does not show post-commit error messages > (v 1.6.18). >> >> It also looks like JavaHL (1.6.17) does not transmit post-commit error >> messages not even in notify callbacks. > > Description: > > There's no way for JavaHL clients to access a post-commit error message. > The post-commit error message is neither returned directly, nor via the > notify2 API. > > Steps to reproduce: > > 1. Create svn repo with failing post-commit hook and output on stderr > > svnadmin create test/postcommiterror > > # create a post-commit hook like this in the new repository's hook > directory: > post-commit.bat > > echo "Output to STDERR" 2>&1 > exit 1 > > 2. Test with svn command line client, checkout, perform some change, > commit. > > svn co test/postcommiterror . > cd postcommiterror > mkdir test > svn add test > svn commit -m 'test postcommit error' . > > Expected output is like this: > > Committed revision 19. > > Warning: post-commit hook failed (exit code 1) with output: > "Output to STDERR" > > 3. make some change to the wc (like delete the test dir), and run the > JUnit test below (with paths > changed to match your system) > > svn del test > > Run JUnit test from workbench (like eclipse) > > Test fails, output is > > 1.6.17 (r1128011) > Acttion: 17 > ChangelistName: null > ContentState: 1 > ErrMsg: null > Kind: 2 > LockState: 1 > MimeType: null > Path: D:/Martin/workspace/test/site > PathPrefix: D:/Martin/workspace > PropState: 1 > Revision: -1 > Lock: null > MergeRange: null > Source: D:/Martin/workspace/test/site > Commited revision: 18 > > Expected output would contain the error message as ErrMsg (and pass, as > the collection of ErrMsg would not be empty). > > Here's the test code: > > package org.tigris.subversion.javahl; > > import static org.junit.Assert.*; > > import java.util.ArrayList; > import java.util.List; > import org.junit.Test; > > public class SVNClientTest { > > private List<NotifyInformation> notifications = new > ArrayList<NotifyInformation>(); > > @Test > public void testCommit() { > SVNClientInterface client = new SVNClient(); > System.out.println(client.getVersion()); > Notify2 notify = new Notify2() { > > @Override > public void onNotify(NotifyInformation info) { > System.out.println("Acttion: " + > info.getAction()); > System.out.println("ChangelistName: " + > info.getChangelistName()); > System.out.println("ContentState: " + > info.getContentState()); > System.out.println("ErrMsg: " + > info.getErrMsg()); > System.out.println("Kind: " + info.getKind()); > System.out.println("LockState: " + > info.getLockState()); > System.out.println("MimeType: " + > info.getMimeType()); > System.out.println("Path: " + info.getPath()); > System.out.println("PathPrefix: " + > info.getPathPrefix()); > System.out.println("PropState: " + > info.getPropState()); > System.out.println("Revision: " + > info.getRevision()); > System.out.println("Lock: " + info.getLock()); > System.out.println("MergeRange: " + > info.getMergeRange()); > System.out.println("Source: " + > info.getSource()); > > notifications.add(info); > } > }; > > client.notification2(notify); > > String[] paths = new String[] { "D:/Martin/workspace/test" }; > String[] changeLists = new String[] {}; > try { > long result = client.commit(paths, "test", > Depth.infinity, false, > false, null, null); > if (result > 0) { > System.out.println("Commited revision: " + > result); > } > } catch (ClientException e) { > e.printStackTrace(); > } > > List<String> errors = new ArrayList<String>(); > for (NotifyInformation info : notifications) { > if (info.getErrMsg() != null) > errors.add(info.getErrMsg()); > } > assertNotSame(0, errors.size()); > } > } > > The described error has been reproduced on the following environments: > > Clients: > OS: Windows XP, Windows Vista > Subversion Command Line: 1.6.17, binaries from CollabNet > Subclipse: 1.6.18 > JavaHL: provided by Subclipse > > Server: > - same as client > - Subversion 1.6.9 on AIX 5.2 > > Repository access: > - file:// > - https:// > > Martin