Branko Čibej wrote:
>>   * 4556 Replace 'svn youngest' with another UI
>>     Not much discussion here. I propose we do either option 2 ('svnmucc
>>     youngest'), or rip out the subcommand entirely since there are lots
>>     of ways to the info.
> 
> I'm going to have a go at an alternative solution; see
> ^/subversion/branches/svn-info-detail/BRANCH-README

+1 to that.

For easier visibility, here's a copy of the BRANCH-README:

[[[
This branch will be used to implement an alternative solution for
the problem described in issue #4299 in order to solve issue #4556.

Instead of 'svn youngest', we'll implement an extension to 'svn info',
as described in option 1. of issue #4556, as follows:

  - Add a --detail=FIELD option to 'svn info' that will cause it to
    display only the value of FIELD and nothing else; for example:

        $ svn info ^/subversion/trunk --detail=revision 1660035
        $ svn info ^/subversion/trunk --detail=last-changed-rev 1660014

    and so on. 

- The --detail option is incompatible with the --xml option

- Initially, only a few field values will be supported with
    --detail; revision, last-changed-rev, url, relative-url,
    repository-root; maybe a few more. 

- The 'svn youngest' command will be removed.
]]]

Hooray, more command-line UI designing.

I'm not going to bikeshed about the option name, but how should we choose the 
spelling of the option values (like "=last-changed-rev")?

  * Match the keys of the plain "svn info" output?

  * Match the XML element/attribute names?

  * Choose the argument values independently of existing (XML and plain) 
outputs?

If we match the keys of the plain "svn info" output, would that be in the 
current locale or the C locale or both, and with spaces (optionally?) 
translated to "-"? Lower case?

  --detail=revision -> 123
  --detail=last-changed-rev -> 456
  --detail=last-changed-author -> me

The XML element/attribute names are locale-independent, which is good for 
scripting, and simple to implement. On the down side, they are nested: <entry 
revision="123">...<commit revision="456"><author>me</author></commit></entry>, 
so we might have (always within an <entry>)

  --detail=#revision -> 123
  --detail=commit#revision -> 456
  --detail=commit.author -> me

Or simplify the syntax to use "-" always as the separator between elements 
and/or attributes, assuming we won't have any that clash:

  --detail=revision -> 123
  --detail=commit-revision -> 456
  --detail=commit-author -> me

Choosing an independent set of fixed identifiers is in some ways the easiest 
approach, but is that just because it requires the least thought at the design 
stage? We'd make them non-localized, for scripting purposes, I assume?

- Julian

Reply via email to