- Got rid of the externs for io_read_phase and io_write_phase.
[rsync/rsync.git] / NEWS
diff --git a/NEWS b/NEWS
index 96ba3e9..f0f2aa5 100644 (file)
--- a/NEWS
+++ b/NEWS
-rsync 2.4.7 (sometime in 2001, maybe :)                -*- indented-text -*- 
+NEWS for rsync 2.6.7 (UNRELEASED)
+Protocol: 29 (unchanged)
+Changes since 2.6.6:
 
-  ANNOUNCEMENTS
+  OUTPUT CHANGES:
 
-    * Martin Pool <mbp@samba.org> is now a co-maintainer.
+    - The itemized output now uses 'S' for a special file instead of
+      clumping them together with the 'D' for devices.  The number of
+      characters is also different (to remove an unused field).
 
-  NEW FEATURES
+  BUG FIXES:
 
-    * Support for LSB-compliant packaging <http://www.linuxbase.org/>
+    - Fixed a really old bug that caused --checksum (-c) to checksum all the
+      files encountered during the delete scan (ouch).
 
-    * Shell wildcards are allowed in "auth users" lines.
+    - Made hard-links work with symlinks and devices again.
 
-    * Merged UNC rsync+ patch to support creation of standalone patch
-      sets.  By Bert J. Dempsey and Debra Weiss, updated by Jos
-      Backus.  <http://www.ils.unc.edu/i2dsi/unc_rsync+.html>
+    - If a device-file/special-file changes permissions, rsync now updates the
+      permissions without recreating the file.
 
-    * IPv6 support based on a patch from KAME.net, on systems
-      including modern versions of Linux, Solaris, and HP-UX.  Also
-      includes IPv6 compatibility functions for old OSs by the
-      Internet Software Consortium, Paul Vixie, the OpenSSH
-      portability project, and OpenBSD.
+    - 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.
 
-  ENHANCEMENTS
+    - 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.
 
-    * Include/exclude cluestick: with -vv, print out whether files are
-      included or excluded and why.
+    - Reject the combination of --inplace and --sparse since the sparse-output
+      algorithm doesn't work when overwriting existing data.
 
-    * Many error messages have more friendly explanations and more
-      details.
+    - Fixed the directory name in the error that is output when pop_dir()
+      fails.
 
-    * Manual page improvements plus scanty protocol documentation.
+    - Really fixed the parsing of a "!" entry in .cvsignore files this time.
 
-    * When running as --daemon in the background and using a "log
-      file" rsyncd.conf directive, close the log file every time it is
-      open when going to sleep on the socket.  This allows the log
-      file to get cleaned out by another process.
+    - 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).
 
-    * Change to using libpopt rather than getopt for processing
-      options.  This makes the code cleaner and the behaviour more
-      consistent across platforms.  popt is included and built if not
-      installed on the platform.
+    - If waitpid() fails or the child rsync didn't exit cleanly, we now handle
+      the exit status properly and generate a better error.
 
-    * More details in --version, including note about whether 64-bit
-      files, symlinks and hardlinks are supported.
+    - Fixed some glitches in the double-verbose output when using --copy-dest,
+      --link-dest, or --compare-dest.
 
-    * MD4 code may use less CPU cycles.
+    - Fixed the matching of the dont-compress items (e.g. *.gz) against files
+      that have a path component containing a slash.
 
-    * Use mkstemp on systems where it is secure.  If we use mktemp,
-      explain that we do it in a secure way.
+    - 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.
 
-    * --whole-file is the default when source and target are on the
-        local machine.
+    - 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.
 
