1 | Recent changes to RCS (and possible future changes) |
---|
2 | |
---|
3 | $Id: NEWS,v 1.1.1.1 1996-10-04 05:52:41 ghudson Exp $ |
---|
4 | |
---|
5 | Copyright 1991, 1992, 1993, 1994, 1995 Paul Eggert |
---|
6 | Distributed under license by the Free Software Foundation, Inc. |
---|
7 | |
---|
8 | This file is part of RCS. |
---|
9 | |
---|
10 | RCS is free software; you can redistribute it and/or modify it |
---|
11 | under the terms of the GNU General Public License as published |
---|
12 | by the Free Software Foundation; either version 2, or (at your |
---|
13 | option) any later version. |
---|
14 | |
---|
15 | RCS is distributed in the hope that it will be useful, but |
---|
16 | WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
18 | GNU General Public License for more details. |
---|
19 | |
---|
20 | You should have received a copy of the GNU General Public License |
---|
21 | along with RCS; see the file COPYING. |
---|
22 | If not, write to the Free Software Foundation, |
---|
23 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
---|
24 | |
---|
25 | Report problems and direct all questions to: |
---|
26 | |
---|
27 | rcs-bugs@cs.purdue.edu |
---|
28 | |
---|
29 | |
---|
30 | Here is a brief summary of user-visible changes since 5.6. |
---|
31 | |
---|
32 | New options: |
---|
33 | `-kb' supports binary files. |
---|
34 | `-T' preserves the modification time of RCS files. |
---|
35 | `-V' prints the version number. |
---|
36 | `-zLT' causes RCS to use local time in working files and logs. |
---|
37 | `rcsclean -n' outputs what rcsclean would do, without actually doing it. |
---|
38 | `rlog -N' omits symbolic names. |
---|
39 | There is a new keyword `Name'. |
---|
40 | Inserted log lines now have the same prefix as the preceding `$Log' line. |
---|
41 | |
---|
42 | Most changes for RCS version 5.7 are to fix bugs and improve portability. |
---|
43 | RCS now conforms to GNU configuration standards and to Posix 1003.1b-1993. |
---|
44 | |
---|
45 | |
---|
46 | Features new to RCS version 5.7, and possibly incompatible |
---|
47 | in minor ways with previous practice, include: |
---|
48 | |
---|
49 | Inserted log lines now have the same prefix as the preceding `$Log' line. |
---|
50 | E.g. if a $Log line starts with `// $Log', log lines are prefixed with `// '. |
---|
51 | RCS still records the (now obsolescent) comment leader inside RCS files, |
---|
52 | but it ignores the comment leader unless it is emulating older RCS versions. |
---|
53 | If you plan to access a file with both old and new versions of RCS, |
---|
54 | make sure its comment leader matches its `$Log' line prefix. |
---|
55 | For backwards compatibility with older versions of RCS, |
---|
56 | if the log prefix is `/*' or `(*' surrounded by optional white space, |
---|
57 | inserted log lines contain ` *' instead of `/*' or `(*'; |
---|
58 | however, this usage is obsolescent and should not be relied on. |
---|
59 | |
---|
60 | $Log string `Revision' times now use the same format as other times. |
---|
61 | |
---|
62 | Log lines are now inserted even if -kk is specified; this simplifies merging. |
---|
63 | |
---|
64 | ci's -rR option (with a nonempty R) now just specifies a revision number R. |
---|
65 | In some beta versions, it also reestablished the default behavior of |
---|
66 | releasing a lock and removing the working file. |
---|
67 | Now, only the bare -r option does this. |
---|
68 | |
---|
69 | With an empty extension, any appearance of a directory named `RCS' |
---|
70 | in a pathname identifies the pathname as being that of an RCS file. |
---|
71 | For example, `a/RCS/b/c' is now an RCS file with an empty extension. |
---|
72 | Formerly, `RCS' had to be the last directory in the pathname. |
---|
73 | |
---|
74 | rlog's -d option by default now uses exclusive time ranges. |
---|
75 | E.g. `rlog -d"<T"' now excludes revisions whose times equal T exactly. |
---|
76 | Use `rlog -d"<=T"' to get the old behavior. |
---|
77 | |
---|
78 | merge now takes up to three -L options, one for each input file. |
---|
79 | Formerly, it took at most two -L options, for the 1st and 3rd input files. |
---|
80 | |
---|
81 | `rcs' now requires at least one option; this is for future expansion. |
---|
82 | |
---|
83 | Other features new to RCS version 5.7 include: |
---|
84 | |
---|
85 | merge and rcsmerge now pass -A, -E, and -e options to the subsidiary diff3. |
---|
86 | |
---|
87 | rcs -kb acts like rcs -ko, except it uses binary I/O on working files. |
---|
88 | This makes no difference under Posix or Unix, but it does matter elsewhere. |
---|
89 | With -kb in effect, rcsmerge refuses to merge; |
---|
90 | this avoids common problems with CVS merging. |
---|
91 | |
---|
92 | The following is for future use by GNU Emacs 19's version control package: |
---|
93 | |
---|
94 | rcs's new -M option causes it to not send mail when you break somebody |
---|
95 | else's lock. This is not meant for casual use; see rcs(1). |
---|
96 | |
---|
97 | ci's new -i option causes an error if the RCS file already exists. |
---|
98 | Similarly, -j causes an error if the RCS file does not already exist. |
---|
99 | |
---|
100 | The new keyword `Name' is supported; its value is the name, if any, |
---|
101 | used to check out the revision. E.g. `co -rN foo' causes foo's |
---|
102 | $Name...$ keyword strings to end in `: N $'. |
---|
103 | |
---|
104 | The new -zZONE option causes RCS to output dates and times using ISO 8601 |
---|
105 | format with ZONE as the time zone, and to use ZONE as the default time |
---|
106 | zone for input. Its most common use is the -zLT option, which causes RCS |
---|
107 | to use local time externally. You can also specify foreign time zones; |
---|
108 | e.g. -z+05:30 causes RCS to use India time (5 hours 30 minutes east of UTC). |
---|
109 | This option does not affect RCS files themselves, which always use UTC; |
---|
110 | it affects only output (e.g. rlog output, keyword expansion, diff -c times) |
---|
111 | and interpretation of options (e.g. the -d option of ci, co, and rlog). |
---|
112 | Bare -z restores the default behavior of UTC with no time zone indication, |
---|
113 | and the traditional RCS date separator `/' instead of the ISO 8601 `-'. |
---|
114 | RCSINIT may contain a -z option. ci -k parses UTC offsets. |
---|
115 | |
---|
116 | The new -T option of ci, co, rcs, and rcsclean preserves the modification |
---|
117 | time of the RCS file unless a revision is added or removed. |
---|
118 | ci -T sets the RCS file's modification time to the new revision's time |
---|
119 | if the former precedes the latter and there is a new revision; |
---|
120 | otherwise, it preserves the RCS file's modification time. |
---|
121 | Use this option with care, as it can confuse `make'; see ci(1). |
---|
122 | |
---|
123 | The new -N option of rlog omits symbolic names from the output. |
---|
124 | |
---|
125 | A revision number that starts with `.' is considered to be relative to |
---|
126 | the default branch (normally the trunk). A branch number followed by `.' |
---|
127 | stands for the last revision on that branch. |
---|
128 | |
---|
129 | If someone else already holds the lock, rcs -l now asks whether you want |
---|
130 | to break it, instead of immediately reporting an error. |
---|
131 | |
---|
132 | ci now always unlocks a revision like 3.5 if you check in a revision |
---|
133 | like 3.5.2.1 that is the first of a new branch of that revision. |
---|
134 | Formerly it was inconsistent. |
---|
135 | |
---|
136 | File names may now contain tab, newline, space, and '$'. |
---|
137 | They are represented in keyword strings with \t, \n, \040, and \044. |
---|
138 | \ in a file name is now represented by \\ in a keyword string. |
---|
139 | |
---|
140 | Identifiers may now start with a digit and (unless they are symbolic names) |
---|
141 | may contain `.'. This permits author names like `john.doe' and `4tran'. |
---|
142 | |
---|
143 | A bare -V option now prints the current version number. |
---|
144 | |
---|
145 | rcsdiff outputs more readable context diff headers if diff -L works. |
---|
146 | |
---|
147 | rcsdiff -rN -rN now suppresses needless checkout and comparison |
---|
148 | of identical revisions. |
---|
149 | |
---|
150 | Error messages now contain the names of files to which they apply. |
---|
151 | |
---|
152 | Mach style memory mapping is now supported. |
---|
153 | |
---|
154 | The installation procedure now conforms to the GNU coding standards. |
---|
155 | |
---|
156 | When properly configured, RCS now strictly conforms to Posix 1003.1b-1993. |
---|
157 | |
---|
158 | |
---|
159 | Features new to RCS version 5.6 include: |
---|
160 | |
---|
161 | Security holes have been plugged; setgid use is no longer supported. |
---|
162 | |
---|
163 | co can retrieve old revisions much more efficiently. |
---|
164 | To generate the Nth youngest revision on the trunk, |
---|
165 | the old method used up to N passes through copies of the working file; |
---|
166 | the new method uses a piece table to generate the working file in one pass. |
---|
167 | |
---|
168 | When ci finds no changes in the working file, |
---|
169 | it automatically reverts to the previous revision unless -f is given. |
---|
170 | |
---|
171 | RCS follows symbolic links to RCS files instead of breaking them, |
---|
172 | and warns when it breaks hard links to RCS files. |
---|
173 | |
---|
174 | `$' stands for the revision number taken from working file keyword strings. |
---|
175 | E.g. if F contains an Id keyword string, |
---|
176 | `rcsdiff -r$ F' compares F to its checked-in revision, and |
---|
177 | `rcs -nL:$ F' gives the symbolic name L to F's revision. |
---|
178 | |
---|
179 | co and ci's new -M option sets the modification time |
---|
180 | of the working file to be that of the revision. |
---|
181 | Without -M, ci now tries to avoid changing the working file's |
---|
182 | modification time if its contents are unchanged. |
---|
183 | |
---|
184 | rcs's new -m option changes the log message of an old revision. |
---|
185 | |
---|
186 | RCS is portable to hosts that do not permit `,' in filenames. |
---|
187 | (`,' is not part of the Posix portable filename character set.) |
---|
188 | A new -x option specifies extensions other than `,v' for RCS files. |
---|
189 | The Unix default is `-x,v/', so that the working file `w' corresponds |
---|
190 | to the first file in the list `RCS/w,v', `w,v', `RCS/w' that works. |
---|
191 | The non-Unix default is `-x', so that only `RCS/w' is tried. |
---|
192 | Eventually, the Unix default should change to `-x/,v' |
---|
193 | to encourage interoperability among all Posix hosts. |
---|
194 | |
---|
195 | A new RCSINIT environment variable specifies defaults for options like -x. |
---|
196 | |
---|
197 | The separator for revision ranges has been changed from `-' to `:', because |
---|
198 | the range `A-B' is ambiguous if `A', `B' and `A-B' are all symbolic names. |
---|
199 | E.g. the old `rlog -r1.5-1.7' is now `rlog -r1.5:1.7'; ditto for `rcs -o'. |
---|
200 | For a while RCS will still support (but warn about) the old `-' separator. |
---|
201 | |
---|
202 | RCS manipulates its lock files using a method that is more reliable under NFS. |
---|
203 | |
---|
204 | |
---|
205 | Features new to RCS version 5 include: |
---|
206 | |
---|
207 | RCS can check in arbitrary files, not just text files, if diff -a works. |
---|
208 | RCS can merge lines containing just a single `.' if diff3 -m works. |
---|
209 | GNU diff supports the -a and -m options. |
---|
210 | |
---|
211 | RCS can now be used as a setuid program. |
---|
212 | See ci(1) for how users can employ setuid copies of ci, co, and rcsclean. |
---|
213 | Setuid privileges yield extra security if the effective user owns RCS files |
---|
214 | and directories, and if only the effective user can write RCS directories. |
---|
215 | RCS uses the real user for all accesses other than writing RCS directories. |
---|
216 | As described in ci(1), there are three levels of setuid support. |
---|
217 | |
---|
218 | 1. Setuid works fully if the seteuid() system call lets any |
---|
219 | process switch back and forth between real and effective users, |
---|
220 | as specified in Posix 1003.1a Draft 5. |
---|
221 | |
---|
222 | 2. On hosts with saved setuids (a Posix 1003.1-1990 option) and without |
---|
223 | a modern seteuid(), setuid works unless the real or effective user is root. |
---|
224 | |
---|
225 | 3. On hosts that lack both modern seteuid() and saved setuids, |
---|
226 | setuid does not work, and RCS uses the effective user for all accesses; |
---|
227 | formerly it was inconsistent. |
---|
228 | |
---|
229 | New options to co, rcsdiff, and rcsmerge give more flexibility to keyword |
---|
230 | substitution. |
---|
231 | |
---|
232 | -kkv substitutes the default `$Keyword: value $' for keyword strings. |
---|
233 | However, a locker's name is inserted only as a file is being locked, |
---|
234 | i.e. by `ci -l' and `co -l'. This is normally the default. |
---|
235 | |
---|
236 | -kkvl acts like -kkv, except that a locker's name is always inserted |
---|
237 | if the given revision is currently locked. This was the default in |
---|
238 | version 4. It is now the default only with when using rcsdiff to |
---|
239 | compare a revision to a working file whose mode is that of a file |
---|
240 | checked out for changes. |
---|
241 | |
---|
242 | -kk substitutes just `$Keyword$', which helps to ignore keyword values |
---|
243 | when comparing revisions. |
---|
244 | |
---|
245 | -ko retrieves the old revision's keyword string, thus bypassing keyword |
---|
246 | substitution. |
---|
247 | |
---|
248 | -kv retrieves just `value'. This can ease the use of keyword values, but |
---|
249 | it is dangerous because it causes RCS to lose track of where the keywords |
---|
250 | are, so for safety the owner write permission of the working file is |
---|
251 | turned off when -kv is used; to edit the file later, check it out again |
---|
252 | without -kv. |
---|
253 | |
---|
254 | rcs -ko sets the default keyword substitution to be in the style of co -ko, |
---|
255 | and similarly for the other -k options. This can be useful with file |
---|
256 | formats that cannot tolerate changing the lengths of keyword strings. |
---|
257 | However it also renders a RCS file readable only by RCS version 5 or later. |
---|
258 | Use rcs -kkv to restore the usual default substitution. |
---|
259 | |
---|
260 | RCS can now be used by development groups that span time zone boundaries. |
---|
261 | All times are now displayed in UTC, and UTC is the default time zone. |
---|
262 | To use local time with co -d, append ` LT' to the time. |
---|
263 | When interchanging RCS files with sites running older versions of RCS, |
---|
264 | time stamp discrepancies may prevent checkins; to work around this, |
---|
265 | use `ci -d' with a time slightly in the future. |
---|
266 | |
---|
267 | Dates are now displayed using four-digit years, not two-digit years. |
---|
268 | Years given in -d options must now have four digits. |
---|
269 | This change is required for RCS to continue to work after 1999/12/31. |
---|
270 | The form of dates in version 5 RCS files will not change until 2000/01/01, |
---|
271 | so in the meantime RCS files can still be interchanged with sites |
---|
272 | running older versions of RCS. To make room for the longer dates, |
---|
273 | rlog now outputs `lines: +A -D' instead of `lines added/del: A/D'. |
---|
274 | |
---|
275 | To help prevent diff programs that are broken or have run out of memory |
---|
276 | from trashing an RCS file, ci now checks diff output more carefully. |
---|
277 | |
---|
278 | ci -k now handles the Log keyword, so that checking in a file |
---|
279 | with -k does not normally alter the file's contents. |
---|
280 | |
---|
281 | RCS no longer outputs white space at the ends of lines |
---|
282 | unless the original working file had it. |
---|
283 | For consistency with other keywords, |
---|
284 | a space, not a tab, is now output after `$Log:'. |
---|
285 | Rlog now puts lockers and symbolic names on separate lines in the output |
---|
286 | to avoid generating lines that are too long. |
---|
287 | A similar fix has been made to lists in the RCS files themselves. |
---|
288 | |
---|
289 | RCS no longer outputs the string `Locker: ' when expanding Header or Id |
---|
290 | keywords. This saves space and reverts back to version 3 behavior. |
---|
291 | |
---|
292 | The default branch is not put into the RCS file unless it is nonempty. |
---|
293 | Therefore, files generated by RCS version 5 can be read by RCS version 3 |
---|
294 | unless they use the default branch feature introduced in version 4. |
---|
295 | This fixes a compatibility problem introduced by version 4. |
---|
296 | |
---|
297 | RCS can now emulate older versions of RCS; see `co -V'. |
---|
298 | This may be useful to overcome compatibility problems |
---|
299 | due to the above changes. |
---|
300 | |
---|
301 | Programs like Emacs can now interact with RCS commands via a pipe: |
---|
302 | the new -I option causes ci, co, and rcs to run interactively, |
---|
303 | even if standard input is not a terminal. |
---|
304 | These commands now accept multiple inputs from stdin separated by `.' lines. |
---|
305 | |
---|
306 | ci now silently ignores the -t option if the RCS file already exists. |
---|
307 | This simplifies some shell scripts and improves security in setuid sites. |
---|
308 | |
---|
309 | Descriptive text may be given directly in an argument of the form -t-string. |
---|
310 | |
---|
311 | The character set for symbolic names has been upgraded |
---|
312 | from Ascii to ISO 8859. |
---|
313 | |
---|
314 | rcsdiff now passes through all options used by GNU diff; |
---|
315 | this is a longer list than 4.3BSD diff. |
---|
316 | |
---|
317 | merge's new -L option gives tags for merge's overlap report lines. |
---|
318 | This ability used to be present in a different, undocumented form; |
---|
319 | the new form is chosen for compatibility with GNU diff3's -L option. |
---|
320 | |
---|
321 | rcsmerge and merge now have a -q option, just like their siblings do. |
---|
322 | |
---|
323 | rcsclean's new -n option outputs what rcsclean would do, |
---|
324 | without actually doing it. |
---|
325 | |
---|
326 | RCS now attempts to ignore parts of an RCS file that look like they come |
---|
327 | from a future version of RCS. |
---|
328 | |
---|
329 | When properly configured, RCS now strictly conforms with Posix 1003.1-1990. |
---|
330 | RCS can still be compiled in non-Posix traditional Unix environments, |
---|
331 | and can use common BSD and USG extensions to Posix. |
---|
332 | RCS is a conforming Standard C program, and also compiles under traditional C. |
---|
333 | |
---|
334 | Arbitrary limits on internal table sizes have been removed. |
---|
335 | The only limit now is the amount of memory available via malloc(). |
---|
336 | |
---|
337 | File temporaries, lock files, signals, and system call return codes |
---|
338 | are now handled more cleanly, portably, and quickly. |
---|
339 | Some race conditions have been removed. |
---|
340 | |
---|
341 | A new compile-time option RCSPREFIX lets administrators avoid absolute path |
---|
342 | names for subsidiary programs, trading speed for flexibility. |
---|
343 | |
---|
344 | The configuration procedure is now more automatic. |
---|
345 | |
---|
346 | Snooping has been removed. |
---|
347 | |
---|
348 | |
---|
349 | Version 4 was the first version distributed by FSF. |
---|
350 | Beside bug fixes, features new to RCS version 4 include: |
---|
351 | |
---|
352 | The notion of default branch has been added; see rcs -b. |
---|
353 | |
---|
354 | |
---|
355 | Version 3 was included in the 4.3BSD distribution. |
---|
356 | |
---|
357 | |
---|
358 | Here are some possible future changes for RCS: |
---|
359 | |
---|
360 | Bring back sccstorcs. |
---|
361 | |
---|
362 | Add an option to `rcsmerge' so that it can use an arbitrary program |
---|
363 | to do the 3-way merge, instead of the default `merge'. |
---|
364 | Likewise for `rcsdiff' and `diff'. It should be possible to pass |
---|
365 | arbitrary options to these programs, and to the subsidiary `co's. |
---|
366 | |
---|
367 | Add format options for finer control over the output of ident and rlog. |
---|
368 | E.g. there should be an easy way for rlog to output lines like |
---|
369 | `src/main.c 2.4 wft', one for each locked revision. |
---|
370 | rlog options should have three orthogonal types: selecting files, |
---|
371 | selecting revisions, and selecting rlog format. |
---|
372 | |
---|
373 | Add format options for finer control over the output of keyword strings. |
---|
374 | E.g. there should be some way to prepend @(#), and there should be some |
---|
375 | way to change $ to some other character to disable further substitution. |
---|
376 | These options should make the resulting files uneditable, like -kv. |
---|
377 | |
---|
378 | Add long options, e.g. `--version'. Unfortunately RCS's option syntax |
---|
379 | is incompatible with getopt. Perhaps the best way is to overload `rcs', e.g. |
---|
380 | `rcs diff --keyword-substitution=old file' instead of `rcsdiff -ko file'. |
---|
381 | |
---|
382 | Add a way to put only the interesting part of the path into the $Header |
---|
383 | keyword expansion. |
---|
384 | |
---|
385 | rlog -rM:N should work even if M and N have different numbers of fields, |
---|
386 | so long as M is an ancestor of N or vice versa. |
---|
387 | |
---|
388 | rcs should evaluate options in order; this allows rcs -oS -nS. |
---|
389 | |
---|
390 | rcs should be able to fix minor mistakes in checkin dates and authors. |
---|
391 | |
---|
392 | Be able to redo your most recent checkin with minor changes. |
---|
393 | |
---|
394 | co -u shouldn't complain about a writable working file if it won't change |
---|
395 | its contents. |
---|
396 | |
---|
397 | Configure the Makefile automatically, as well as conf.h. |
---|
398 | |
---|
399 | Add a new option to rcs that behaves like -o, but that doesn't lose the |
---|
400 | nonempty log messages, but instead merges them with the next revision |
---|
401 | if it exists, perhaps with a 1-line header containing author, date, etc. |
---|
402 | |
---|
403 | Add a `-' option to take the list of pathnames from standard input. |
---|
404 | Perhaps the pathnames should be null-terminated, not newline-terminated, |
---|
405 | so that pathnames that contain newlines are handled properly. |
---|
406 | |
---|
407 | Permit multiple option-pathname pairs, e.g. co -r1.4 a -r1.5 b. |
---|
408 | |
---|
409 | Add options to allow arbitrary combinations of working file names |
---|
410 | with RCS file names -- they shouldn't have to match. |
---|
411 | |
---|
412 | Add an option to break a symbolic link to an RCS file, |
---|
413 | instead of breaking the hard link that it points to. |
---|
414 | |
---|
415 | Add ways to specify the earliest revision, the most recent revision, |
---|
416 | the earliest or latest revision on a particular branch, and |
---|
417 | the parent or child of some other revision. |
---|
418 | |
---|
419 | If a user has multiple locks, perhaps ci should fall back on ci -k's |
---|
420 | method to figure out which revision to use. |
---|
421 | |
---|
422 | Symbolic names need not refer to existing branches and revisions. |
---|
423 | rcs(1)'s BUGS section says this is a bug. Is it? If so, it should be fixed. |
---|
424 | |
---|
425 | Add an option to rcs -o so that old log messages are not deleted if |
---|
426 | the next undeleted revision exists, but are merely appended to the log |
---|
427 | message of that revision. |
---|
428 | |
---|
429 | ci -k should be able to get keyword values from the first `$Log' entry. |
---|
430 | |
---|
431 | Add an option to rcsclean to clean directories recursively. |
---|
432 | |
---|
433 | Write an rcsck program that repairs corrupted RCS files, |
---|
434 | much as fsck repairs corrupted file systems. |
---|
435 | For example, it should remove stale lock files. |
---|
436 | |
---|
437 | Clean up the source code with a consistent indenting style. |
---|
438 | |
---|
439 | Update the date parser to use the more modern getdate.y by Bellovin, |
---|
440 | Salz, and Berets, or the even more modern getdate by Moraes. None of |
---|
441 | these getdate implementations are as robust as RCS's old warhorse in |
---|
442 | avoiding problems like arithmetic overflow, so they'll have to be |
---|
443 | fixed first. |
---|
444 | |
---|
445 | Break up the code into a library so that it's easier to write new programs |
---|
446 | that manipulate RCS files, and so that useless code is removed from the |
---|
447 | existing programs. For example, the rcs command contains unnecessary |
---|
448 | keyword substitution baggage, and the merge command can be greatly pruned. |
---|
449 | |
---|
450 | Make it easier to use your favorite text editor to edit log messages, |
---|
451 | etc. instead of having to type them in irretrievably at the terminal. |
---|
452 | |
---|
453 | Let the user specify a search path for default branches, |
---|
454 | e.g. to use L as the default branch if it works, and M otherwise. |
---|
455 | Let the user require that at least one entry in the default branch path works. |
---|
456 | Let the user say that later entries in the default branch path are read only, |
---|
457 | i.e. one cannot check in changes to them. |
---|
458 | This should be an option settable by RCSINIT. |
---|
459 | |
---|
460 | Add a way for a user to see which revisions affected which lines. |
---|
461 | |
---|
462 | Have `rlog -nN F' print just the revision number that N translates to. |
---|
463 | E.g. `rlog -nB. F' would print the highest revision on the branch B. |
---|
464 | Use this to add an option -bB to rcsbranch, to freeze the named branch. |
---|
465 | This should interact well with default branches. |
---|
466 | |
---|
467 | Add a co option that prints the revision number before each line, |
---|
468 | as SCCS's `get -m' does. |
---|
469 | |
---|
470 | The following projects require a change to RCS file format. |
---|
471 | |
---|
472 | Allow keyword expansion to be changed on a per-revision basis, |
---|
473 | not on a per-file basis as now. This would allow -ko to be used |
---|
474 | on imported revisions, with the default -kkv otherwise. |
---|
475 | |
---|
476 | When two or more branches are merged, record all the ancestors |
---|
477 | of the new revision. The hard part of this is keeping track of all |
---|
478 | the ancestors of a working file while it's checked out. |
---|
479 | |
---|
480 | Add loose locking, which is like non-strict but applies to all users, |
---|
481 | not just the owner of the RCS file. |
---|
482 | |
---|
483 | Be able to store RCS files in compressed format. |
---|
484 | Don't bother to use a .Z extension that would exceed file name length limits; |
---|
485 | just look at the magic number. |
---|
486 | |
---|
487 | Add locker commentary, e.g. `co -l -m"checkout to fix merge bug" foo' |
---|
488 | to tell others why you checked out `foo'. |
---|
489 | Also record the time when the revision was locked, |
---|
490 | and perhaps the working pathname (if applicable). |
---|
491 | |
---|
492 | Let the user mark an RCS revision as deleted; checking out such a revision |
---|
493 | would result in no working file. Similarly, using `co -d' with a date either |
---|
494 | before the initial revision or after the file was marked deleted should |
---|
495 | remove the working file. For extra credit, extend the notion of `deleted' to |
---|
496 | include `renamed'. RCS should support arbitrary combinations of renaming and |
---|
497 | deletion, e.g. renaming A to B and B to A, checking in new revisions to both |
---|
498 | files, and then renaming them back. |
---|
499 | |
---|
500 | Be able to check in an entire directory structure into a single RCS file. |
---|
501 | |
---|
502 | Use a better scheme for locking revisions; the current scheme requires |
---|
503 | changing the RCS file just to lock or unlock a revision. |
---|
504 | The new scheme should coexist as well as possible with older versions of RCS, |
---|
505 | and should avoid the rare NFS bugs mentioned in rcsedit.c. |
---|
506 | E.g. if there's a reliable lockd running, RCS should use it |
---|
507 | instead of relying on NFS. |
---|
508 | |
---|
509 | Add rcs options for changing keyword names, e.g. XConsortium instead of Id. |
---|
510 | |
---|
511 | Add a `$Description' keyword; but this may be tricky, since descriptions can |
---|
512 | contain newlines and $s. |
---|
513 | |
---|
514 | Add a `$Copyright' keyword that expands to a copyright notice. |
---|
515 | |
---|
516 | Add frozen branches a la SCCS. In general, be able to emulate all of |
---|
517 | SCCS, so that an SCCS-to-RCS program can be practical. For example, |
---|
518 | there should be an equivalent to the SCCS prt command. |
---|
519 | |
---|
520 | Add support for distributed RCS, where widely separated |
---|
521 | users cannot easily access each others' RCS files, |
---|
522 | and must periodically distribute and reconcile new revisions. |
---|
523 | |
---|
524 | Be able to create empty branches. |
---|
525 | |
---|
526 | Be able to store just deltas from a read-only principal copy, |
---|
527 | e.g. from source on CD-ROM. |
---|
528 | |
---|
529 | Improve RCS's method for storing binary files. |
---|
530 | Although it is more efficient than SCCS's, |
---|
531 | the diff algorithm is still line oriented, |
---|
532 | and often generates long output for minor changes to an executable file. |
---|
533 | |
---|
534 | From the user's point of view, it would be best if |
---|
535 | RCS detected and handled binary files without human intervention, |
---|
536 | switching expansion methods as needed from revision to revision. |
---|
537 | |
---|
538 | Allow RCS to determine automagically whether -ko or -kb should be the default |
---|
539 | by inspecting the file's contents or name. The magic should be optional |
---|
540 | and user-programmable. |
---|
541 | |
---|
542 | Extend the grammar of RCS files so that keywords need not be in a fixed order. |
---|
543 | |
---|
544 | Internationalize messages; unfortunately, there's no common standard yet. |
---|
545 | This requires a change in RCS file format because of the |
---|
546 | `empty log message' and `checked in with -k' hacks inside RCS files. |
---|
547 | |
---|
548 | Add documentation in texinfo format. |
---|