Bruce, I'm now better able to articulate what I was trying to say
before. Sorry it took a while to get it in words:
The main problem the client team faces right now is describing the
user interface spec: exactly what commands are supported, exactly what
options, precisely how everything behaves, etc.
This is essentially a thinking and prose-writing task. You may,
personally, find that building an AutoOpts executable helps you with
this task, and that's fine. But that's a private thinking method,
just as some people find it helpful to to pace around a room with
their hands behind their backs. AutoOpts templates are not useful for
others right now, because it can distract us into learning AutoOpts
instead of concentrating on the task at hand.
The thing we need to do is figure out the options we want, and *then*
decide how they will be implemented technically. It may well be that
AutoOpts is a good solution. It may also be that creating
apr_getopt_long() is a good solution. Or it may be that using GNU
getopt and GPL'ing all of Subversion turns out to be the best thing.
Whatever -- the point is that concentrating on *how* we implement the
options instead of what options we're implementing is putting the cart
before the horse.
So please do what Brian has been doing, editing the text in
subversion/client/README to lay down a spec. That's something we can
all review without having to learn a new tool. AutoOpts looks like a
very cool thing, but it's not what the team should collectively be
thinking about right now.
Thanks,
-Karl
Bruce Korb <bkorb@cruzio.com> writes:
> Attached is a tarball used to create an executable that
> processes a lot of options and does nothing else. The
> ia32 Linux binary is at:
>
> ftp://autogen.linuxave.net/pub/svn
>
> To make changes in option naming, flag character acceptance
> etc., change the *opts.def files, rebuild and everything is
> up to date.
>
> It will do stuff like this:
>
> > $ ./svn help
> > What command do you need help with?
> > You must type the command you need help with along with the `--help'
> > command line option. Choose from the following commands:
> >
> > ad add ann annotate branch checkout ci
> > co commit copy cp del delete di
> > dif diff exit help im imp import
> > lo log mv new pget propget propset
> > pset quit rdiff rename rm stat status
> > tag up update
>
> > $ ./svn exit --help
> > USAGE: exit
> > This command is provided as a means of exiting `svn' when it is being
> > used to process a series of commands.
>
> > $ ./svn log --more-help
> > svn_log - Print out history information for files
> > USAGE: svn log [ -<flag> [<val>] | --<name>[{=| }<val>] ]... <file> [ ... ]
> > Flg Arg Option-Name Description
>
> << I need to tweak AutoOpts here... :->>
>
> >
> > These options are uniuqe to this command:
> >
> > Flg Arg Option-Name Description
> > -b no default-branch-only Only list revisions on the default branch.
> > -d YES date-range Specify dates (D1<D2 for range, D for latest before).
> > -h no header-only Only print header.
> > -N no no-tags Do not list tags.
> > -R no file-only Only print name of RCS file.
> > -r YES revisions Only list revisions REVS.
> > -s YES states Only list revisions with specified states.
> > -t no text-and-header-only Only print header and descriptive text.
> > -w YES for-logins Only list revisions checked in by specified logins.
> > -R YES repository SVN repository identifier
> >
> > These are the common options that apply to all commands:
> >
> > Flg Arg Option-Name Description
> > -a no authenticate Authenticate all communication.
> > -n no dry-run Do not change any files.
> > -e YES editor Edit messages with EDITOR.
> > -x no encrypt Encrypt all communication.
> > -k YES keyword-expansion Set/Use keyword expansion
> > -f no no-load-opts Do not read the `~/.cvsrc' file.
> > -l no no-log Do not log in CVSROOT/history file.
> > -q no quiet Alias for: --verbose=quiet
> > -r no read-only Make new working files read-only.
> > - prohibits these options:
> > writable
> > -s YES set-var Set a user variable to a value.
> > -T YES tempdir Put temporary files in TEMPDIR.
> > -t no trace Trace CVS. Alias for: --verbose=trace
> > -V KWd verbose What level of chatter?
> > -w no writable Make new working files read-write.
> > - prohibits these options:
> > read-only
> > -z YES zip-level Set the compression level.
> >
> > These options are common to many commands:
> >
> > Flg Arg Option-Name Description
> > -l no local-dir Local; run only in current working directory.
> > - prohibits these options:
> > recursive
> > -R no recursive Operate recursively (default).
> > - prohibits these options:
> > local-dir
> >
> > Auto-supported Options:
> >
> > Flg Arg Option-Name Description
> > -H no help Display usage information and exit
> > -! no more-help Extended usage information passed thru pager
> > opt save-opts Save the option state to an rc file
> > -L YES load-opts Load options from an rc file
> > - disabled as --no-load-opts
> > - may appear multiple times
> >
> > Options may be specified by doubled hyphens and their name
> > or by a single hyphen and the flag character/option value.
> >
> > The following option preset mechanisms are supported:
> > - reading file $$/../share/svn/svnrc/.svnrc
> > - reading file $HOME/.svnrc
> > - reading file ./.svnrc
> > - examining environment variables named SVN_LOG_*
> >
> > The valid verbose option keywords are:
> > silent
> > quiet
> > progress
> > activity
> > detail
> > trace
Received on Sat Oct 21 14:36:12 2006