+ BUG FIXES:
+
+ - Restore the list-clearing behavior of "!" in a .cvsignore file (2.6.3
+ was only treating it as a special token in an rsync include/exclude
+ file).
+
+ - The combination of --verbose and --dry-run now mentions the full list
+ of changes that would be output without --dry-run.
+
+ - Avoid a mkdir warning when removing a directory in the destination
+ that already exists in the --backup-dir.
+
+ - An OS that has a binary mode for its files (such as cygwin) needed
+ setmode(fd, O_BINARY) called on the temp-file we opened with
+ mkstemp(). (Fix derived from the cygwin's 2.6.3 rsync package.)
+
+ - Fixed a potential hang when verbosity is high, the client side is
+ the sender, and the file-list is large.
+
+ - Fixed a potential protocol-corrupting bug where the generator
+ might accidentally merge a message from the receiver into the
+ middle of a multiplexed packet of data that is waiting for the
+ socket to allow it to flush.
+
+ - We now check if the OS doesn't support using mknod() for creating
+ FIFOs and sockets, and compile-in using mkfifo() and socket() when
+ necessary.
+
+ - Fixed an off-by-one error in the handling of --max-delete=N.
+
+ - One place in the code wasn't checking if fork() failed.
+
+ - The "ignore nonreadable" daemon parameter used to erroneously affect
+ symlinks that pointed to a non-existent file. This has been fixed.
+
+ - If the OS does not have lchown() and a chown() of a symlink will
+ affect the referent of a symlink (as it should), we no longer try
+ to set the user and group of a symlink.
+
+ - The generator now properly runs the hard-link loop and the dir-time
+ rewriting loop after we're sure that the redo phase is complete.
+
+ - When --backup was specified with --partial-dir=DIR (where DIR is a
+ relative path), the backup code was erroneously trying to backup a
+ file that was put into the partial-dir.
+
+ - If a file gets resent in a single transfer and the --backup option is
+ enabled along with --inplace, rsync no longer performs a duplicate
+ backup (it used to overwrite the first backup with the failed file).
+
+ - One call to flush_write_file() was not being checked for an error.
+
+ - The --no-relative option was not being sent from the client to a
+ server sender.
+
+ - If an rsync daemon specified "dont compress = ..." for a file and the
+ client tried to specify --compress, the libz code was not handling a
+ compression level of 0 properly. This could cause a transfer failure
+ if the block-size for a file was large enough (e.g. rsync might have
+ exited with an error for large files).
+
+ - Fixed a bug that would sometimes surface when using --compress and
+ sending a file with a block-size larger than 64K (either manually
+ specified, or computed due to the file being really large). Prior
+ versions of rsync would sometimes fail to decompress the data
+ properly, and thus the transferred file would fail its verification.
+
+ - If a daemon can't open the specified log file (i.e. syslog is not
+ being used), die without crashing. We also output an error about
+ the failure on stderr (which will only be seen if --no-detach was
+ specified).
+
+ - A local transfer no longer duplicates all its include/exclude options
+ (since the forked process already has a copy of the exclude list,
+ there's no need to send them a set of duplicates).
+
+ - When --progress is specified, the output of items that the generator
+ is creating (e.g. dirs, symlinks) is now integrated into the progress
+ output without overlapping it. (Requires protocol 29.)
+
+ - When --timeout is specified, lulls that occur in the transfer while
+ the generator is doing work that does not generate socket traffic
+ (looking for changed files, deleting files, doing directory-time
+ touch-ups, etc.) will cause a new keep-alive packet to be sent that
+ should keep the transfer going as long as the generator continues to
+ make progress. (Requires protocol 29.)
+
+ - The stat size of a device is not added to the total file size of the
+ items in the transfer since the size might be undefined on some OSes.
+
+ - Fixed a problem with refused-option messages sometimes not making it
+ back to the client side when a remote --files-from was in effect and
+ the daemon was the receiver.
+
+ - The --compare-dest option was not updating a file that differred in
+ (the preserved) attributes from the version in the compare-dest DIR.
+
+ - When rsync is copying files into a write-protected directory, fixed
+ the changed-report output for the directory so that we don't report
+ an identical directory as changed.
+
+ ENHANCEMENTS:
+
+ - Rsync now supports popt's option aliases, which means that you can
+ use /etc/popt and/or ~/.popt to create your own option aliases.
+
+ - Added the --delete-during (--del) option which will delete files
+ from the receiving side incrementally as each directory in the
+ transfer is being processed. This makes it more efficient than the
+ default, before-the-transfer behavior, which is now available as
+ --delete-before (and is still the default --delete-WHEN option that
+ will be chosen if --delete or --delete-excluded is specified without
+ a --delete-WHEN choice). All the --del* options infer --delete, so
+ an rsync daemon that refuses "delete" will still refuse to allow any
+ file-deleting options.
+
+ - All the --delete-WHEN options are now more memory efficient:
+ Previously an entire duplicate set of file-list objects was created
+ on the receiving side for the entire destination hierarchy. The new
+ algorithm only creates one directory of objects at a time (for files
+ inside the transfer).
+
+ - Added support for specifying multiple --compare-dest or --link-dest
+ options, but only of a single type. (Promoted from the patches dir
+ and enhanced.) (Requires protocol 29.)
+
+ - Added the --max-size option. (Promoted from the patches dir.)
+
+ - The daemon-mode options were separated from the normal rsync options
+ so that they can't be mixed together. This makes it impossible to
+ start a daemon that had improper default option values that could
+ cause problems when a client connects (e.g. a hang or an abort).