help-rcs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

dispatch program


From: Thien-Thi Nguyen
Subject: dispatch program
Date: Thu, 03 Nov 2011 13:34:24 +0100

The next release of GNU RCS will install a dispatch program.
This message is to air some thoughts on it with hopes that
feedback can inform further progress.  The dispatch program is
called from the shell; its role is to invoke the other commands.

First, the name: grcs. I chose this for two reasons:

- The logical choice "rcs" is already a command.  Overloading
  "rcs" is possible, but that would introduce the need to
  distinguish between "old rcs" and "new rcs" at runtime.
  A new name is much simpler.

- The "g" could stand for GNU.  This helps distinguish GNU RCS
  from other RCS implementations.

That said, i am open to suggestions for another name.  Next: the
command selection.  At time of writing, the following programs
have been converted to be invokable by the dispatch program:

- ci
- co
- rcs
- rcsclean
- rcsdiff
- rcsmerge
- rlog

Missing is ident(1) and merge(1), the rationale being that they
are logically not necessarily tied to RCS.  That is, these two
are useful outside RCS proper.  For example, i can imagine
ident(1) being migrated to its own project, in the process
unifying implementations from CVS, Subversion, etc, and then
adding customization features.  (Any budding hackers interested?
What are you waiting for?)  Likewise, it would be nice to see
merge(1) move into GNU diffutils (and furthermore exposed as a
shared-object library, if we permit ourselves some wishful
thinking...).

The opposing argument (that both these should also be converted)
is supported by uniformity and simplicity.  These are gut-feel
qualities that nonetheless weigh heavily on the aesthetically
sensitive.  I picture users converting scripts to use "grcs rlog"
but not "grcs ident" grumbling about the maintainer's
arbitrariness, not having read (or perhaps not having shared in
the imagination of) this message, for example.  What do people
think?

Lastly: standalone compatability.  For compatability, standalone
executables in $(bindir), such as /usr/bin/ci are installed.
These are implemented as simple shell scripts that invoke the
dispatch program.  (If you wonder why not symlinks, see the GNU
Coding Standards, section "Standards for Interfaces Generally".)
A new configure script option ‘--disable-standalone-compat’
inhibits their installation, for those ready to make the jump.
The plan is to keep the default enabled for RCS 5.x and remove it
(and standaldone programs) in 6.x.

Feedback welcome.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]