1Changes since 1.11.1: 2 3* Read only access was broken - now fixed. 4 5Changes since 1.11: 6 7* There was a bug in the diff code which caused conflicts to be flagged which shouldn't 8have been. This has been fixed. 9 10* New "cvs rlog" and "cvs rannotate" commands have been added to get log 11messages and annotations without having to have a checked-out copy. 12 13* The VMS client now accepts wildcards if you're running VMS 7.x. 14 15* ZLIB has been updated to version 1.1.3, the most current version. This 16includes mostly some optimizations and minor bug fixes. 17 18* The ~/.cvspass file has a slightly modified format. CVSROOTs are now 19stored in a new canonical form - hostnames are now case insensitive and port 20numbers are always stored in the new format. Until a new login for a 21particular CVSROOT is performed with the new version of CVS, new and old 22versions of CVS should interoperate invisibly. After that point, an extra login 23using the old version of CVS may be necessary to continue to allow the new and 24old versions of CVS to interoperate using the same ~/.cvspass file and CVSROOT. 25The exception to this rule occurs when the CVSROOTs used with the different 26versions use case insensitively different hostnames, for example, "empress", 27and "empress.2-wit.com". 28 29* A password and a port number may now be specified in CVSROOT for pserver 30connections. The new format is: 31 32 :pserver:[[user][:password]@]host[:[port]]/path 33 34Note that passwords specified in a checkout command will be saved in the clear 35in the CVS/Root file in each created directory, so this is not recommended, 36except perhaps when accessing anonymous repositories or the like. 37 38* The distribution has been converted to use Automake. This shouldn't affect 39most users except to ease some portability concerns, but if you are building 40from the repository and encounter problems with the makefiles, you might try 41running ./noautoconf.sh after a fresh update -AC. 42 43Changes since 1.10: 44 45* The new "cvs version" command gives a short version message. If 46the repository is remote, both the client and server versions are 47reported. 48 49* "cvs admin -t" now works correctly in client/server mode. 50 51* The "cvs history" command output format has changed -- the date 52now includes the year and is given is ISO 8601 format (yyyy-mm-dd). 53Also, the new LogHistory option in CVSROOT/config can be used to 54control what information gets recorded in the log file and code has 55been added to record file removals. 56 57* The buggy PreservePermissions code has been disabled. 58 59* Anonymous read-only access can now be done without requiring a 60password. On the server side, simply give that user (presumably 61`anonymous') an empty password in the CVSROOT/passwd file, and then 62any received password will authenticate successfully. 63 64* There is a new access method :fork: which is similar to :local: 65except that it is implemented via the CVS remote protocol, and thus 66has a somewhat different set of quirks and bugs. 67 68* The -d command line option no longer updates the CVS/Root file. For 69one thing, the CVS 1.9/1.10 behavior never had updated CVS/Root in 70subdirectories, and for another, it didn't seem that popular in 71general. So this change restores the CVS 1.8 behavior (which is also 72the CVS 1.9/1.10 behavior if the environment variable 73CVS_IGNORE_REMOTE_ROOT is set; with this change, 74CVS_IGNORE_REMOTE_ROOT no longer has any effect). 75 76* It is now possible for a single CVS command to recurse into several 77CVS roots. This includes roots which are located on several servers, 78or which are both remote and local. CVS will make connections to as 79many servers as necessary. 80 81* It is now possible to put the CVS lock files in a directory 82set by the new LockDir option in CVSROOT/config. The default 83continues to be to put the lock files in the repository itself. 84 85Changes from 1.9 to 1.10: 86 87* There is a new feature, enabled by TopLevelAdmin in CVSROOT/config, 88which tells CVS to modify the behavior of the "checkout" command. The 89command now creates a CVS directory at the top level of the new 90working directory, in addition to CVS directories created within 91checked-out directories. See the Cederqvist for details. 92 93* There is an optional set of features, enabled by PreservePermissions 94in CVSROOT/config, which allow CVS to store unix-specific file 95information such as permissions, file ownership, and links. See the 96Cederqvist for details. 97 98* One can now authenticate and encrypt using the GSSAPI network 99security interface. For details see the Cederqvist's description of 100specifying :gserver: in CVSROOT, and the -a global option. 101 102* All access to RCS files is now implemented internally rather than by 103calling RCS programs. The main user-visible consequence of this is 104that there is no need to worry about making sure that CVS finds the 105correct version of RCS. The -b global option and the RCSBIN setting 106in CVSROOT/config are still accepted but don't do anything. The 107$RCSBIN internal variable in administrative files is no longer 108accepted. 109 110* There is a new syntax, "cvs admin -orev1::rev2", which collapses the 111revisions between rev1 and rev2 without deleting rev1 or rev2 112themselves. 113 114* There is a new administrative file CVSROOT/config which allows one 115to specify miscellaneous aspects of CVS configuration. Currently 116supported here: 117 118 - SystemAuth, allows you to prevent pserver from checking for system 119 usernames/passwords. 120 121For more information see the "config" section of cvs.texinfo. 122 123* When setting up the pserver server, one now must specify the 124allowable CVSROOT directories in inetd.conf. See the Password 125authentication server section of cvs.texinfo for details. Note that 126this implies that everyone who is running a pserver server must edit 127inetd.conf when upgrading their CVS. 128 129* The client no longer needs an external patch program (assuming both 130the client and the server have been updated to the new version). 131 132* "cvs admin [options]" will now recurse. In previous versions of 133CVS, it was an error and one needed to specify "cvs admin [options] ." 134to recurse. This change brings admin in line with the other CVS 135commands. 136 137* New "logout" command to remove the password for a remote cvs 138repository from the cvspass file. 139 140* Read-only repository access is implemented for the 141password-authenticated server (other access methods are just governed 142by Unix file permissions, since they require login access to the 143repository machine anyway). See the "Repository" section of 144cvs.texinfo for details, including a discussion of security issues. 145Note that the requirement that read-only users be able to create locks 146and write the history file still applies. 147 148* There is a new administrative file verifymsg which is like editinfo 149but merely validates the message, rather than also getting it from the 150user. It therefore works with client/server CVS or if one uses the -m 151or -F options to commit. See the verifymsg section of cvs.texinfo for 152details. 153 154* The %s format formerly accepted in loginfo has been extended to 155formats such as %{sVv}, so that loginfo scripts have access to the 156version numbers being changed. See the Loginfo section of cvs.texinfo 157for details. 158 159* The postscript documentation (doc/cvs.ps) shipped with CVS is now 160formatted for US letter size instead of A4. This is not because we 161consider this size "better" than A4, but because we believe that the 162US letter version will print better on A4 paper than the other way 163around. 164 165* The "cvs export" command is now logged in the history file and there 166is a "cvs history -x E" command to select history file entries 167produced by export. 168 169* CVS no longer uses the CVS_PASSWORD environment variable. Storing 170passwords in cleartext in an environment variable is a security risk, 171especially since (on BSD variants) any user on the system can display 172any process's environment using 'ps'. Users should use the 'cvs 173login' command instead. 174 175 176Changes from 1.8 to 1.9: 177 178* Windows NT client should now work on Windows 95 as well. 179 180* New option "--help-synonyms" prints a list of all recognized command 181synonyms. 182 183* The "log" command is now implemented internally rather than via the 184RCS "rlog" program. The main user-visible consequence is that 185symbolic branch names now work (for example "cvs log -rbranch1"). 186Also, the date formats accepted by -d have changed. They previously 187had been a bewildering variety of poorly-documented date formats. Now 188they are the same as the date formats accepted by the -D options to 189the other CVS commands, which is also a (different) bewildering 190variety of poorly-documented date formats, but at least we are 191consistently bewildering :-). 192 193* Encryption is now supported over a Kerberos client/server 194connection. The new "-x" global option requests it. You must 195configure with the --enable-encryption option in order to enable 196encryption. 197 198* The format of the CVS commit message has changed slightly when 199committing changes on a branch. The tag on which the commit is 200ocurring is now reported correctly in all cases. 201 202* New flag -k in wrappers allows you to specify the keyword expansion 203mode for added files based on their name. For example, you can 204specify that files whose name matches *.exe are binary by default. 205See the Wrappers section of cvs.texinfo for more details. 206 207* Remote CVS with the "-z" option now uses the zlib library (included 208with CVS) to compress all communication between the client and the 209server, rather than invoking gzip on each file separately. This means 210that compression is better and there is no need for an external gzip 211program (except to interoperate with older version of CVS). 212 213* The "cvs rlog" command is deprecated and running it will print a 214warning; use the synonymous "cvs log" command instead. It is 215confusing for rlog to mean the same as log because some other CVS 216commands are in pairs consisting of a plain command which operates on 217a working directory and an "r" command which does not (diff/rdiff; 218tag/rtag). 219 220* "cvs diff" has a bunch of new options, mostly long options. Most of 221these work only if rcsdiff and diff support them, and are named the 222same as the corresponding options to diff. 223 224* The -q and -Q command options to "cvs diff" were removed (use the 225global options instead). This brings "cvs diff" into line with the 226rest of the CVS commands. 227 228* The "annotate" command can now be used to annotate a revision other 229than the head revision on the trunk (see the -r, -D, and -f options in 230the annotate node of cvs.texinfo for details). 231 232* The "tag" command has a new option "-c" which checks that all files 233 are not locally modified before tagging. 234 235* The -d command line option now overrides the cvsroot setting stored 236in the CVS/Root file in each working directory, and specifying -d will 237cause CVS/Root to be updated. 238 239* Local (non-client/server) CVS now runs on Windows NT. See 240windows-NT/README for details. 241 242* The CVSROOT variable specification has changed to support more 243access methods. In addition to "pserver," "server" (internal rsh 244client), "ext" (external rsh client), "kserver" (kerberos), and 245"local" (local filesystem access) can now be specified. For more 246details on each method, see cvs.texinfo (there is an index entry for 247:local: and each of the other access methods). 248 249* The "login" command no longer prompts the user for username and 250hostname, since one will have to provide that information via the `-d' 251flag or by setting CVSROOT. 252 253Changes from 1.7 to 1.8: 254 255* New "cvs annotate" command to display the last modification for each 256line of a file, with the revision number, user checking in the 257modification, and date of the modification. For more information see 258the `annotate' node in cvs.texinfo. 259 260* The cvsinit shell script has been replaced by a cvs init command. 261The cvs init command creates some example administrative files which 262are similar to the files found in the examples directory (and copied 263by cvsinit) in previous releases. 264 265* Added the patterns *.olb *.exe _$* *$ to default ignore list. 266 267* There is now a $USER internal variable for *info files. 268 269* There is no longer a separate `mkmodules' program; the functionality 270is now built into `cvs'. If upgrading an old repository, it is OK to 271leave in the lines in the modules file which run mkmodules (the 272mkmodules actions will get done twice, but that is harmless); you will 273probably want to remove them once you are no longer using the old CVS. 274 275* One can now specify user variables in *info files via the 276${=varname} syntax; there is a -s global option to set them. See the 277Variables node in cvs.texinfo for details. 278 279Changes from 1.6 to 1.7: 280 281* The default ignore list has changed slightly: *.obj has been added 282and CVS* has been changed to CVS CVS.adm. 283 284* CVS now supports password authentication when accessing remote 285repositories; this is useful for sites that can't use rsh (because of 286a firewall, for example), and also don't have kerberos. See node 287"Password authenticated" (in "Remote repositories", in 288doc/cvs.texinfo) for more details. Note: This feature requires both 289the client and server to be upgraded. 290 291* Using the -kb option to specify binary files now works--most cases 292did not work before. See the "Binary files" section of 293doc/cvs.texinfo for details. 294 295* New developer communication features. See the "Watches" section of 296doc/cvs.texinfo for details. 297 298* RCS keyword "Name" supported for "cvs update -r <tag>" and "cvs 299checkout -r <tag>". 300 301* If there is a group whose name matches a compiled in value which 302defaults to "cvsadmin", only members of that group can use "cvs 303admin". This replaces the CVS_NOADMIN option. 304 305* CVS now sets the modes of files in the repository based on the 306CVSUMASK environment variable or a compiled in value defaulting to 307002. This way other developers will be able to access the files in 308the repository regardless of the umask of the developer creating them. 309 310* The command names in .cvsrc now match the official name of the 311command, not the one (possibly an alias) by which it was invoked. If 312you had previously relied on "cvs di" and "cvs diff" using different 313options, instead use a shell function or alias (for example "alias 314cvsdi='cvs diff -u'"). You also can specify global CVS options (like 315"-z") using the command name "cvs". 316 317Changes from 1.5 to 1.6: 318 319* Del updated the man page to include all of the new features 320of CVS 1.6. 321 322* "cvs tag" now supports a "-r | -D" option for tagging an already 323tagged revision / specific revision of a file. 324 325* There is a "taginfo" file in CVSROOT that supports filtering and 326recording of tag operations. 327 328* Long options support added, including --help and --version options. 329 330* "cvs release" no longer cares whether or not the directory being 331released has an entry in the `modules' file. 332 333* The modules file now takes a -e option which is used instead of -o 334for "cvs export". If your modules file has a -o option which you want 335to be used for "cvs export", change it to specify -e as well as -o. 336 337* "cvs export" now takes a -k option to set RCS keyword expansion. 338This way you can export binary files. If you want the old behavior, 339you need to specify -kv. 340 341* "cvs update", "cvs rdiff", "cvs checkout", "cvs import", "cvs 342release", "cvs rtag", and "cvs tag" used to take -q and -Q options 343after the command name (e.g. "cvs update -q"). This was confusing 344because other commands, such as "cvs ci", did not. So the options 345after the command name have been removed and you must now specify, for 346example, "cvs -q update", which has been supported since CVS 1.3. 347 348* New "wrappers" feature. This allows you to set a hook which 349transforms files on their way in and out of cvs (apparently on the 350NeXT there is some particular usefulness in tarring things up in the 351repository). It also allows you to declare files as merge-by-copy 352which means that instead of trying to merge the file, CVS will merely 353copy the new version. There is a CVSROOT/cvswrappers file and an 354optionsl ~/.cvswrappers file to support this feature. 355 356* You can set CVSROOT to user@host:dir, not just host:dir, if your 357username on the server host is different than on the client host. 358 359* VISUAL is accepted as well as EDITOR. 360 361* $CVSROOT is expanded in *info files. 362 363Changes from 1.4A2 to 1.5: 364 365* Remote implementation. This is very helpful when collaborating on a 366project with someone across a wide-area network. This release can 367also be used locally, like other CVS versions, if you have no need for 368remote access. 369 370Here are some of the features of the remote implementation: 371- It uses reliable transport protocols (TCP/IP) for remote repository 372 access, not NFS. NFS is unusable over long distances (and sometimes 373 over short distances) 374- It transfers only those files that have changed in the repository or 375 the working directory. To save transmission time, it will transfer 376 patches when appropriate, and can compress data for transmission. 377- The server never holds CVS locks while waiting for a reply from the client; 378 this makes the system robust when used over flaky networks. 379 380The remote features are documented in doc/cvsclient.texi in the CVS 381distribution, but the main doc file, cvs.texinfo, has not yet been 382updated to include the remote features. 383 384* Death support. See src/README-rm-add for more information on this. 385 386* Many speedups, especially from jtc@cygnus.com. 387 388* CVS 1.2 compatibility code has been removed as a speedup. If you 389have working directories checked out by CVS 1.2, CVS 1.3 or 1.4A2 will 390try to convert them, but CVS 1.5 and later will not (if the working 391directory is up to date and contains no extraneous files, you can just 392remove it, and then check out a new working directory). Likewise if 393your repository contains a CVSROOT.adm directory instead of a CVSROOT 394directory, you need to rename it. 395 396Fri Oct 21 20:58:54 1994 Brian Berliner <berliner@sun.com> 397 398 * Changes between CVS 1.3 and CVS 1.4 Alpha-2 399 400 * A new program, "cvsbug", is provided to let you send bug reports 401 directly to the CVS maintainers. Please use it instead of sending 402 mail to the info-cvs mailing list. If your build fails, you may 403 have to invoke "cvsbug" directly from the "src" directory as 404 "src/cvsbug.sh". 405 406 * A new User's Guide and Tutorial, written by Per Cederqvist 407 <ceder@signum.se> of Signum Support. See the "doc" directory. A 408 PostScript version is included as "doc/cvs.ps". 409 410 * The Frequesntly Asked Questions file, FAQ, has been added to the 411 release. Unfortunately, its contents are likely out-of-date. 412 413 * The "cvsinit" shell script is now installed in the $prefix/bin 414 directory like the other programs. You can now create new 415 CVS repositories with great ease. 416 417 * Index: lines are now printed on output from 'diff' and 'rdiff', 418 in order to facilitate application of patches to multiple subdirs. 419 420 * Support for a ~/.cvsrc file, which allows you to specify options 421 that are always supposed to be given to a specific command. This 422 feature shows the non-orthogonality of the option set, since while 423 there may be an option to turn something on, the option to turn 424 that same thing off may not exist. 425 426 * You can now list subdirectories that you wish to ignore in a 427 modules listing, such as: 428 429 gcc -a gnu/gcc, !gnu/gcc/testsuites 430 431 which will check out everything underneath gnu/gcc, except 432 everything underneath gnu/gcc/testsuites. 433 434 * It is now much harder to accidentally overwrite an existing tag 435 name, since attempting to move a tag name will result in a error, 436 unless the -F (force) flag is given to the tag subcommands. 437 438 * Better error checking on matching of the repository used to 439 check code out from against the repository the current cvs 440 commnands would use. (Thanks to Mark Baushke <mdb@cisco.com>) 441 442 * Better support for sites with multiple CVSROOT repositories has 443 been contributed. The file "CVS/Root" in your working directory 444 is created to hold the full path to the CVS repository and a 445 simple check is made against your current CVSROOT setting. 446 447 * You can now specify an RCS keyword substitution value when you 448 import files into the repository. 449 450 * Uses a much newer version of Autoconf, and conforms to the GNU 451 coding standards much more closely. No, it still doesn't have 452 long option names. 453 454 * Code cleanup. Many passes through gcc -Wall helped to identify 455 a number of questionable constructs. Most arbitrary length limits 456 were removed. 457 458 * Profiling to determine bottlenecks helped to identify the best 459 places to spend time speeding up the code, which was then done. A 460 number of performance enhancements in filename matching have sped 461 up checkouts. 462 463 * Many more contributions have been added to the "contrib" 464 directory. See the README file in that directory for more 465 information. 466 467 * "cvs commit" will try harder to not change the file's 468 modification time after the commit. If the file does not change 469 as a result of the commit operation, CVS will preserve the 470 original modification time, thus speeding up future make-type 471 builds. 472 473 * "cvs commit" now includes any removed files in the (optional) 474 pre-commit checking program that may be invoked. Previously, only 475 added and modified files were included. 476 477 * It is now possible to commit a file directly onto the trunk at a 478 specific revision level by doing "cvs commit -r3.0 file.c", where 479 "3.0" specifies the revision you wish to create. The file must be 480 up-to-date with the current head of the trunk for this to succeed. 481 482 * "cvs commit" will now function with a pre-commit program that 483 has arguments specified in the "commitinfo" file. 484 485 * The "mkmodules" program will now look within the 486 $CVSROOT/CVSROOT/checkoutlist" file for any additional files that 487 should be automatically checked out within CVSROOT; mkmodules also 488 tries harder to preserve any execute bits the files may have 489 originally had. 490 491 * "cvs diff" is much more accurate about its exit status now. It 492 now returns the maximum exit status of any invoked diff. 493 494 * The "-I !" option is now supported for the import and update 495 commands correctly. It will properly clear the ignore list now. 496 497 * Some problems with "cvs import" handling of .cvsignore have been 498 fixed; as well, some rampant recursion problems with import have 499 also been fixed. 500 501 * "cvs rdiff" (aka "cvs patch") now tries to set the modify time 502 of any temporary files it uses to match those specified for the 503 particular revision. This allows a more accurate patch image to 504 be created. 505 506 * "cvs status" has improved revision descriptions. "Working 507 revision" is used for the revision of the working file that you 508 edit directly; "Repository revision" is the revision of the file 509 with the $CVSROOT source repository. Also, the output is clearer 510 with regard to sticky and branch revisions. 511 512 * CVS no longer dumps core when given a mixture of directories and 513 files in sub-directories (as in "cvs ci file1 dir1/file2"). 514 Instead, arguments are now clumped into their respective directory 515 and operated on in chunks, together. 516 517 * If the CVSEDITOR environment variable is set, that editor is 518 used for log messages instead of the EDITOR environment variable. 519 This makes it easy to substitute intelligent programs to make more 520 elaborate log messages. Contributed by Mark D Baushke 521 (mdb@cisco.com). 522 523 * Command argument changes: 524 cvs: The "-f" option has been added to ignore 525 the ~/.cvsrc file. 526 commit: Renamed the "-f logfile" option to the 527 "-F logfile" option. Added the "-f" 528 option to force a commit of the specified 529 files (this disables recursion). 530 history: Added "-t timezone" option to force any 531 date-specific output into the specified 532 timezone. 533 import: Added "-d" option to use the file's 534 modification time as the time of the 535 import. Added "-k sub" option to set the 536 default RCS keyword substitution mode for 537 newly-created files. 538 remove: Added "-f" option to force the file's 539 automatic removal if it still exists in 540 the working directory (use with caution). 541 rtag: Added "-F" option to move the tag if it 542 already exists -- new default is to NOT 543 move tags automatically. 544 tag: Added "-F" option to move the tag if it 545 already exists -- new default is to NOT 546 move tags automatically. 547 548Tue Apr 7 15:55:25 1992 Brian Berliner (berliner at sun.com) 549 550 * Changes between CVS 1.3 Beta-3 and official CVS 1.3! 551 552 * A new shell script is provided, "./cvsinit", which can be run at 553 install time to help setup your $CVSROOT area. This can greatly 554 ease your entry into CVS usage. 555 556 * The INSTALL file has been updated to include the machines on 557 which CVS has compiled successfully. I think CVS 1.3 is finally 558 portable. Thanks to all the Beta testers! 559 560 * Support for the "editinfo" file was contributed. This file 561 (located in $CVSROOT/CVSROOT) can be used to specify a special 562 "editor" to run on a per-directory basis within the repository, 563 instead of the usual user's editor. As such, it can verify that 564 the log message entered by the user is of the appropriate form 565 (contains a bugid and test validation, for example). 566 567 * The manual pages cvs(1) and cvs(5) have been updated. 568 569 * The "mkmodules" command now informs you when your modules file 570 has duplicate entries. 571 572 * The "add" command now preserves any per-directory sticky tag when 573 you add a new directory to your checked-out sources. 574 575 * The "admin" command is now a fully recursive interface to the 576 "rcs" program which operates on your checked-out sources. It no 577 longer requires you to specify the full path to the RCS file. 578 579 * The per-file sticky tags can now be effectively removed with 580 "cvs update -A file", even if you had checked out the whole 581 directory with a per-directory sticky tag. This allows a great 582 deal of flexibility in managing the revisions that your checked-out 583 sources are based upon (both per-directory and per-file sticky 584 tags). 585 586 * The "cvs -n commit" command now works, to show which files are 587 out-of-date and will cause the real commit to fail, or which files 588 will fail any pre-commit checks. Also, the "cvs -n import ..." 589 command will now show you what it would've done without actually 590 doing it. 591 592 * Doing "cvs commit modules" to checkin the modules file will no 593 properly run the "mkmodules" program (assuming you have setup your 594 $CVSROOT/CVSROOT/modules file to do so). 595 596 * The -t option in the modules file (which specifies a program to 597 run when you do a "cvs rtag" operation on a module) now gets the 598 symbolic tag as the second argument when invoked. 599 600 * When the source repository is locked by another user, that user's 601 login name will be displayed as the holder of the lock. 602 603 * Doing "cvs checkout module/file.c" now works even if 604 module/file.c is in the Attic (has been removed from main-line 605 development). 606 607 * Doing "cvs commit */Makefile" now works as one would expect. 608 Rather than trying to commit everything recursively, it will now 609 commit just the files specified. 610 611 * The "cvs remove" command is now fully recursive. To schedule a 612 file for removal, all you have to do is "rm file" and "cvs rm". 613 With no arguments, "cvs rm" will schedule all files that have been 614 physically removed for removal from the source repository at the 615 next "cvs commit". 616 617 * The "cvs tag" command now prints "T file" for each file that was 618 tagged by this invocation and "D file" for each file that had the 619 tag removed (as with "cvs tag -d"). 620 621 * The -a option has been added to "cvs rtag" to force it to clean 622 up any old, matching tags for files that have been removed (in the 623 Attic) that may not have been touched by this tag operation. This 624 can help keep a consistent view with your tag, even if you re-use 625 it frequently. 626 627Sat Feb 29 16:02:05 1992 Brian Berliner (berliner at sun.com) 628 629 * Changes between CVS 1.3 Beta-2 and CVS 1.3 Beta-3 630 631 * Many portability fixes, thanks to all the Beta testers! With any 632 luck, this Beta release will compile correctly on most anything. 633 Hey, what are we without our dreams. 634 635 * CVS finally has support for doing isolated development on a 636 branch off the current (or previous!) revisions. This is also 637 extremely nice for generating patches for previously released 638 software while development is progressing on the next release. 639 Here's an example of creating a branch to fix a patch with the 2.0 640 version of the "foo" module, even though we are already well into 641 the 3.0 release. Do: 642 643 % cvs rtag -b -rFOO_2_0 FOO_2_0_Patch foo 644 % cvs checkout -rFOO_2_0_Patch foo 645 % cd foo 646 [[ hack away ]] 647 % cvs commit 648 649 A physical branch will be created in the RCS file only when you 650 actually commit the change. As such, forking development at some 651 random point in time is extremely light-weight -- requiring just a 652 symbolic tag in each file until a commit is done. To fork 653 development at the currently checked out sources, do: 654 655 % cvs tag -b Personal_Hack 656 % cvs update -rPersonal_Hack 657 [[ hack away ]] 658 % cvs commit 659 660 Now, if you decide you want the changes made in the Personal_Hack 661 branch to be merged in with other changes made in the main-line 662 development, you could do: 663 664 % cvs commit # to make Personal_Hack complete 665 % cvs update -A # to update sources to main-line 666 % cvs update -jPersonal_Hack # to merge Personal_Hack 667 668 to update your checked-out sources, or: 669 670 % cvs checkout -jPersonal_Hack module 671 672 to checkout a fresh copy. 673 674 To support this notion of forked development, CVS reserves 675 all even-numbered branches for its own use. In addition, CVS 676 reserves the ".0" and ".1" branches. So, if you intend to do your 677 own branches by hand with RCS, you should use odd-numbered branches 678 starting with ".3", as in "1.1.3", "1.1.5", 1.2.9", .... 679 680 * The "cvs commit" command now supports a fully functional -r 681 option, allowing you to commit your changes to a specific numeric 682 revision or symbolic tag with full consistency checks. Numeric 683 tags are useful for bringing your sources all up to some revision 684 level: 685 686 % cvs commit -r2.0 687 688 For symbolic tags, you can only commit to a tag that references a 689 branch in the RCS file. One created by "cvs rtag -b" or from 690 "cvs tag -b" is appropriate (see below). 691 692 * Roland Pesch <pesch@cygnus.com> and K. Richard Pixley 693 <rich@cygnus.com> were kind enough to contribute two new manual 694 pages for CVS: cvs(1) and cvs(5). Most of the new CVS 1.3 features 695 are now documented, with the exception of the new branch support 696 added to commit/rtag/tag/checkout/update. 697 698 * The -j options of checkout/update have been added. The "cvs join" 699 command has been removed. 700 701 With one -j option, CVS will merge the changes made between the 702 resulting revision and the revision that it is based on (e.g., if 703 the tag refers to a branch, CVS will merge all changes made in 704 that branch into your working file). 705 706 With two -j options, CVS will merge in the changes between the two 707 respective revisions. This can be used to "remove" a certain delta 708 from your working file. E.g., If the file foo.c is based on 709 revision 1.6 and I want to remove the changes made between 1.3 and 710 1.5, I might do: 711 712 % cvs update -j1.5 -j1.3 foo.c # note the order... 713 714 In addition, each -j option can contain on optional date 715 specification which, when used with branches, can limit the chosen 716 revision to one within a specific date. An optional date is 717 specified by adding a colon (:) to the tag, as in: 718 719 -jSymbolic_Tag:Date_Specifier 720 721 An example might be what "cvs import" tells you to do when you have 722 just imported sources that have conflicts with local changes: 723 724 % cvs checkout -jTAG:yesterday -jTAG module 725 726 which tells CVS to merge in the changes made to the branch 727 specified by TAG in the last 24 hours. If this is not what is 728 intended, substitute "yesterday" for whatever format of date that 729 is appropriate, like: 730 731 % cvs checkout -jTAG:'1 week ago' -jTAG module 732 733 * "cvs diff" now supports the special tags "BASE" and "HEAD". So, 734 the command: 735 736 % cvs diff -u -rBASE -rHEAD 737 738 will effectively show the changes made by others (in unidiff 739 format) that will be merged into your working sources with your 740 next "cvs update" command. "-rBASE" resolves to the revision that 741 your working file is based on. "-rHEAD" resolves to the current 742 head of the branch or trunk that you are working on. 743 744 * The -P option of "cvs checkout" now means to Prune empty 745 directories, as with "update". The default is to not remove empty 746 directories. However, if you do "checkout" with any -r options, -P 747 will be implied. I.e., checking out with a tag will cause empty 748 directories to be pruned automatically. 749 750 * The new file INSTALL describes how to install CVS, including 751 detailed descriptions of interfaces to "configure". 752 753 * The example loginfo file in examples/loginfo has been updated to 754 use the perl script included in contrib/log.pl. The nice thing 755 about this log program is that it records the revision numbers of 756 your change in the log message. 757 758 Example files for commitinfo and rcsinfo are now included in the 759 examples directory. 760 761 * All "#if defined(__STDC__) && __STDC__ == 1" lines have been 762 changed to be "#if __STDC__" to fix some problems with the former. 763 764 * The lib/regex.[ch] files have been updated to the 1.3 release of 765 the GNU regex package. 766 767 * The ndbm emulation routines included with CVS 1.3 Beta-2 in the 768 src/ndbm.[ch] files has been moved into the src/myndbm.[ch] files 769 to avoid any conflict with the system <ndbm.h> header file. If 770 you had a previous CVS 1.3 Beta release, you will want to "cvs 771 remove ndbm.[ch]" form your copy of CVS as well. 772 773 * "cvs add" and "cvs remove" are a bit more verbose, telling you 774 what to do to add/remove your file permanently. 775 776 * We no longer mess with /dev/tty in "commit" and "add". 777 778 * More things are quiet with the -Q option set. 779 780 * New src/config.h option: If CVS_BADROOT is set, CVS will not 781 allow people really logged in as "root" to commit changes. 782 783 * "cvs diff" exits with a status of 0 if there were no diffs, 1 if 784 there were diffs, and 2 if there were errors. 785 786 * "cvs -n diff" is now supported so that you can still run diffs 787 even while in the middle of committing files. 788 789 * Handling of the CVS/Entries file is now much more robust. 790 791 * The default file ignore list now includes "*.so". 792 793 * "cvs import" did not expand '@' in the log message correctly. It 794 does now. Also, import now uses the ignore file facility 795 correctly. 796 797 Import will now tell you whether there were conflicts that need to 798 be resolved, and how to resolve them. 799 800 * "cvs log" has been changed so that you can "log" things that are 801 not a part of the current release (in the Attic). 802 803 * If you don't change the editor message on commit, CVS now prompts 804 you with the choice: 805 806 !)reuse this message unchanged for remaining dirs 807 808 which allows you to tell CVS that you have no intention of changing 809 the log message for the remainder of the commit. 810 811 * It is no longer necessary to have CVSROOT set if you are using 812 the -H option to get Usage information on the commands. 813 814 * Command argument changes: 815 checkout: -P handling changed as described above. 816 New -j option (up to 2 can be specified) 817 for doing rcsmerge kind of things on 818 checkout. 819 commit: -r option now supports committing to a 820 numeric or symbolic tags, with some 821 restrictions. Full consistency checks will 822 be done. 823 Added "-f logfile" option, which tells 824 commit to glean the log message from the 825 specified file, rather than invoking the 826 editor. 827 rtag: Added -b option to create a branch tag, 828 useful for creating a patch for a previous 829 release, or for forking development. 830 tag: Added -b option to create a branch tag, 831 useful for creating a patch for a previous 832 release, or for forking development. 833 update: New -j option (up to 2 can be specified) 834 for doing rcsmerge kind of things on 835 update. 836 837Thu Jan 9 10:51:35 MST 1992 Jeff Polk (polk at BSDI.COM) 838 839 * Changes between CVS 1.3 Beta-1 and CVS 1.3 Beta-2 840 841 * Thanks to K. Richard Pixley at Cygnus we now have function 842 prototypes in all the files 843 844 * Some small changes to configure for portability. There have 845 been other portability problems submitted that have not been fixed 846 (Brian will be working on those). Additionally all __STDC__ 847 tests have been modified to check __STDC__ against the constant 1 848 (this is what the Second edition of K&R says must be true). 849 850 * Lots of additional error checking for forked processes (run_exec) 851 (thanks again to K. Richard Pixley) 852 853 * Lots of miscellaneous bug fixes - including but certainly not 854 limited to: 855 various commit core dumps 856 various update core dumps 857 bogus results from status with numeric sticky tags 858 commitprog used freed memory 859 Entries file corruption caused by No_Difference 860 commit to revision broken (now works if branch exists) 861 ignore file processing broken for * and ! 862 ignore processing didn't handle memory reasonably 863 miscellaneous bugs in the recursion processor 864 file descriptor leak in ParseInfo 865 CVSROOT.adm->CVSROOT rename bug 866 lots of lint fixes 867 868 * Reformatted all the code in src (with GNU indent) and then 869 went back and fixed prototypes, etc since indent gets confused. The 870 rationale is that it is better to do it sooner than later and now 871 everything is consistent and will hopefully stay that way. 872 The basic options to indent were: "-bad -bbb -bap -cdb -d0 -bl -bli0 873 -nce -pcs -cs -cli4 -di1 -nbc -psl -lp -i4 -ip4 -c41" and then 874 miscellaneous formatting fixes were applied. Note also that the 875 "-nfc1" or "-nfca" may be appropriate in files where comments have 876 been carefully formatted (e.g, modules.c). 877 878Sat Dec 14 20:35:22 1991 Brian Berliner (berliner at sun.com) 879 880 * Changes between CVS 1.2 and CVS 1.3 Beta are described here. 881 882 * Lots of portability work. CVS now uses the GNU "configure" 883 script to dynamically determine the features provided by your 884 system. It probably is not foolproof, but it is better than 885 nothing. Please let me know of any portability problems. Some 886 file names were changed to fit within 14-characters. 887 888 * CVS has a new RCS parser that is much more flexible and 889 extensible. It should read all known RCS ",v" format files. 890 891 * Most of the commands now are fully recursive, rather than just 892 operating on the current directory alone. This includes "commit", 893 which makes it real easy to do an "atomic" commit of all the 894 changes made to a CVS hierarchy of sources. Most of the commands 895 also correctly handle file names that are in directories other than 896 ".", including absolute path names. Commands now accept the "-R" 897 option to force recursion on (though it is always the default now) 898 and the "-l" option to force recursion off, doing just "." and not 899 any sub-directories. 900 901 * CVS supports many of the features provided with the RCS 5.x 902 distribution - including the new "-k" keyword expansion options. I 903 recommend using RCS 5.x (5.6 is the current official RCS version) 904 and GNU diff 1.15 (or later) distributions with CVS. 905 906 * Checking out files with symbolic tags/dates is now "sticky", in 907 that CVS remembers the tag/date used for each file (and directory) 908 and will use that tag/date automatically on the next "update" call. 909 This stickyness also holds for files checked out with the the new 910 RCS 5.x "-k" options. 911 912 * The "cvs diff" command now recognizes all of the rcsdiff 5.x 913 options. Unidiff format is available by installing the GNU 914 diff 1.15 distribution. 915 916 * The old "CVS.adm" directories created on checkout are now called 917 "CVS" directories, to look more like "RCS" and "SCCS". Old CVS.adm 918 directories are automagically converted to CVS directories. The 919 old "CVSROOT.adm" directory within the source repository is 920 automagically changed into a "CVSROOT" directory as well. 921 922 * Symbolic links in the source repository are fully supported ONLY 923 if you use RCS 5.6 or later and (of course) your system supports 924 symlinks. 925 926 * A history database has been contributed which maintains the 927 history of certain CVS operations, as well as providing a wide array 928 of querying options. 929 930 * The "cvs" program has a "-n" option which can be used with the 931 "update" command to show what would be updated without actually 932 doing the update, like: "cvs -n update". All usage statements 933 have been cleaned up and made more verbose. 934 935 * The module database parsing has been rewritten. The new format 936 is compatible with the old format, but with much more 937 functionality. It allows modules to be created that grab pieces or 938 whole directories from various different parts of your source 939 repository. Module-relative specifications are also correctly 940 recognized now, like "cvs checkout module/file.c". 941 942 * A configurable template can be specified such that on a "commit", 943 certain directories can supply a template that the user must fill 944 before completing the commit operation. 945 946 * A configurable pre-commit checking program can be specified which 947 will run to verify that a "commit" can happen. This feature can be 948 used to restrict certain users from changing certain pieces of the 949 source repository, or denying commits to the entire source 950 repository. 951 952 * The new "cvs export" command is much like "checkout", but 953 establishes defaults suitable for exporting code to others (expands 954 out keywords, forces the use of a symbolic tag, and does not create 955 "CVS" directories within the checked out sources. 956 957 * The new "cvs import" command replaces the deprecated "checkin" 958 shell script and is used to import sources into CVS control. It is 959 also much faster for the first-time import. Some algorithmic 960 improvements have also been made to reduce the number of 961 conflicting files on next-time imports. 962 963 * The new "cvs admin" command is basically an interface to the 964 "rcs" program. (Not yet implemented very well). 965 966 * Signal handling (on systems with BSD or POSIX signals) is much 967 improved. Interrupting CVS now works with a single interrupt! 968 969 * CVS now invokes RCS commands by direct fork/exec rather than 970 calling system(3). This improves performance by removing a call to 971 the shell to parse the arguments. 972 973 * Support for the .cvsignore file has been contributed. CVS will 974 now show "unknown" files as "? filename" as the result of an "update" 975 command. The .cvsignore file can be used to add files to the 976 current list of ignored files so that they won't show up as unknown. 977 978 * Command argument changes: 979 cvs: Added -l to turn off history logging. 980 Added -n to show what would be done without actually 981 doing anything. 982 Added -q/-Q for quiet and really quiet settings. 983 Added -t to show debugging trace. 984 add: Added -k to allow RCS 5.x -k options to be specified. 985 admin: New command; an interface to rcs(1). 986 checkout: Added -A to reset sticky tags/date/options. 987 Added -N to not shorten module paths. 988 Added -R option to force recursion. 989 Changed -p (prune empty directories) to -P option. 990 Changed -f option; forcing tags match is now default. 991 Added -p option to checkout module to standard output. 992 Added -s option to cat the modules db with status. 993 Added -d option to checkout in the specified directory. 994 Added -k option to use RCS 5.x -k support. 995 commit: Removed -a option; use -l instead. 996 Removed -f option. 997 Added -l option to disable recursion. 998 Added -R option to force recursion. 999 If no files specified, commit is recursive. 1000 diff: Now recognizes all RCS 5.x rcsdiff options. 1001 Added -l option to disable recursion. 1002 Added -R option to force recursion. 1003 history: New command; displays info about CVS usage. 1004 import: Replaces "checkin" shell script; imports sources 1005 under CVS control. Ignores files on the ignore 1006 list (see -I option or .cvsignore description above). 1007 export: New command; like "checkout", but w/special options 1008 turned on by default to facilitate exporting sources. 1009 join: Added -B option to join from base of the branch; 1010 join now defaults to only joining with the top two 1011 revisions on the branch. 1012 Added -k option for RCS 5.x -k support. 1013 log: Supports all RCS 5.x options. 1014 Added -l option to disable recursion. 1015 Added -R option to force recursion. 1016 patch: Changed -f option; forcing tags match is now default. 1017 Added -c option to force context-style diffs. 1018 Added -u option to support unidiff-style diffs. 1019 Added -V option to support RCS specific-version 1020 keyword expansion formats. 1021 Added -R option to force recursion. 1022 remove: No option changes. It's a bit more verbose. 1023 rtag: Equivalent to the old "cvs tag" command. 1024 No option changes. It's a lot faster for re-tag. 1025 status: New output formats with more information. 1026 Added -l option to disable recursion. 1027 Added -R option to force recursion. 1028 Added -v option to show symbolic tags for files. 1029 tag: Functionality changed to tag checked out files 1030 rather than modules; use "rtag" command to get the 1031 old "cvs tag" behaviour. 1032 update: Added -A to reset sticky tags/date/options. 1033 Changed -p (prune empty directories) to -P option. 1034 Changed -f option; forcing tags match is now default. 1035 Added -p option to checkout module to standard output. 1036 Added -I option to add files to the ignore list. 1037 Added -R option to force recursion. 1038 1039 Major Contributors: 1040 1041 * Jeff Polk <polk@bsdi.com> rewrote most of the grody code of CVS 1042 1.2. He made just about everything dynamic (by using malloc), 1043 added a generic hashed list manager, re-wrote the modules database 1044 parsing in a compatible - but extended way, generalized directory 1045 hierarchy recursion for virtually all the commands (including 1046 commit!), generalized the loginfo file to be used for pre-commit 1047 checks and commit templates, wrote a new and flexible RCS parser, 1048 fixed an uncountable number of bugs, and helped in the design of 1049 future CVS features. If there's anything gross left in CVS, it's 1050 probably my fault! 1051 1052 * David G. Grubbs <dgg@odi.com> contributed the CVS "history" and 1053 "release" commands. As well as the ever-so-useful "-n" option of 1054 CVS which tells CVS to show what it would do, without actually 1055 doing it. He also contributed support for the .cvsignore file. 1056 1057 * Paul Sander, HaL Computer Systems, Inc. <paul@hal.com> wrote and 1058 contributed the code in lib/sighandle.c. I added support for 1059 POSIX, BSD, and non-POSIX/non-BSD systems. 1060 1061 * Free Software Foundation contributed the "configure" script and 1062 other compatibility support in the "lib" directory, which will help 1063 make CVS much more portable. 1064 1065 * Many others have contributed bug reports and enhancement requests. 1066 Some have even submitted actual code which I have not had time yet 1067 to integrate into CVS. Maybe for the next release. 1068 1069 * Thanks to you all! 1070 1071Wed Feb 6 10:10:58 1991 Brian Berliner (berliner at sun.com) 1072 1073 * Changes from CVS 1.0 Patchlevel 1 to CVS 1.0 Patchlevel 2; also 1074 known as "Changes from CVS 1.1 to CVS 1.2". 1075 1076 * Major new support with this release is the ability to use the 1077 recently-posted RCS 5.5 distribution with CVS 1.2. See below for 1078 other assorted bug-fixes that have been thrown in. 1079 1080 * ChangeLog (new): Added Emacs-style change-log file to CVS 1.2 1081 release. Chronological description of changes between release. 1082 1083 * README: Small fixes to installation instructions. My email 1084 address is now "berliner@sun.com". 1085 1086 * src/Makefile: Removed "rcstime.h". Removed "depend" rule. 1087 1088 * src/partime.c: Updated to RCS 5.5 version with hooks for CVS. 1089 * src/maketime.c: Updated to RCS 5.5 version with hooks for CVS. 1090 * src/rcstime.h: Removed from the CVS 1.2 distribution. 1091 Thanks to Paul Eggert <eggert@twinsun.com> for these changes. 1092 1093 * src/checkin.csh: Support for RCS 5.5 parsing. 1094 Thanks to Paul Eggert <eggert@twinsun.com> for this change. 1095 1096 * src/collect_sets.c (Collect_Sets): Be quieter if "-f" option is 1097 specified. When checking out files on-top-of other files that CVS 1098 doesn't know about, run a diff in the hopes that they are really 1099 the same file before aborting. 1100 1101 * src/commit.c (branch_number): Fix for RCS 5.5 parsing. 1102 Thanks to Paul Eggert <eggert@twinsun.com> for this change. 1103 1104 * src/commit.c (do_editor): Bug fix - fprintf missing argument 1105 which sometimes caused core dumps. 1106 1107 * src/modules.c (process_module): Properly NULL-terminate 1108 update_dir[] in all cases. 1109 1110 * src/no_difference.c (No_Difference): The wrong RCS revision was 1111 being registered in certain (strange) cases. 1112 1113 * src/patch.c (get_rcsdate): New algorithm. No need to call 1114 maketime() any longer. 1115 Thanks to Paul Eggert <eggert@twinsun.com> for this change. 1116 1117 * src/patchlevel.h: Increased patch level to "2". 1118 1119 * src/subr.c (isdir, islink): Changed to compare stat mode bits 1120 correctly. 1121 1122 * src/tag.c (tag_file): Added support for following symbolic links 1123 that are in the master source repository when tagging. Made tag 1124 somewhat quieter in certain cases. 1125 1126 * src/update.c (update_process_lists): Unlink the user's file if it 1127 was put on the Wlist, meaning that the user's file is not modified 1128 and its RCS file has been removed by someone else. 1129 1130 * src/update.c (update): Support for "cvs update dir" to correctly 1131 just update the argument directory "dir". 1132 1133 * src/cvs.h: Fixes for RCS 5.5 parsing. 1134 * src/version_number.c (Version_Number): Fixes for parsing RCS 5.5 1135 and older RCS-format files. 1136 Thanks to Paul Eggert <eggert@twinsun.com> for these changes. 1137 1138 * src/version_number.c (Version_Number): Bug fixes for "-f" option. 1139 Bug fixes for parsing with certain branch numbers. RCS 1140 revision/symbol parsing is much more solid now. 1141 1142Wed Feb 14 10:01:33 1990 Brian Berliner (berliner at sun.com) 1143 1144 * Changes from CVS 1.0 Patchlevel 0 to CVS 1.0 Patchlevel 1; also 1145 known as "Changes from CVS 1.0 to CVS 1.1". 1146 1147 * src/patch.c (get_rcsdate): Portability fix. Replaced call to 1148 timelocal() with call to maketime(). 1149 1150Mon Nov 19 23:15:11 1990 Brian Berliner (berliner at prisma.com) 1151 1152 * Sent CVS 1.0 release to comp.sources.unix moderator and FSF. 1153 1154 * Special thanks to Dick Grune <dick@cs.vu.nl> for his work on the 1155 1986 version of CVS and making it available to the world. Dick's 1156 version is available on uunet.uu.net in the 1157 comp.sources.unix/volume6/cvs directory. 1158