Implemented a "!" modifier for filter rules that lets a rule trigger
[rsync/rsync.git] / NEWS
diff --git a/NEWS b/NEWS
index e5372b6..31b1f96 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,19 +1,32 @@
 NEWS for rsync 2.6.4 (UNRELEASED)
-Protocol: 28 (unchanged)
+Protocol: 29 (changed)
 Changes since 2.6.3:
 
+  OUTPUT CHANGES:
+
+    - When rsync deletes a directory and outputs a verbose message about
+      it, it now appends a trailing slash to the name instead of (only
+      sometimes) outputting a preceding "directory " string.
+
+    - The --stats output will contain file-list time-statistics if both
+      sides are 2.6.4, or if the local side is 2.6.4 and the files are
+      being pushed (since the stats come from the sending side).
+  
   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 --dry-run option (-n) now mentions changes in directories (w/-v).
+      It also now includes the normal uptodate output information for -vv.
+
     - 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 cygwin0 needed
       setmode(fd, O_BINARY) called on the temp-file we opened with
-      mkstemp().  (Fix picked up from the cygwin package.)
+      mkstemp().  (Fix derived from the cygwin's rsync package.)
 
     - Fixed a potential hang when verbosity is high, the client side is
       the sender, and the file-list is large.
@@ -29,14 +42,53 @@ Changes since 2.6.3:
     - The "ignore nonreadable" daemon parameter no longer affects symlinks
       that are being copied, even if they point nowhere.
 
-    - If the OS does not have lchown(), we no longer try to set the user
-      & group of a symlink (which would either fail or set the referent).
+    - If the OS does not have lchown() and its chown() tries to set 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.
+
+    - 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 (i.e. rsync might have
+      exited with an error for large files).
+
+    - If a daemon can't open the specified log file (i.e. syslog is not
+      being used), die without crashing.  We also try to output an error
+      about the failure (which will only be seen if --no-detach was
+      specified).
 
   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 on the receiving side incrementally as each directory in the
+      transfer is being processed (which makes it more efficient than the
+      default, before-the-transfer behavior of --delete).  Note that the
+      --del option is implemented as an internally-defined popt alias, so
+      an rsync daemon that refuses "delete" (which, for safety's sake,
+      really matches "delete*") will still refuse all delete options.  The
+      default --delete behavior is also explicitly selectable via
+      --delete-before.
+
+    - 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 a single directory of objects at a time.
+
     - Added the --copy-dest option, which works like --link-dest except
       that it includes copies of identical files.
 
@@ -52,16 +104,98 @@ Changes since 2.6.3:
       cause problems (such as a hang or an abort) when a client connects.
 
     - The --bwlimit option may now be used in combination with --daemon
-      to specify a default value for the daemon side and also a value
+      to specify both a default value for the daemon side and a value
       that cannot be exceeded by a user-specified --bwlimit option.
 
     - Added the "port" parameter to the rsyncd.conf file. (Promoted from
-      the patches dir.)
+      the patches dir.)  Also added "address".
 
     - In _exit_cleanup(): when we are exiting with a partially-received
       file, we now flush any data in the write-cache before closing the
       partial file.
 
+    - The --inplace support was enhanced to work with --compare-dest,
+      --link-dest, and (the new) --copy-dest options.
+
+    - Added the --dirs (-d) option for an easier way to copy directories
+      without recursion.
+
+    - Added the --list-only option which is mainly a way for the client to
+      put the server into listing mode without needing to resort to any
+      option kluges (e.g. the age-old use of "-r --exclude="/*/*" for a
+      non-recursive listing).  This option is used automatically when a
+      modern rsync speaks to a modern daemon, but may also be specified
+      manually if you want to force the use of the --list-only option over
+      a remote-shell connection.
+
+    - Added the --omit-dir-times (-O) option which will avoid updating the
+      modified time for directories when --times was specified.  This
+      option will avoid an extra pass through the file-list at the end of
+      the transfer (to tweak all the directory times), which can result in
+      an appreciable speedup for a really large transfer.
+
+    - Added the --filter (-f) option and its helper option, -F.  Filter
+      rules are an extension to the existing include/exclude handling
+      that also supports nested filter files as well as per-directory
+      filter files (like .cvsignore, but with full filter-rule parsing).
+      This new option was chosen in order to ensure that all existing
+      include/exclude processing remained 100% compatible with older
+      versions.
+
+    - Added the --delay-updates option that puts all updated files into
+      a temporary directory (by default ".~tmp~", but settable via the
+      --partial-dir=DIR option) until the end of the transfer.  This
+      makes the updates a little more atomic for a large transfer.
+
+    - If rsync is put into the background, any output from --progress is
+      reduced.
+
+    - Documented the "max verbosity" setting for rsyncd.conf.  (This
+      setting was added a couple releases ago, but left undocumented.)
+
+  SUPPORT FILES:
+
+    - Added support/atomic-rsync -- a perl script that will transfer some
+      files using rsync, and then move the updated files into place all at
+      once at the end of the transfer.  Only works when pulling, and uses
+      --link-dest and a parallel hierarchy of files to effect its update.
+
+    - Added support/mnt-excl that takes the /proc/mounts file and
+      translates it into a set of excludes that will exclude all mount
+      points (even mapped mounts to the same disk).  The excludes are made
+      relative to the specified source dir and properly anchored.
+
+    - Added support/savetransfer.c -- a C program that can make a copy of
+      all the data that flows over the wire.  This lets you test for data
+      corruption (by saving the data on both the sending side and the
+      receiving side) or provides a way to help debug a protocol error.
+
+    - Added support/rrsync -- my version of Joe Smith's restricted rsync
+      perl script.  This helps to ensure that only certain rsync commands
+      can be run by an ssh invocation.
+
+    - Improved the option descriptions in the --help text.
+
+  INTERNAL:
+
+    - Added better checking of the checksum-header values that come over
+      the socket.
+
+    - Merged the various delete-file functions into a single function so
+      that it is easier to maintain.
+
+    - Improved the type of some variables (particularly blocksize vars) for
+      consistency and proper size.
+
+    - Got rid of the uint64 type (which we didn't need).
+
+    - Use a slightly more compatible set of core #include directives.
+
+    - Defined int32 in a way that ensures that the build dies if we can't
+      find a variable with at least 32 bits.
+
   BUILD CHANGES:
 
     - Handle an operating system that use mkdev() in place of makedev().
+
+    - Improved configure to better handle cross-compiling.