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

Re: [PATCH] Inconsistent behavior in cat command

From: Noorul Islam K M <noorul_at_collab.net>
Date: Wed, 05 Jan 2011 19:47:25 +0530

Noorul Islam K M <noorul_at_collab.net> writes:

> Julian Foad <julian.foad_at_wandisco.com> writes:
>
>> On Thu, 2010-12-02, Noorul Islam K M wrote:
>>
>>> Noorul Islam K M <noorul_at_collab.net> writes:
>>>
>>> > When I was trying to come up with a patch for issue 3713, I observed the
>>> > following.
>>> >
>>> > For example I have two files 1.txt and 2.txt in a repository located at
>>> > file:///tmp/testrepo
>>> >
>>> > svn cat behaves differently for local paths and URLs. See the
>>> > illustration below.
>>> >
>>> > noorul_at_noorul:/tmp/wc/testrepo$ svn cat 1.txt 2.txt
>>> > 1
>>> > 2
>>> >
>>> > A) Local non-existent target followed by existing target
>>> >
>>> > noorul_at_noorul:/tmp/wc/testrepo$ svn cat 3.txt 1.txt
>>> > svn: warning: '/tmp/wc/testrepo/3.txt' is not under version control
>>> > 1
>>> >
>>> > B) Non-existent URL followed by existing URL
>>> >
>>> > noorul_at_noorul:/tmp/wc/testrepo$ svn cat ^/3.txt ^/1.txt
>>> >
>>> > svn: File not found: revision 1, path '/3.txt'
>>> >
>>> >
>>> > In case A, even though the first target was non-existent it performs cat
>>> > operation on the second target but in the case of B, svn errors out at
>>> > the first failure itself.
>>> >
>>> > I am not sure about behavior of other svn commands which accepts
>>> > multiple targets. When I discussed this Julian in IRC, he said a
>>> > discussion is needed to come up with standardized behavior across svn
>>> > commands. Any thoughts?
>>> >
>>>
>>> Any updates?
>>
>> Hi Noorul.
>>
>> A good way to start a discussion of this sort is to:
>>
>> list the possible solutions;
>> find out and describe how the other subcommands behave;
>
> I checked 'svn info' and it behaves the same way for both wc and URL.
>
>> say what you think is good and bad about each possible solution;
>> say which solution you think we should choose.
>>
>> That will make it much easier for readers to respond.
>
> I figured out that for non-existent URL path, svn_client_cat2 returns
> SVN_ERR_FS_NOT_FOUND which needs to be caught by svn_cl__try. Therefore
> I passed this code as one the arguments.
>
> Attached is the patch. All tests pass with this patch.
>
> Log
>
> [[[
> Make 'svn cat' not to error out when one of the URL targets do not
> exist.
>
> * subversion/svn/cat-cmd.c
> (svn_cl__cat): Pass SVN_ERR_FS_NOT_FOUND to svn_cl__try in order to
> catch the error, print warning and proceed with other targets.
>
> Patch by: Noorul Islam K M <noorul{_AT_}collab.net>
> ]]]
>
> Thanks and Regards
> Noorul
>
> Index: subversion/svn/cat-cmd.c
> ===================================================================
> --- subversion/svn/cat-cmd.c (revision 1053010)
> +++ subversion/svn/cat-cmd.c (working copy)
> @@ -78,6 +78,7 @@
> SVN_ERR_UNVERSIONED_RESOURCE,
> SVN_ERR_ENTRY_NOT_FOUND,
> SVN_ERR_CLIENT_IS_DIRECTORY,
> + SVN_ERR_FS_NOT_FOUND,
> SVN_NO_ERROR));
> }
> svn_pool_destroy(subpool);

Initially this thread was monitored by Julian and now I found out that
he is busy. It will be great if someone else can take a look at this
one.

Thanks and Regards
Noorul
Received on 2011-01-05 15:20:08 CET

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.