[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Bug: JavaHL does not transmie post-commit error messages to caller (was: Fwd: Re: JavaHL bindings - post-commit error messages)

From: Gavin Baumanis <gavinb_at_thespidernet.com>
Date: Mon, 22 Aug 2011 20:12:46 +1000

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.kutter_at_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.kutter_at_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
Received on 2011-08-22 12:13:41 CEST

This is an archived mail posted to the Subversion Dev mailing list.