NEWS for GNU RCS (Revision Control System) See the end for copying conditions. - 5.10.1 | 2022-02-02 - distribution now .tar.lz only If you have GNU tar, you can use "tar xf" and it will DTRT. If not, you can use "lzip -dc TARBALL | tar xf -" to unpack it. - bug fix: handle unexpected byte in edit script (rlog) Previously, a comma-v file w/ an unexpected (non-'a', non-'d') dispatch byte in the edit script would cause rlog to segfault. Now, rlog displays an error message w/ diagnostic and aborts. The segfault is a regression brought by RCS 5.8 (2011-08-30). RCS 5.7 (1995-06-16) would abort correctly, but used a different diagnostic message -- "bad diff output line" -- that did not include line number information. Thus, because of the new (line number) info, new test t303 fails for RCS 5.7 as well. Test number 3xx is for rlog functionality and not a regression, even though the problem has regression nature, too. - portability fix: use ‘SIGSTKSZ’ more gingerly Some versions of this element cannot be used in the CONDITION portion of a preprocessor-conditional (‘#if’) construct. No problem, we found another way. - misc portability tweaks via gnulib As usual, GNU gnulib provides the right amount of buffer between the Ideal and the Real worlds. Thanks, gnulib. - bootstrap/maintenance tools upgraded: GNU gnulib 2022-01-27 07:00:41 GNU texinfo 6.8 GNU Automake 1.16.5 GNU Autoconf 2.71 as before: (none) - 5.10.0 | 2020-10-20 - bug fixes - RCS file search skipped RCS/FILENAME by default The default set of candidate filenames for the RCS file is: RCS/FILENAME,v RCS/FILENAME FILENAME,v RCS 5.8 (released 2011-08-30) introduced a bug which caused the default RCS file search to skip RCS/FILENAME. Regression fixed. - ‘rlog -w’ behaved like ‘rlog’ (sans ‘-w’) RCS 5.8 (released 2011-08-30) introduced a bug which caused ‘rlog -w’ (without any logins specified) to fail to default to the user login. Instead it behaved as if option ‘-w’ were omitted entirely. The cases where logins are specified (e.g., ‘rlog -wjrhacker’) were not affected. - missing string in comma-v detected, diagnosed Previously, if foo,v contained fragment: 1.1 log text @@ i.e., there was no string value following the ‘log’ keyword, then rlog (et al) would interpret that as an "empty log message" instead of as a violation of the RCS file format grammar, which stipulates that a string value must follow the keywords ‘desc’, ‘log’ and ‘text’ -- (info "(rcs) comma-v grammar"). Now, such a situation causes rlog (et al) to abort w/ message "missing string after KEYWORD" (KEYWORD ∈ {desc, log, text}). - subsecond resolution maintained for ‘-d’, ‘-T’ An RCS ‘delta’ includes a ‘date’ component w/ second (whole number) resolution. Previously, on filesystems that support subsecond (fractional) resolution for the file modification time (aka "mtime"), RCS commands given the ‘-d’ and/or ‘-T’ options would disregard, on read, and specify 0 (zero), on write, the fractional mtime. Now, RCS preserves subsecond mtime in those cases. More details in new manual section -- (info "(rcs) Stamp resolution"). - portability fixes - now buildable under ‘gcc -std=c11’ (default for GCC 5) RCS previously failed to build under ‘-std=c11’, which happens to be the default mode of GCC 5. In particular, ‘-std=c11’ is more strict about function attributes syntax than ‘-std=c99’. Now, the offending code has been rectified. (Specifically, attribute ‘_Noreturn’ now is at the start of a func decl.) - threads support RCS itself is clueless about threads, but it uses gnulib, which may or may not require threads support. This manifests as the configure script options ‘--enable-threads=MODEL’ as well as ‘--disable-threads’. Previously, "make" would ignore MODEL (even implicitly), acting as if ‘--disable-threads’ were specified. Now, it takes into account MODEL by propagating makefile var ‘LIBTHREAD’. - consult ‘USER’ first if ‘LOGNAME’ read-only To determine the user (login) name in the absence of a specific command-line option, RCS normally checks first the env var ‘LOGNAME’ and second, ‘USER’. Alas, this is unworkable under AIX, where ‘LOGNAME’ is read-only. So now, if the configure script finds ‘LOGNAME’ to be read-only, it arranges to build RCS to check ‘USER’ first and then ‘LOGNAME’. See README. - configure script avoids ‘date -r’ Unfortunately ‘date -r’ is not POSIX. This made AIX unhappy. - other AIX accomodation The AIX compiler complains about the implicit casting that occurs when returning a pointer from a function whose return type is ‘bool’. So, we are now explicit. - documentation improvements - docfix: add "Log message option" to Detailed Node Listing Probably Emacs by now has some automagic way to sync the ‘@detailmenu’ section w/ the text body... hmmm. - style change due to ‘-zZONE’ option Specifying option ‘-zZONE’ to ‘rcs log’ changes the date output style to use hyphens (ISO) instead of slashes (YYYY/MM/DD). - rlog, use with CVS Since RCS 5.8 (released 2011-08-30), there have been sporadic reports of rlog (aka "rcs log") failing with CVS files. The manual now addresses this -- (info "(rcs) comma-v particulars"). - delim-separated list GNU RCS has always supported comma to separate items in a list (e.g., ‘rcs frob -o1.1,2.2’ to remove (or "outdate") revisions 1.1 and 2.2). But did you know that most places a comma is welcome and you can use other delimiter characters as well? Read all about it -- (info "(rcs) Delim-separated list"). - (style) pargraphs no longer indented This looks nicer (IMHO) for Info and Text output formats. - testing improvements Many new tests and test cases for existing tests were added, to catch regressions and exercise infrequent code paths. For "make check" (locally), function coverage is 97.3% (considered "high") and line coverage is 84.9% (considered "medium"), per lcov. - bootstrap/maintenance tools upgraded: GNU gnulib 2020-10-19 23:37:09 GNU texinfo 6.7 GNU Automake 1.16.2 GNU Autoconf 2.69c as before: (none) - 5.9.4 | 2015-01-22 - portability fix in "make check" for OSX We now avoid ‘head -N’, where N is a number, since that construct is not portable. See: http://lists.gnu.org/archive/html/bug-rcs/2014-11/msg00000.html - doc improvements - index ‘rcs -o’ better It seems the term "outdate" is itself outdated, nowadays (sigh). This command is now indexed under "deleting" and "removing", as well as "outdating". - move ‘@cindex’ before ‘@item’ in tables The tables of substitution mode options and common options are now indexed such that selecting the indexed item in Emacs leaves point on the item's line and not the one after. - new index entries For concepts (locking, implicit checkout, branching-related stuff) and keywords. - introspective stuff moved into chapter "Hacking" These former chapters have been moved into chapter "Hacking": "File format", "Still missing", "Reporting bugs". As a nice side-effect, the table of contents of the PDF now is one page. - ‘RCS_MEM_LIMIT’ on manpages updated RCS 5.9.2 (released 2013-11-28) changed how ‘RCS_MEM_LIMIT’ works. The Texinfo docs were updated but not the manpages. - maintenance tools upgraded: GNU Automake 1.15 GNU gnulib 2015-01-20 09:09:03 GNU texinfo 5.2 as before: GNU Autoconf 2.69 - 5.9.3 | 2014-09-17 - compatibility w/ RCS 2.x file format dropped This was presaged w/ RCS 5.9.0 (released 2013-05-06), below. Effectively, the configure script no longer supports option ‘--enable-compat2’, and RCS programs will fail, reporting a syntax error, if given a comma-v file in 2.x format. - bug fixes - crash on co/ci without changes on a branch RCS 5.8 (released 2011-08-30) introduced a bug whereby a ci without changes (i.e., reversion) on a branch would crash, leaving a temporary files and corrupted comma-v file as well. This regression is now fixed. See tests/t804, and also: http://lists.gnu.org/archive/html/bug-rcs/2014-01/msg00000.html - file corruption using stdio under Cygwin, Darwin RCS 5.8 (released 2011-08-30) introduced a bug when using stdio (e.g., with env var ‘RCS_MEM_LIMIT’ set to "0") under Cygwin whereby ci with a sufficiently large working file would silently write a truncated comma-v file. See tests/t805, and also: http://lists.gnu.org/archive/html/bug-rcs/2014-06/msg00000.html (Although the bug was initially discovered under Cygwin, the Hydra project reported the same problem for Darwin.) - portability fixes - don't recurse on ‘main’ This is for the sake of Cygwin "make check". See: http://lists.gnu.org/archive/html/bug-rcs/2014-08/msg00015.html - avoid C99 VLA elems in func decl, sometimes This is for the sake of Solaris 10 + GCC 3.4.3. See: http://lists.gnu.org/archive/html/bug-rcs/2014-08/msg00002.html - new diff/diff3 cross-compilation support The configure script now assigns "optimistic defaults" to some diff/diff3-related vars when cross-compiling and invoked with vars ‘DIFF’ and ‘DIFF3’. See README. - maintenance tools updated - automake (GNU automake) 1.14.1 - gnulib-tool (GNU gnulib 2014-09-16 19:26:48) 0.1.222-aa0c2 - 5.9.2 | 2013-11-28 - bugfixes - avoid possibly failing command in backticks Some versions of Solaris /bin/sh would cause the extract-help build script to exit failurefully when the grep command in the backticks failed (in the presence of "set -e"). Sigh. - handle low-memory situations like RCS 5.7 (mostly) For reading comma-v files, RCS 5.7 tries mmap(2), in-core snarfing, and stdio access, falling back to slower methods on failure of the faster method. RCS 5.8 maintained the order, but did not fall back; on failure, it gave up immediately. This change was originally viewed as a feature, but lately it seemed more like a bug. Now, RCS 5.7 behavior is for the most part restored. The exception is when env var ‘RCS_MEM_LIMIT’ is set; in that case, failure of a fast method does not fall back to the slower one. - default for env var ‘RCS_MEM_LIMIT’ relaxed This used to be 256 kilobytes, a reasonable value a long time ago, but ridiculously low nowadays. Now, it is "unlimited", which is more in line w/ the GNU philosophy, anyway: (info "(standards) Semantics") Since the env var is mostly intended for testing RCS, you can normally leave it unset. (Probably it will be removed in a future release.) - maintenance tools updated - automake (GNU automake) 1.14 - gnulib-tool (GNU gnulib 2013-11-28 08:46:06) 0.1.21-37f8a - 5.9.1 | 2013-10-04 - bugfixes - specify ‘diff --binary’ consistently for non-POSIX systems On non-POSIX systems, in some cases, ‘rcs frob’ used to omit ‘--binary’ from the command-line to the underlying diff(1). Now, that is done in all cases. - portability fixes - avoid ‘grep -q’ GNU grep understands ‘grep -q’ but some others do not. (info "(autoconf) Limitations of Usual Tools") - avoid ‘$<’ in makefile GNU make understands ‘$<’ but some others do not. (info "(autoconf) $< in Ordinary Make Rules") - avoid backslash in backticks The /bin/sh scripts used in "make" and "make check" now avoid using a backslash in backticks, which can cause problems for Solaris 9 /bin/sh (and maybe other /bin/sh implementations). - ‘PROGRAM --help’ shows home page / "gethelp" info This is for compliance w/ the GNU coding standards. (info "(standards) --help") - maintenance tools updated - automake (GNU automake) 1.13.4 - gnulib-tool (GNU gnulib 2013-10-03 04:59:38) 0.0.8036-28df8 - 5.9.0 | 2013-05-06 - distribution now .tar.lz and .tar.xz If you have GNU tar, you can use "tar xf" and it will DTRT. If not, you can use "lzip -dc TARBALL | tar xf -" to unpack the .tar.lz, or "xz -dc TARBALL | tar xf -" for the .tar.xz. - planned retirement - configure option ‘--enable-compat2’ This option enables reading of files written by RCS 2.x (before RCS was GNU, even), but the file format became obsolete in 1982. Support for it WILL BE REMOVED in a near future GNU RCS release. - common option ‘-V’ This option is obsoleted by ‘--version’ (since 5.8, 2011-08-30). Support for it WILL BE REMOVED in some future GNU RCS release. Its use now produces a warning to stderr. Please note that ‘-VN’ (N ∈ {3,4,5}) is a separate issue. - bugs fixed - ‘rcsmerge --help’ mentions ‘-A’, ‘-E’, ‘-e’ These options are accepted and internally passed to diff3(1). - ‘ident -VN’ and ‘merge -VN’ now signal error For these commands, the argument to ‘-V’ has no meaning. Previously, such invocations would display version info, ignoring the arg. Now they signal a "bad option" error. - new features - ident(1) recognizes Subversion "fixed-width keyword syntax" In addition to the normal keyword pattern, for Subversion 1.2 (and later) compatibility, ident(1) also recognizes patterns having one of the forms: $KEYWORD:: TEXT $ ;; two colons and space after keyword ;; space before ending $ $KEYWORD:: TEXT#$ ;; two colons and space after keyword ;; hash before ending $ - new co(1) option ‘-S’ for "self-same" mode In this mode, the owner of a lock is unimportant, just that it exists. Effectively, this prevents you from checking out the same revision twice. $ whoami ttn $ co -l -f z RCS/z,v --> z revision 1.1 (locked) done $ co -S -l -f z RCS/z,v --> z co: RCS/z,v: Revision 1.1 is already locked by ttn. - several RCS commands "internalized" into rcs(1) As part of an ongoing effort to modernize the command-line interface of GNU RCS, the previously standalone programs: ci, co, rcs, rcsclean, rcsdiff, rcsmerge, rlog can now be invoked as "rcs PROGRAM". In this case, we call PROGRAM a "command", and also provide some aliases. E.g., you can type "rcs diff" in addition to "rcs rcsdiff" (and "rcsdiff", of course). We plan to support standalone (w/o "rcs" prefix) invocation from the shell at least through the 5.x series of releases -- not indefinitely, but for a good while, yet. The rcs(1) program itself now supports ‘--commands’ to list all the commands, ‘--aliases’ to list their aliases, as well as ‘--help COMAMND’ to show the help for COMMAND. Note that programs ident(1) and merge(1) remain standalone. Lastly, in the manual, section "Invoking rcs" now describes both "modern" and "legacy" usages. Also, the internalized commands invocations mentions both "rcs COMMAND" and "PROGRAM" styles. - ‘--help’ output includes a one-line description E.g., "merge --help" says: "Three-way file merge". - most long options can be recognized if partially specified With the exception of "rcs --help COMMAND", where "--help" must be spelled out in full, all long options can now be recognized even if partially specified. For example, "rcs --al" is recognized as "rcs --aliases". - updated portability Several more Gnulib (http://www.gnu.org/software/gnulib) modules are now in use. - new cross-compilation support The configure script now assigns "pessimistic defaults" when cross-compiling. See new section "cross-compilation" in README. - effects of ‘-VN’ (N ∈ {3,4,5}) documented See (info "(rcs) Misc common options"). - maintenance tools updated - gnulib-tool (GNU gnulib 2013-05-01 06:14:19) 0.0.7913-5191 - 5.8.2 | 2013-04-04 - Bugs fixed - Wrong symbolic name dereference RCS 5.8 introduced a bug whereby commands would incorrectly dereference a symbolic name (into a numerical revision number) in the presence of multiple symbolic names that share a common prefix. See tests/t803. - ‘integrity’ value syntax better specified The ‘integrity’ value (if present) is a string composed of a system part followed by an optional user part, with formfeed (^L, U+0C) separating the two. Unlike other string values, the ‘integrity’ string (either part) must NOT contain '@' (U+40). If it does, RCS displays a "spurious '@' in `integrity' value" error message and exits failurefully. This change restores interop play-space for third-party tools that was stricken w/ the RCS 5.8 top-level grammar freeze. Left unspecified is how such tools should divvy up the user part. - New manual chapter: RCS file format This documents the RCS file format grammar and particulars, adapted from rcsfile(5). - Manpages refer to info documentation They now recommend using "info rcs" for full documentation. - Script to trim "junk at end of file" posted The "junk at end of file" error occurs for some files due to RCS 5.8 being more strict about the syntax it accepts. You can use ‘trimrcs’ by Warren Jones: http://lists.gnu.org/archive/html/help-rcs/2013-01/msg00006.html to remedy such files while we figure out how best to move such functionality into RCS proper. - Maintenance tools updated - automake (GNU Automake) 1.13.1 - gnulib-tool (GNU gnulib 2013-03-19 16:08:47) 0.0.7899-34f84 - makeinfo (GNU Texinfo) 5.1 - 5.8.1 | 2012-06-05 - Bugs fixed - Debug output removed Due to an oversight, release 5.8 rlog included code to write debugging output to stderr for invocations using the ‘-d’ option and a date range (e.g., ‘rlog -d 2010<2012’). - Criteria for avoiding read-only checks refined For "make check", some test cases are inhibited if the user running the test is not effectively blocked from writing a purportedly read-only file, such as when "make check" is run by the super user, or for certain (weird) NFS situations. Previously, to determine this condition, we considered only the operating system type, a very crude (and incomplete) proxy. Now, we explicitly check with a shell sequence comprising the umask(1) and test(1) commands, plus output-redirection. - Regression in ‘-zLT’ handling On a 64-bit x86 system, RCS 5.8 introduced a regression whereby: rlog -zLT -d>2011-05-04 would select the correct entry but display its date always with default (01) month and day, i.e., YYYY-01-01. This is now fixed (see also tests/t320). - Regression in ‘ci -d -T’ handling RCS 5.8 introduced a regression whereby: ci -l -d -T FILE would set the mtime of RCS/FILE,v (the comma-v file) to the epoch. This is now fixed (see also tests/t810). - Use ‘diff --label’ instead of ‘diff -L’ Previously, RCS used GNU diff's ‘-L’ option. According to Paul Eggert (a GNU diffutils maintainer): That option has been undocumented since diffutils 2.8 (released in March 2002) and the option is intended to be replaced sometime soon with a different meaning. Now, RCS uses ‘diff --label’, thus immune to the planned change. - Miscellaneous changes - Make help extraction noisy (on failure) - Silence some compiler warnings - Increase coverage of "make check" - Documentation improvements - Manpage rcsintro(1) dropped This manpage is redundant, and (arguably) should not have been in section 1 in the first place. - Use "Invoking COMMAND" instead of "COMMAND" as node names This makes it easier for ‘info --usage COMMAND’ to DTRT, and makes GNU (info "(standards) Manual Structure Details") happy. - explicitly UTF-8 This is to prepare for a (future) GNU Texinfo release that renders @code in a more pretty way when the encoding is UTF-8. If you're reading this (from the future) with such a Texinfo at hand, feel free to regenerate the docs in doc/ prior to install. - CVS is not GNU Previously, we incorrectly said "GNU CVS", succumbing to a common misunderstanding. Now we know better. - TAGS file no longer distributed To create, configure normally and do "make TAGS". - New configure script option ‘--enable-coverage’ Specifying ‘--enable-coverage’ causes ‘_Exit’ to be an alias for ‘exit’ and CFLAGS to append ‘--coverage’ if the compiler is GCC. This is needed because the coverage machinery writes the .gcda files only on ‘exit’. This option is for maintainers; most people can ignore it. - Portability improvements - Use more gnulib modules - Use portable Makefile subst-ref variable syntax - Use portable shell command-output interpolation syntax - Maintenance tools upgraded - GNU Automake 1.12 - GNU Autoconf 2.69 - gnulib-tool (GNU gnulib 2012-06-03 16:29:00) 0.0.7432-f6c24-modified - 5.8 | 2011-08-30 - License now GPLv3+ (see COPYING) - Change in terminology: from "path" to "file name" (or "file-name") However, if "path" intends "search path", we say so explicitly. - Changes to the RCS package - New documentation in Info format On "make install", rcs.info is installed in $(infodir), with title "GNU RCS " in dircategory "Version control". The doc source is texinfo (released under GNU FDL 1.3), so you can easily create output in HTML, PDF, etc. - Dropped configure option: --with-diffutils To specify non-GNU diffutils programs diff(1) and diff3(1), name them using variables on the configure command-line. See README. - Configuration more strict in some ways, more lax in others. Before, part of the configuration was done at compile time. Now, all of it is done by the configure script. Here are the set of conditions which will cause the configure script to fail (with a "could not find..." message): - for --enable-mailer=PROG, ‘PROG’ not absolute; - for diff(1), value of env var ‘DIFF’ not absolute; - diff(1) not GNU diffutils compatible; - for diff3(1), value of env var ‘DIFF3’ not absolute; - for ed(1), value of env var ‘ED’ not absolute; - no C99-capable compiler. Here, "absolute" means "specified as an absolute filename". On the flip side, configuration no longer checks for some situations such as ‘sigaction’ yes, but ‘SA_SIGINFO’ no. Most of the portability duties are now handled by gnulib. - New configure option: --enable-suid[=setreuid] This builds RCS with setuid support (the default). Optional arg ‘setreuid’ means use setreuid(2) instead of seteuid(2). - New configure option: --disable-mmap This builds RCS without mmap(2), even if available. See README. - New configure option: --enable-mailer=PROG The feature whereby ci(1) sends mail when breaking a lock is now disabled by default. To enable, specify ‘--enable-mailer=PROG’ to the configure script. See README. - New configure option: --enable-compat2 This preponderantly unlikely to be used option allows RCS commands to read RCS files written by RCS 2. See README. - You can "make check" prior to "make install". Doing "make check" automatically prepends to the ‘PATH’ env var the value of ‘$(abs_top_builddir)/src’, so that the programs co, rcsdiff, and rcsmerge can find their peers (co and merge). Likewise, "make installcheck" prepends ‘$(DESTDIR)$(bindir)’. Previously, you had to "make install" first and then arrange for ‘$(DESTDIR)$(bindir)’ to be on ‘PATH’ "manually". See tests/README for more info on the test suite. - Bug fixes - Remove all edit info when removing all revisions. Previously, "rcs -o" (outdating) all revisions failed to leave the RCS file in a consistent state; edit info (i.e., log message + diff(1) output) remained for the deleted revisions. For example, this sequence of commands: echo foo > foo ci -q -i -t-desc -mHELLO foo rcs -q -o1.1: foo grep '@H' foo,v used to display "@HELLO" to stdout. Now, all revisions are completely removed. - Code no longer uses mktemp(3). Using mktemp(3) is a security risk. We use mkstemp(3) now. Likewise, rcsfreeze.sh now uses mktemp(1). - Misc manpage tweaks / fixes. Document ‘rlog -q’; fix small merge.1 omission; add branch labels in rcsfile.5; say "GNU RCS " in footer. - Other changes - All commands accept ‘--help’ and ‘--version’. The help output includes an email address for bug reports. For continuity, option ‘-V’ is now a synonym for ‘--version’. Relatedly, commands no longer display usage info if given a bad or malformed option. You can use ‘--help’ for that. - A string of all digits is now valid for author, state. This means you can set the author or state to, for example, "000000" or "42". Previously, these would have caused a "invalid identifier" or "invalid symbol" error. - Env var RCS_MEM_LIMIT controls stdio threshold. For speed, RCS uses memory-based routines for files up to 256 kilobytes, and stream-based (stdio) routines otherwise. You can change this threshold value by setting the environment variable ‘RCS_MEM_LIMIT’ to a non-negative integer, measured in kilobytes. An empty ‘RCS_MEM_LIMIT’ value is silently ignored. - RCS can now work with files larger than 2 gigabytes. RCS now uses large file offsets (#define _FILE_OFFSET_BITS 64). - Pass-through for RCS file ‘commitid SYMBOL’ now builtin. Due to GNU CVS (Concurrent Versions System) using a compatible file format as RCS for the RCS file, you can use RCS commands to view and manipulate its contents. (Note, however, the next NEWS item.) This works well enough except for a small annoyance: CVS adds a per-revision field called the "commitid" with an opaque (to RCS) symbolic value. Previously, RCS commands would emit a warning "unrecognized phrases" (unless given ‘-q’ on the command-line). RCS commands now automatically support pass-through handling of ‘commitid SYMBOL’ (so ‘-q’ is no longer necessary). - RCS file top-level grammar frozen. The RCS file top-level grammar is now frozen; RCS no longer supports pass-through operation of unrecognized key/data pairs (called "newphrases" in the RCS 5.7 rcsfile(5) manpage). To avoid painting ourselves into a corner, the grammar now includes a new key ‘integrity’ with @-string value, whose sub-grammar is not yet specified. (We intend to keep checksums and other compacted redundancies in this field, for manipulation by the commands in a future RCS 5.x release.) For upward compatibility, the commands in this release do not change this field, although they silently read and write it (pass-through), if present. - RCS file syntax-validated earlier, completely. Previously, RCS file syntax was validated lazily, and trailing garbage was not detected (see bugfix above). Now, a top-level validation is done on each access. - Possible to specify an empty log message with ci -m, rcs -m. The commands "ci -m" and "rcs -m" no longer error on an empty log message. Their non-interactive behavior is now consistent with the interactive invocation. was: ci -m file < /dev/null # use stdin to avoid error now: ci -m file # works fine, like so Note that these commands actually store as the log message the string: "*** empty log message ***". - Date option accepts some more date-only formats Date format ‘YYYY-DDD’ specifies a year and a day (1-366), while format ‘YYYY-wWW-D’ specifies a year, an ISO week number (0-53, 0 is a GNU RCS extension), and a day number (1-7, for Monday through Sunday). - Changes to rcsdiff - New handling for option: -U N This arranges to output N lines of unified-diff context. Relatedly, the list of possible options passed to the underlying diff(1) appears in both "rcsdiff --help" and in the manual. - Refined "same-revision don't call diff" optimization Normally, if the two revisions specified are the same, we avoid calling the underlying diff(1) on the theory that it will produce no output. This does not hold generally for ‘-y’ (--side-by-side) and ‘-D’ (--ifdef), such as when the revision specified is by different symbolic names, so for those options the optimization is disabled. - 5.7 | 1995-06-16 Here is a brief summary of user-visible changes since 5.6. New options: ‘-kb’ supports binary files. ‘-T’ preserves the modification time of RCS files. ‘-V’ prints the version number. ‘-zLT’ causes RCS to use local time in working files and logs. ‘rcsclean -n’ outputs what rcsclean would do, without actually doing it. ‘rlog -N’ omits symbolic names. There is a new keyword ‘Name’. Inserted log lines now have the same prefix as the preceding ‘$Log’ line. Most changes for RCS version 5.7 are to fix bugs and improve portability. RCS now conforms to GNU configuration standards and to Posix 1003.1b-1993. Features new to RCS version 5.7, and possibly incompatible in minor ways with previous practice, include: - Inserted log lines now have the same prefix as the preceding ‘$Log’ line. E.g. if a $Log line starts with ‘// $Log’, log lines are prefixed with ‘// ’. RCS still records the (now obsolescent) comment leader inside RCS files, but it ignores the comment leader unless it is emulating older RCS versions. If you plan to access a file with both old and new versions of RCS, make sure its comment leader matches its ‘$Log’ line prefix. For backwards compatibility with older versions of RCS, if the log prefix is ‘/*’ or ‘(*’ surrounded by optional white space, inserted log lines contain ‘ *’ instead of ‘/*’ or ‘(*’; however, this usage is obsolescent and should not be relied on. - $Log string ‘Revision’ times now use the same format as other times. - Log lines are now inserted even if -kk is specified; this simplifies merging. - ci's -rR option (with a nonempty R) now just specifies a revision number R. In some beta versions, it also reestablished the default behavior of releasing a lock and removing the working file. Now, only the bare -r option does this. - With an empty extension, any appearance of a directory named ‘RCS’ in a pathname identifies the pathname as being that of an RCS file. For example, ‘a/RCS/b/c’ is now an RCS file with an empty extension. Formerly, ‘RCS’ had to be the last directory in the pathname. - rlog's -d option by default now uses exclusive time ranges. E.g. ‘rlog -d"