+ - Fixed a really old bug that caused --checksum (-c) to checksum all the
+ files encountered during the delete scan (ouch).
+
+ - Fixed a potential hang in a remote generator: when the receiver gets a
+ read-error on the socket, it now signals the generator about this so that
+ the generator does not try to send any of the terminating error messages
+ to the client (avoiding a potential hang in some setups).
+
+ - Made hard-links work with symlinks and devices again.
+
+ - If the sender gets an early EOF reading a source file, we propagate this
+ error to the receiver so that it can discard the file and try requesting
+ it again (which is the existing behavior for other kinds of read errors).
+
+ - If a device-file/special-file changes permissions, rsync now updates the
+ permissions without recreating the file.
+
+ - If the user specifies a remote-host for both the source and destination,
+ we now output a syntax error rather than trying to open the destination
+ hostspec as a filename.
+
+ - When --inplace creates a new destination file, rsync now creates it with
+ permissions 0600 instead of 0000 -- this makes restarting possible when
+ the transfer gets interrupted in the middle of sending a new file.
+
+ - Reject the combination of --inplace and --sparse since the sparse-output
+ algorithm doesn't work when overwriting existing data.
+
+ - Fixed the directory name in the error that is output when pop_dir()
+ fails.
+
+ - Really fixed the parsing of a "!" entry in .cvsignore files this time.
+
+ - If the generator gets a stat() error on a file, output it (this used to
+ require at least -vv for the error to be seen).
+
+ - If waitpid() fails or the child rsync didn't exit cleanly, we now handle
+ the exit status properly and generate a better error.
+
+ - Fixed some glitches in the double-verbose output when using --copy-dest,
+ --link-dest, or --compare-dest.
+
+ - Fixed the matching of the dont-compress items (e.g. *.gz) against files
+ that have a path component containing a slash.
+
+ - If code reading a filter/exclude file an EINTR error, rsync now clears
+ the error flag on the file handle so it can keep on reading.
+
+ - If --relative is active, the sending side cleans up trailing "/" or "/."
+ suffixes to avoid triggering a bug in older rsync versions. Also, we now
+ reject a ".." dir if it would be sent as a relative dir.
+
+ - If a non-directory is in the way of a directory and rsync is run with
+ --dry-run and --delete, rsync no longer complains about not being able
+ to opendir() the not-yet present directory.
+
+ - Got rid of the need for --force to be used in some circumstances with
+ --delete-after (making it consistent with --delete-before/-during).
+
+ ENHANCEMENTS:
+
+ - Added the --specials option to tell rsync to copy special files (and does
+ not require root). The --devices option now affects just character and
+ block devices (which now matches the documentation). The -D option still
+ requests both --devices and --specials, and -a still implies -D.
+
+ - Added the --append option that makes rsync append data onto files that
+ are longer on the source than the destination (this includes new files).
+
+ - Added the --min-size=SIZE option to exclude small files from the
+ transfer.
+
+ - Added the --compress-level option to allow you to set how aggressive
+ rsync's compression should be (this option implies --compress).
+
+ - Enhanced the parsing of the SIZE value for --min-size and --max-size to
+ allow easy entry of multiples of 1000 (instead of just multiples of 1024)
+ and off-by-one values too (e.g. --max-size=8mb-1).
+
+ - Added the --8-bit-output (-8) option, which tells rsync to avoid escaping
+ high-bit characters that it thinks are unreadable in the current locale.
+
+ - The new option --human-readable (-h) changes the output of --progress,
+ --stats, and the end-of-run summary to be easier to read. If repeated,
+ the units become powers of 1024 instead of powers of 1000.
+
+ - If lutimes() and/or lchmod() are around, use them to allow the
+ preservation of attributes on symlinks.