Daniel Shahaf <d...@daniel.shahaf.name> writes: > Noorul Islam K M wrote on Thu, Dec 23, 2010 at 15:53:58 +0530: > >> >> Forwarding one of the threads to dev@ with [PATCH] tag so that this gets >> attention of more people. Julian said on IRC, >> >> <julianf> noorul: Now we're into the realm of changing behaviour. If the >> error >> code returned from libsvn_client is different in 1.7 from what it >> was in 1.6, maybe that indicates a backward-compatibility problem >> with our APIs. I think this needs more review. It is not so simple >> as just changing an error message. >> <julianf> noorul: Please could you post this again as a new thread, with >> subject line starting with "[PATCH]"? I'd like other people to >> review this. Thanks. >> > > So, to ask the obvious: > > What error codes (err->apr_err) were returned in 1.6.x, and what > error codes are returned now? > > Noorul: you can use tools/dev/which-error.py to convert numeric error > codes into symbolic ones.
In 1.6 for a non-existent wc-entry the API returns 00150000 SVN_ERR_ENTRY_NOT_FOUND With 1.7 00155010 SVN_ERR_WC_PATH_NOT_FOUND > > (more below) > >> Pasting here the log once more so that there is some clarity about the >> patch attached. >> >> [[[ >> >> Make "svn info" to display the actual error message returned by API when >> one of the targets is a non-existent URL or wc-entry. >> >> * subversion/svn/info-cmd.c >> (svn_cl__info): Display the actual error message returned by >> svn_client_info3() instead of a custom one. Catch error >> SVN_ERR_WC_PATH_NOT_FOUND instead of SVN_ERR_UNVERSIONED_RESOURCE >> and SVN_ERR_ENTRY_NOT_FOUND for non-existent wc-entry. >> >> * subversion/tests/cmdline/basic_tests.py >> (info_nonexisting_file): Modify test case >> >> Patch by: Noorul Islam K M <noorul{_AT_}collab.net> >> ]]] >> >> >> Thanks and Regards >> Noorul >> > >> Index: subversion/tests/cmdline/basic_tests.py >> =================================================================== >> --- subversion/tests/cmdline/basic_tests.py (revision 1051915) >> +++ subversion/tests/cmdline/basic_tests.py (working copy) >> @@ -2260,7 +2260,8 @@ >> >> # Check for the correct error message >> for line in errput: >> - if re.match(".*\(Not a valid URL\).*", line): >> + if re.match(".*" + idonotexist_url + ".*non-existent in revision 1.*", >> + line): >> return >> >> # Else never matched the expected error output, so the test failed. >> Index: subversion/svn/info-cmd.c >> =================================================================== >> --- subversion/svn/info-cmd.c (revision 1051915) >> +++ subversion/svn/info-cmd.c (working copy) >> @@ -566,25 +566,15 @@ >> { >> /* If one of the targets is a non-existent URL or wc-entry, >> don't bail out. Just warn and move on to the next target. */ >> - if (err->apr_err == SVN_ERR_UNVERSIONED_RESOURCE >> - || err->apr_err == SVN_ERR_ENTRY_NOT_FOUND) >> + if (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND || >> + err->apr_err == SVN_ERR_RA_ILLEGAL_URL) >> { >> - SVN_ERR(svn_cmdline_fprintf >> - (stderr, subpool, >> - _("%s: (Not a versioned resource)\n\n"), >> - svn_path_is_url(truepath) >> - ? truepath >> - : svn_dirent_local_style(truepath, pool))); >> + char errbuf[256]; >> + >> + SVN_ERR(svn_cmdline_fprintf( >> + stderr, subpool, "svn: %s\n\n", >> + svn_err_best_message(err, errbuf, sizeof(errbuf)))); > > Why do you have to place the "svn: " prefix here explicitly? Normally > svn_handle_error2() would do that for you. This is a red flag ("is > a wheel being reinvented here?") for me. > We are actually consuming the error here to print it and proceed with the other targets. Thanks and Regards Noorul >> } >> - else if (err->apr_err == SVN_ERR_RA_ILLEGAL_URL) >> - { >> - SVN_ERR(svn_cmdline_fprintf >> - (stderr, subpool, >> - _("%s: (Not a valid URL)\n\n"), >> - svn_path_is_url(truepath) >> - ? truepath >> - : svn_dirent_local_style(truepath, pool))); >> - } >> else >> { >> return svn_error_return(err);