-  BUG FIXES:
+    - 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.
+
+  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).
+
+    - The options --human-readable (-h) and --si change the output of the
+      --stats and the end-of-run summary to be easier to read.
+
+    - If lutimes() and/or lchmod() are around, use them to allow the
+      preservation of attributes on symlinks.
+
+    - The --link-dest option now affects symlinks and devices (when
+      possible).
+
+    - Improved the output of hard-linked and copied files when using
+      --link-dest, --copy-dest, or --compare-dest.
+
+    - Added two config items to the rsyncd.conf parsing:  "pre-xfer exec"
+      and "post-xfer exec".  These allow a command to be specified on a
+      per-module basis that will be run before and/or after a daemon-mode
+      transfer.  (See the manpage for a list of the environment variables
+      that are set with information about the transfer.)
+
+    - When using the --relative option, you can now insert a dot dir in
+      the source path to indicate where the replication of the source dirs
+      should start.  For example, if you specify a source path of
+      rsync://host/module/foo/bar/./baz/dir with -R, rsync will now only
+      replicate the "baz/dir" part of the source path (note: a trailing
+      dot dir is unaffected unless it also has a trailing slash).
+
+    - Added some new --no-FOO options that make it easier to override
+      unwanted implied or default options.  For example, "-a --no-o" (aka
+      "--archive --no-owner") can be used to turn off the preservation of
+      file ownership that is implied by -a.
+
+    - Added the --chmod=MODE option that allows the destination permissions
+      to be changed from the source permissions.  E.g. --chmod=g+w,o-rwx
+
+    - Allow the --temp-dir option to be specified when starting a daemon,
+      which sets the default temporary directory for incoming files.
+
+    - If --delete is combined with --dirs without --recursive, rsync will
+      now delete in any directory whose content is being synchronized.
+
+    - If --backup is combined with --delete without --backup-dir (and
+      without --delete-excluded), we add a "protect" filter-rule to ensure
+      that files with the backup suffix are not deleted.
+
+    - The file-count stats that are output by --progress were improved to
+      better indicate what the numbers mean.  For instance, the output:
+      "(xfer#5, to-check=8383/9999)" indicates that this was the fifth file
+      to be transferred, and we still need to check 8383 more files out of
+      a total of 9999.
+
+    - The include/exclude code now allows a dir/*** directive (with 3
+      trailing stars) to match both the dir itself as well as all the
+      content below the dir (dir/** would not match the dir).
+
+    - Added the --skip-empty-dirs (-k) option that makes the receiving
+      rsync discard empty chains of directories from the file-list.  This
+      makes it much easier to scan a source hierarchy using include,
+      exclude, filter rules, and only end up with the directories needed
+      to hold the resulting files.
+
+    - If the --itemize-changes (-i) option is repeated, rsync now includes
+      unchanged files in the itemized output (similar to -vv, but without
+      all the other verbose messages that can get in the way).  Of course,
+      the client must be version 2.6.7 for this to work, but the remote
+      rsync only needs to be 2.6.7 if you're pushing files.
+
+    - Added the --super option to make the receiver always attempt super-
+      user activities.  This is useful for systems that allow things such
+      as devices to be created or ownership to be set without being UID 0,
+      and is also useful for someone who wants to ensure that errors will
+      be output if the receiving rsync isn't being run as root.
+
+    - Added the --sockopts option for those few who want to customize the
+      TCP options used to contact a daemon rsync.
+
+    - Some minor documentation improvements.
+
+    - Updated some diffs in the patches dir.
+
+  INTERNAL:
+
+    - Some buffer sizes were expanded a bit, particularly on systems where
+      MAXPATHLEN is overly small (e.g. cygwin).
+
+    - If io_printf() tries to format more data than fits in the buffer, exit
+      with an error instead of transmitting a truncated buffer.
+
+    - If a va_copy macro is defined, lib/snprintf.c will use it when defining
+      the VA_COPY macro.
+
+    - Reduced the amount of stack memory needed for each level of directory
+      recursion by nearly MAXPATHLEN bytes.
+
+    - The wildmatch function was extended to allow an array of strings to
+      be supplied as the string to match.  This allows the exclude code to
+      do less string copying.
+
+    - Got rid of the safe_fname() function (and all the myriad calls) and
+      replaced it with a new function in the log.c code that filters all
+      the output going to the terminal.
+
+    - Unified the f_name() and the f_name_to() functions.
+
+  DEVELOPER RELATED:
+
+    - Several diffs in the patches dir now use the proper --enable-FOO
+      configure option instead of --with-FOO to turn on the inclusion of
+      the newly patched feature.
 
-    * Fix for various bugs causing rsync to hang.
-
-    * Attempt to fix Large File Summit support on AIX.
-
-    * Attempt to fix error handling lockup bug.
-
-    * Give a non-0 exit code if *any* of the files we have been asked
-      to transfer fail to transfer 
-
-    * For log messages containing ridiculously long strings that might
-      overflow a buffer rsync no longer aborts, but rather prints an
-      ellipsis at the end of the string.  (Patch from Ed Santiago.)
-
-  PLATFORMS:
-
-    * Improved support for UNICOS (tested on Cray T3E and Cray SV1)
-
-    * autoconf2.52 (or later) is now required to rebuild the autoconf
-      scripts.  It is not required to simply build rsync.
-
-    * Platforms thought to work in this release:
-
-               Cray SV1 UNICOS 10.0.0.8 cc
-               Debian Linux 2.2 UltraSparc gcc
-               Debian Linux testing/unstable ARM gcc
-               FreeBSD 3.3-RELEASE i386 cc
-               FreeBSD 4.1.1-RELEASE i386 cc
-               FreeBSD 4.3-STABLE i386 cc
-               HP-UX 10.10 gcc
-               HP-UX 11.11 cc
-               IRIX 6.5 MIPS cc
-               IRIX 6.5 MIPS gcc
-               Mac OS X PPC (--disable-ipv6) cc
-               NetBSD 1.5 i386 gcc
-               NetBSD Current i386 cc
-               OpenBSD 2.5 Sparc gcc
-               OpenBSD 2.9 i386 cc
-               OpenBSD Current i386 cc
-               RedHat 6.2 i386 gcc
-               RedHat 6.2 i386 insure++
-               RedHat 7.0 i386 gcc
-               RedHat 7.1 i386 (Kernel 2.4.10) gcc
-               Slackware 8.0 i686 (Kernel 2.4.10)
-               Solaris 8 UltraSparc cc
-               Solaris 8 UltraSparc gcc
-               Solaris 8 i386 gcc
-               SuSE 7.1 i386 gcc2.95.2
-               SuSE 7.1 ppc gcc2.95.2
-
-  TESTING:
-
-    * The existing test.sh script by Phil Hands has been merged into a
-      test framework that works from both "make check" and the Samba
-      build farm.
+    - The testsuite now sets HOME so that it won't be affecting by a file
+      such as ~/.popt.