(rcs.info)Still missing


Next: Reporting bugs Prev: File format Up: Hacking
Enter node , (file) or (file)node

3.2 Still missing
=================

RCS is still missing some features.  The following is an unordered list
of “to-do musings” kept by the RCS maintainers.  If you would like to
hack on an item, Note: Reporting bugs.

   • Add an option to rcsmerge so that it can use an arbitrary program
     to do the 3-way merge, instead of the default merge.  Likewise for
     rcsdiff and diff.  It should be possible to pass arbitrary options
     to these programs, and to the subsidiary co invocations.

   • Add format options for finer control over the output of ident and
     rlog.  E.g.  there should be an easy way for rlog to output lines
     like ‘src/main.c 2.4 wft’, one for each locked revision.  rlog
     options should have three orthogonal types: selecting files,
     selecting revisions, and selecting rlog format.

   • Add format options for finer control over the output of keyword
     strings.  E.g.  there should be some way to prepend ‘@(#)’, and
     there should be some way to change ‘$’ to some other character to
     disable further substitution.  These options should make the
     resulting files uneditable, like ‘-kv’.

   • Add long options, e.g.  ‘--keyword-substitution’.  Unfortunately
     RCS’s option syntax is incompatible with getopt.  Perhaps the best
     way is to overload rcs, e.g., ‘rcs diff --keyword-substitution=old
     file’ instead of ‘rcsdiff -ko file’.

   • ‘rlog -rM:N’ should work even if M and N have different numbers of
     fields, so long as M is an ancestor of N or vice versa.

   • rcs should evaluate options in order; this allows ‘rcs -oS -nS’.

   • Be able to redo your most recent checkin with minor changes.

   • ‘co -u’ shouldn’t complain about a ‘+w’ working file if contents
     don’t change.

   • Add a ‘-’ option to take the list of file names from standard
     input.  Perhaps the file names should be null-terminated, not
     newline-terminated, so that those that contain newlines are handled
     properly.

   • Permit multiple option–filename pairs, e.g., ‘co -r1.4 a -r1.5 b’.

   • Add an option to break a symbolic link to an RCS file, instead of
     breaking the hard link that it points to.

   • Add ways to specify the earliest revision, the most recent
     revision, the earliest or latest revision on a particular branch,
     and the parent or child of some other revision.

   • If a user has multiple locks, perhaps ci should fall back on the
     method of ‘ci -k’ to figure out which revision to use.

   • Add an option to rcsclean to clean directories recursively.

   • Write an rcsck program that repairs corrupted RCS files, much as
     fsck repairs corrupted file systems.  For example, it should remove
     stale lock files.

   • Update the date parser to use the more modern ‘getdate.y’ by
     Bellovin, Salz, and Berets, or the even more modern ‘getdate’ by
     Moraes.  None of these getdate implementations are as robust as
     RCS’s old warhorse in avoiding problems like arithmetic overflow,
     so they’ll have to be fixed first.  (Perhaps we can use gnulib
     module ‘getdate’.)

   • Break up the code into a library so that it’s easier to write new
     programs that manipulate RCS files, and so that useless code is
     removed from the existing programs.  For example, the rcs command
     contains unnecessary keyword substitution baggage, and the merge
     command can be greatly pruned.

   • Make it easier to use your favorite text editor to edit log
     messages, etc., instead of having to type them in irretrievably at
     the terminal.

   • Let the user specify a search path for default branches, e.g., to
     use L as the default branch if it works, and M otherwise.  Let the
     user require that at least one entry in the search path works.  Let
     the user say that later entries in the search path are read only,
     i.e.  one cannot check in changes to them.  This should be an
     option settable by ‘RCSINIT’.

   • Add a way for a user to see which revisions affected which lines.

   • Have ‘rlog -nN F’ print just the revision number that N translates
     to.  E.g., ‘rlog -nB. F’ would print the highest revision on the
     branch B. Use this to add an option ‘-bB’ to rcsbranch, to freeze
     the named branch.  This should interact well with default branches.

   • Add a co option that prints the revision number before each line,
     as SCCS’s ‘get -m’ does.  [I implemented this for Emacs 22 as a
     subroutine of ‘vc-annotate’, q.v.  —ttn]


automatically generated by info2www version 1.2.2.9