Preparing for release of 3.0.0
[rsync/rsync.git] / NEWS
diff --git a/NEWS b/NEWS
index 926dba3..cce8d9d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-NEWS for rsync 3.0.0 (UNRELEASED)
+NEWS for rsync 3.0.0 (1 Mar 2008)
 Protocol: 30 (changed)
 Changes since 2.6.9:
 
@@ -11,8 +11,9 @@ Changes since 2.6.9:
       an implied dir be duplicated as a symlink, you should specify the
       transfer of the symlink and the transfer of the referent directory as
       separate args.  (See also --keep-dirlinks and --no-implied-dirs.)
+      Also, exclude rules no longer have a partial effect on implied dirs.
 
-    - Requesting a remote file list without specifying -r (--recursive) now
+    - Requesting a remote file-listing without specifying -r (--recursive) now
       sends the -d (--dirs) option to the remote rsync rather than sending -r
       along with an extra exclude of /*/*.  If the remote rsync does not
       understand the -d option (i.e. it is 2.6.3 or older), you will need to
@@ -20,15 +21,47 @@ Changes since 2.6.9:
 
     - In --dry-run mode, the last line of the verbose summary text is output
       with a "(DRY RUN)" suffix to help remind you that no updates were made.
+      Similarly, --only-write-batch outputs "(BATCH ONLY)".
 
-    - A writable rsync daemon that disables "use chroot" now defaults to a
+    - A writable rsync daemon with "use chroot" disabled now defaults to a
       symlink-munging behavior designed to make symlinks safer while also
       allowing absolute symlinks to be stored and retrieved.  This also has
       the effect of making symlinks unusable while they're in the daemon's
-      hierarchy.  See the daemon option "munge symlinks" for full details.
+      hierarchy.  See the daemon's "munge symlinks" parameter for details.
+
+    - Starting up an extra copy of an rsync daemon will not clobber the pidfile
+      for the running daemon -- if the pidfile exists, the new daemon will exit
+      with an error.  This means that your wrapper script that starts the rsync
+      daemon should be made to handle lock-breaking (if you want any automatic
+      breaking of locks to be done).
 
   BUG FIXES:
 
+    - A daemon with "use chroot = no" and excluded items listed in the daemon
+      config file now properly checks an absolute-path arg specified for these
+      options:  --compare-dest, --link-dest, --copy-dest, --partial-dir,
+      --backup-dir, --temp-dir, and --files-from.
+
+    - A daemon can now be told to disable all user- and group-name translation
+      on a per-module basis.  This avoids a potential problem with a writable
+      daemon module that has "use chroot" enabled -- if precautions weren't
+      taken, a user could try to add a missing library and get rsync to use
+      it.  This makes rsync safer by default, and more configurable when id-
+      translation is not desired.  See the daemon's "numeric ids" parameter
+      for full details.
+
+    - A chroot daemon can now indicate which part of its path should affect the
+      chroot call, and which part should become an inside-chroot path for the
+      module.  This allows you to have outside-the-transfer paths (such as for
+      libraries) even when you enable chroot protection.  The idiom used in the
+      rsyncd.conf file is:  path = /chroot/dirs/./dirs/inside
+
+    - If a file's data arrived successfully on the receiving side but the
+      rename of the temporary file to the destination file failed AND the
+      --remove-source-files (or the deprecated --remove-sent-files) option
+      was specified, rsync no longer erroneously removes the associated
+      source file.
+
     - Fixed the output of -ii when combined with one of the --*-dest options:
       it now itemizes all the items, not just the changed ones.
 
@@ -71,24 +104,34 @@ Changes since 2.6.9:
     - Fixed a bug when using --backup and --inplace with --whole-file or
       --read-batch: backup files are actually created now.
 
-    - Starting up an extra copy of an rsync daemon will not clobber the pidfile
-      for the running daemon -- if the pidfile exists, the new daemon will exit
-      with an error.
-
     - The daemon pidfile is checked and created sooner in the startup sequence.
 
     - If a daemon module's "path" value is not an absolute pathname, the code
       now makes it absolute internally (making it work properly).
 
     - Ensure that a temporary file always has owner-write permission while we
-      are writing to it.  This avoids problems with some network filesystems.
+      are writing to it.  This avoids problems with some network filesystems
+      when transfering read-only files.
 
     - Any errors output about password-file reading no longer cause an error at
       the end of the run about a partial transfer.
 
-    - Using --only-write-batch to a daemon receiver now work properly (older
+    - The --read-batch option for protocol 30 now ensures that several more
+      options are set correctly for the current batch file:  --iconv, --acls,
+      --xattrs, --inplace, --append, and --append-verify.
+
+    - Using --only-write-batch to a daemon receiver now works properly (older
       versions would update some files while writing the batch).
 
+    - Avoid outputting a "file has vanished" message when the file is a broken
+      symlink and --copy-unsafe-links or --copy-dirlinks is used (the code
+      already handled this for --copy-links).
+
+    - Fixed the combination of --only-write-batch and --dry-run.
+
+    - Fixed rsync's ability to remove files that are not writable by the file's
+      owner when rsync is running as the same user.
+
   ENHANCEMENTS:
 
     - A new incremental-recursion algorithm is now used when rsync is talking
@@ -107,8 +150,8 @@ Changes since 2.6.9:
     - Rsync now allows multiple remote-source args to be specified rather than
       having to rely on a special space-splitting side-effect of the remote-
       shell.  Additional remote args must specify the same host or an empty one
-      (e.g. empty:  :file1  or  ::module/file2).  This means that local use of
-      brace expansion now works:  rsync -av host:dir/{f1,f2} .
+      (e.g. empty:  :file1  or  ::module/file2).  For example, this means that
+      local use of brace expansion now works:  rsync -av host:dir/{f1,f2} .
 
     - Added the --protect-args (-s) option, that tells rsync to send most of
       the command-line args at the start of the transfer rather than as args
@@ -121,10 +164,10 @@ Changes since 2.6.9:
     - Added the --acls (-A) option to preserve Access Control Lists.  This is
       an improved version of the prior patch that was available, and it even
       supports OS X ACLs.  If you need to have backward compatibility with old,
-      acl-patched versions of rsync, apply the acls.diff file from the patches
+      ACL-patched versions of rsync, apply the acls.diff file from the patches
       dir.
 
-    - Added the --xattrs (-X) option to preserver extended attributes.  This is
+    - Added the --xattrs (-X) option to preserve extended attributes.  This is
       an improved version of the prior patch that was available, and it even
       supports OS X xattrs (which includes their resource fork data).  If you
       need to have backward compatibility with old, xattr-patched versions of
@@ -133,24 +176,29 @@ Changes since 2.6.9:
     - Added the --fake-super option that allows a non-super user to preserve
       all attributes of a file by using a special extended-attribute idiom.
       It even supports the storing of foreign ACL data on your backup server.
-      There is also an analogous "fake super" option for an rsync daemon.
+      There is also an analogous "fake super" parameter for an rsync daemon.
 
     - Added the --iconv option, which allows rsync to convert filenames from
-      one character-set to another during the transfer.  The default is to make
-      this feature available as long as your system has iconv_open().  If
-      compilation fails, specify --disable-iconv to configure, and then
+      one character-set to another during the transfer.  The default is to
+      make this feature available as long as your system has iconv_open().
+      If compilation fails, specify --disable-iconv to configure, and then
       rebuild.  If you want rsync to perform character-set conversions by
       default, you can specify --enable-iconv=CONVERT_STRING with the default
       value for the --iconv option that you wish to use.  For example,
       "--enable-iconv=." is a good choice.  See the rsync manpage for an
       explanation of the --iconv option's settings.
 
+    - A new daemon config parameter, "charset", lets you control the character-
+      set that is used during an --iconv transfer to/from a daemon module.  You
+      can also set your daemon to refuse "no-iconv" if you want to force the
+      client to use an --iconv transfer (requiring an rsync 3.x client).
+
     - Added the --skip-compress=LIST option to override the default list of
-      file suffixes that will not be compressed when using --compress.
-      
+      file suffixes that will not be compressed when using --compress (-z).
+
     - The daemon's default for "dont compress" was extended to include:
          *.7z *.mp[34] *.mov *.avi *.ogg *.jpg *.jpeg
-      The matching routine was also optimized to run more quickly.
+      The name-matching routine was also optimized to run more quickly.
 
     - The --max-delete option now outputs a warning if it skipped any file
       deletions, including a count of how many deletions were skipped.  (Older
@@ -176,6 +224,10 @@ Changes since 2.6.9:
       that should not have an effect in a directory that is being deleted.  e.g.
       -f '-p .svn/' would only affect "live" .svn directories.
 
+    - Rsync checks all the alternate-destination args for validity (e.g.
+      --link-dest).  This lets the user know when they specified a directory
+      that does not exist.
+
     - If we get an error setting the time on a symlink, we don't complain about
       it anymore (since some operating systems don't support that, and it's not
       that important).
@@ -198,18 +250,21 @@ Changes since 2.6.9:
 
     - Improved the dashes and double-quotes in the nroff manpage output.
 
-    - We now support a lot more --no-OPTION override options.
+    - Rsync now supports a lot more --no-OPTION override options.
 
   INTERNAL:
 
     - The file-list sorting algorithm now uses a sort that keeps any same-
       named items in the same order as they were specified.  This allows
       rsync to always ensure that the first of the duplicates is the one
-      that will be included in the copy.  The new sort was also faster
-      than the glibc version of qsort() and mergesort() in my testing.
+      that will be included in the copy.  The new sort is also faster
+      than the glibc version of qsort() and mergesort().
 
     - Rsync now supports the transfer of 64-bit timestamps (time_t values).
 
+    - Made the file-deletion code use a little less stack when recursing
+      through a directory hierarchy of extraneous files.
+
     - Fixed a build problem with older (2.x) versions of gcc.
 
     - Added some isType() functions that make dealing with signed characters
@@ -238,8 +293,8 @@ Changes since 2.6.9:
 
     - Improved the use of "const" on pointers.
 
-    - Improved J.W.'s pool_alloc routines to add a way of freeing older
-      sections of a pool's memory.
+    - Improved J.W.'s pool_alloc routines to add a way of incrementally freeing
+      older sections of a pool's memory.
 
     - The getaddrinfo.c compatibility code in the "lib" dir was replaced with
       some new code (derived from samba, derived from PostgreSQL) that has a
@@ -250,17 +305,19 @@ Changes since 2.6.9:
     - Rsync is now licensed under the GPLv3 or later.
 
     - Rsync is now being maintained in a "git" repository instead of CVS
-      (though the old CVS repository still exists).  Several maintenance
-      scripts were updated to work with git.
+      (though the old CVS repository still exists for historical access).
+      Several maintenance scripts were updated to work with git.
 
     - Generated files are no longer committed into the source repository.  The
       autoconf and autoheader commands are now automatically run during the
       normal use of "configure" and "make".  The latest dev versions of all
       generated files can also be copied from the samba.org web site (see the
-      "magic" configure script that now comes with rsync for its location).
+      prepare-source script's fetch option).
 
     - The "patches" directory of diff files is now built from branches in the
       rsync git repository (branch patch/FOO creates file patches/FOO.diff).
+      This directory is now distributed in a separate separate tar file named
+      rsync-patches-VERSION.tar.gz instead of the main rsync-VERSION.tar.gz.
 
     - The proto.h file is now built using a simple perl script rather than a
       complex awk script, which proved to be more widely compatible.
@@ -269,12 +326,12 @@ Changes since 2.6.9:
       directory named testtmp (which is created, if missing).  This allows
       someone to symlink the testtmp directory to another filesystem (which is
       useful if the build dir's filesystem does not support ACLs and xattrs,
-      but another file system does).
+      but another filesystem does).
 
     - Rsync now has a way of handling protocol-version changes during the
       development of a new protocol version.  This causes any out-of-sync
       versions to speak an older protocol rather than fail in a cryptic manner.
-      This addition makes it safe to deploy a pre-release version that may
+      This addition makes it safer to deploy a pre-release version that may
       interact with the public.  This new exchange of sub-version info does not
       interfere with the {MIN,MAX}_PROTOCOL_VERSION checking algorithm (which
       does not have enough range to allow the main protocol number to be