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

Re: [RFC]: Make svnlook (pg|pl) output format mimic svn (pg|pl) & add --show-inherited-props option

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Mon, 19 Nov 2012 23:27:48 +0100

On Mon, Nov 19, 2012 at 9:04 PM, Paul Burba <ptburba_at_gmail.com> wrote:
> Recently Johan proposed supporting multiple targets for svnlook
> propget: http://svn.haxx.se/dev/archive-2012-11/0439.shtml
>
> One of the ideas that came of this was to make the output of 'svnlook
> (pl|pg)' mimic the output of 'svn (pl|pg)'. This dovetails nicely
> with my desire to add the ''show-inherited-props" option to svnlook
> (pl|pg): http://svn.haxx.se/dev/archive-2012-11/0432.shtml

+1 in general. Thanks for taking this on.

I have a couple of questions though ... see below.

> The question is, how far do we go with the backwards incompatible
> changes to the output of svnlook (pg|pl)? Here's what we have today
> (skip ahead to "PROPOSED CHANGES:" if you already know all this):
>
> ### svn proplist Today: ###
>
>>svn pl A\B
> Properties on 'A\B':
> svn:auto-props
> svn:global-ignores
>
>>svn pl A\B -v
> Properties on 'A\B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> svn:global-ignores
> *.pyc
>
>>svn pl A\B --show-inherited-props
> Properties inherited from
> 'C:\SVN\src-trunk-2\Debug\subversion\tests\cmdline\svn-test-work\working_copies\autoprop_tests-30':
> svn:auto-props
> Properties on 'A\B':
> svn:auto-props
> svn:global-ignores

So this means that you don't show which node is actually the "target"
of these inherited props. What happens when you provide multiple
arguments ('svn pl A/B C/D --show-inherited-props')? Can a user see
(or a tool parse) which inherited props apply to which, or do they
have to depend on the order? What if one of the targets doesn't have
properties of its own (so no 'Properties on X' line), but does have
inherited props ... how will you know on which node they apply?

Maybe the output should become something like:

Properties on 'A\B' inherited from
'C:\SVN\src-trunk-2\Debug\subversion\tests\cmdline\svn-test-work\working_copies\autoprop_tests-30':
  svn:auto-props
Properties on 'A\B':
  svn:auto-props
  svn:global-ignores

?

The same applies to propget.

>>svn pl A\B --show-inherited-props -v
> Properties inherited from
> 'C:\SVN\src-trunk-2\Debug\subversion\tests\cmdline\svn-test-work\working_copies\autoprop_tests-30':
> svn:auto-props
> *.py=svn:eol-style=native
> *.cpp=svn:eol-style=native
>
> Properties on 'A\B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> svn:global-ignores
> *.pyc
>
> ### svnlook proplist Today: ###
>
>>svnlook pl autoprop_tests-30 A/B
> svn:global-ignores
> svn:auto-props
>
>>svnlook pl autoprop_tests-30 A/B -v
> svn:global-ignores : *.pyc
>
> svn:auto-props : *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> ### svn propget Today: ###
>
>>svn pg svn:auto-props ^^/A/B
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native

Note that this output (without -v) changes when there are multiple targets:

>svn pg svn:auto-props A/B C/D
A/B - *.c=svn:eol-style=native
*.h=svn:eol-style=native

C/D - *.py=svn:eol-style=native
*.pl=svn:eol-style=native

Or with a single-line prop:

>svn pg svn:eol-style foo.txt bar.txt
foo.txt - native
bar.txt - native

This output isn't exactly great (not parseable for multiline props),
but it's okay for single-line props. In any case, we should also
define what this (multi-arg but without -v) looks like in the case of
'svnlook pg'.

>>svn pg svn:auto-props ^^/A/B -v
> Properties on 'file:///C:/SVN/src-trunk-2/Debug/subversion/tests/cmdline/svn-test-work/repositories/autoprop_tests-30/A/B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
>>svn pg svn:auto-props A\B --show-inherited-props
> . - *.py=svn:eol-style=native
> *.cpp=svn:eol-style=native
>
> A\B - *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
>>svn pg svn:auto-props A\B --show-inherited-props -v
> Properties inherited from '.':
> svn:auto-props
> *.py=svn:eol-style=native
> *.cpp=svn:eol-style=native
>
> Properties on 'A\B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> ### svnlook propget Today: ###
>
>>svnlook pg autoprop_tests-30 svn:auto-props A/B
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> (svnlook pg -v is not currently supported)
>
> PROPOSED CHANGES:
>
> ### FORMAT CHANGE: 'svnlook pl' outputs results similar to 'svn pl':
>>svnlook pl autoprop_tests-30 A/B
> Properties on '/A/B':
> svn:auto-props
> svn:global-ignores
>
> ### FORMAT CHANGE: 'svnlook pl -v' outputs results like 'svn pl -v'
>>svnlook pl autoprop_tests-30 A/B -v
> Properties on '/A/B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
> svn:global-ignores
> *.pyc
>
> ### NEW OPTION: Add support for 'svnlook pl --show-inherited-props'
> with output similar to 'svn pl --show-inherited-props':
>>svnlook pl autoprop_tests-30 A/B --show-inherited-props
> Properties inherited from '/':
> svn:auto-props
> Properties on '/A/B':
> svn:auto-props
> svn:global-ignores
>
> ### NEW OPTION: As above, but with -v:
>>svnlook pl autoprop_tests-30 A/B --show-inherited-props -v
> Properties inherited from '/':
> svn:global-ignores
> *.pyc
> Properties on '/A/B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
> Properties on '/A/B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> ### NO CHANGE: 'svnlook pg' stays the same:
>>svnlook pg autoprop_tests-30 svn:auto-props A/B
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> ### NEW OPTION: Add support for 'svnlook pg -v' with output similar to
> 'svn pg -v':
>>svnlook pg autoprop_tests-30 svn:auto-props A/B -v
> Properties on '/A/B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> ### NEW OPTION: Add support for 'svnlook pg --show-inherited-props'
> with output similar to 'svn pg --show-inherited-props':
>>svnlook pg autoprop_tests-30 svn:auto-props A/B --show-inherited-props
> . - *.py=svn:eol-style=native
> *.cpp=svn:eol-style=native
>
> A\B - *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> ### As above, but with new -v option:
> svnlook pg autoprop_tests-30 svn:auto-props A/B --show-inherited-props -v
> Properties inherited from '/':
> svn:auto-props
> *.py=svn:eol-style=native
> *.cpp=svn:eol-style=native
>
> Properties on '/A/B':
> svn:auto-props
> *.c=svn:eol-style=native
> *.h=svn:eol-style=native
>
> So the only backwards incompatible changes we'd be making compared to
> 1.7 are for 'svnlook pl' and 'svnlook pl -v', everything else proposed
> above is the result of a new option.
>
> Is this acceptable?

Yep, looks fine to me.

-- 
Johan
Received on 2012-11-19 23:28:43 CET

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