On Tue, May 17, 2011 at 11:49 AM, Daniel Shahaf <d.s_at_daniel.shahaf.name> wrote:
> Hyrum K Wright wrote on Tue, May 17, 2011 at 07:21:43 +0000:
>> On Tue, May 17, 2011 at 7:51 AM, Daniel Shahaf <d.s_at_daniel.shahaf.name> wrote:
>> > hwright_at_apache.org wrote on Mon, May 16, 2011 at 15:36:24 -0000:
>> >> Author: hwright
>> >> Date: Mon May 16 15:36:24 2011
>> >> New Revision: 1103771
>> >>
>> >> URL: http://svn.apache.org/viewvc?rev=1103771&view=rev
>> >> Log:
>> >> Convert a bit of the recursive propget to use absolute paths, by doing path
>> >> relativifcation in the command line program, where it belongs.
>> >>
>> >> Note: I *think* this is backwards compatible, since we promise paths, but
>> >> don't specify absolute or relative in the docs. If somebody has an alternative
>> >> interpretation, we can do the API-rev dance.
>> >>
>> >> * subversion/svn/propget-cmd.c
>> >> (print_properties): Make a relative path from an absolute one, if possible.
>> >>
>> >> * subversion/svn/propedit-cmd.c
>> >> (svn_cl__propedit): Fetch the property from the hash via absolute path.
>> >
>> > How can it be a backwards compatible API change if you had to change the
>> > API consumer (the cmdline client)?
>>
>> If the consumer depends upon an (undocumented) implementation detail,
>> you can bet it'll need to change when those details change. (Example:
>> anybody relying upon the entries-file implementation detail is going
>> to have a hard time with 1.7.)
>>
>> I maintain that if we didn't document the behavior, existing clients
>> are depending on an implementation detail (which they shouldn't be
>> doing). This doesn't mean we can't rev the API to make things easier
>> for them, but it does mean we are well within our rights to change the
>> implementation and have things break for the consumer.
>>
>
> Two things:
>
> * Could we have written the cmdline client in 1.6 in a way that's
> oblivious of the absoluteness/relativeness of the hash keys?
>
> * Concretely: the svn_client_propget3() docstring states that
> the keys will be prefixed by @a TARGET. That seems to me to
> imply svn_dirent_join(TARGET, ...) --- without changing whether
> TARGET is absolute or relative.
Yes. I don't have a strong opinion in this discussion, but completely
objectively, one could also say that the documentation was flawed (or
inaccurate), i.e. a bug in the docstring. It talked about a PATH, but
every consumer deduced it had to be a relative path ...
--
Johan
Received on 2011-05-17 11:34:55 CEST