Some temporary code for 2.6.4pre3 compatibility (which can be
[rsync/rsync.git] / NEWS
diff --git a/NEWS b/NEWS
index 309628a..c3dfaea 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -47,10 +47,10 @@ Changes since 2.6.3:
     - 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.
+    - Fixed a potential protocol-corrupting bug where the generator could
+      merge a message from the receiver into the middle of a multiplexed
+      packet of data if only part of that data was written out to the
+      socket when we got the message from the generator.
 
     - We now check if the OS doesn't support using mknod() for creating
       FIFOs and sockets, and compile-in using mkfifo() and socket() when
@@ -125,6 +125,10 @@ Changes since 2.6.3:
     - 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 change-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
@@ -146,9 +150,12 @@ Changes since 2.6.3:
       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.)
+    - Added the --copy-dest option, which works like --link-dest except
+      that it copies identical files instead of hard-linking them.
+
+    - Added support for specifying multiple --compare-dest, --copy-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.)
 
@@ -169,8 +176,9 @@ Changes since 2.6.3:
       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 and
-      --link-dest. (Requires protocol 29.)
+    - The --inplace support was enhanced to work with --compare-dest,
+      --link-dest, and (the new) --copy-dest options. (Requires protocol
+      29.)
 
     - Added the --dirs (-d) option for an easier way to copy directories
       without recursion.
@@ -228,7 +236,7 @@ Changes since 2.6.3:
       file was renamed with no other changes) as well as based on a fuzzy
       name-matching algorithm.  This option requires protocol 29 because
       it needs the new file-sorting order.  (Promoted from patches dir
-      and enhanced.)
+      and enhanced.) (Requires protocol 29.)
 
     - Added the --remove-sent-files option, which lets you move files
       between systems.
@@ -237,10 +245,17 @@ Changes since 2.6.3:
       enclosed in '[' and ']' (e.g. "[::1]").  (We already allowed IPv6
       literals in the rsync://HOST:PORT/PATH format.)
 
+    - When rsync recurses to build the file list, it no longer keeps open
+      the directory handles of all the parent dirs inside the transfer.
+
     - When building under windows, the default for --daemon is now to
       avoid detaching, requiring the new --detach option to force rsync
       to detach.
 
+    - The --dry-run option can now be combined with either --write-batch or
+      --read-batch, allowing you to run a do-nothing test command to see
+      what would happen without --dry-run.
+
     - Improved the option descriptions in the --help text.
 
   SUPPORT FILES:
@@ -295,12 +310,22 @@ Changes since 2.6.3:
       generator now transmits an index and a flag-word to indicate when
       dirs and symlinks have changed (instead of producing a message),
       which makes the outputting of the information more consistent and
-      less prone to screen corruption (because either the receiver or the
-      sender is now outputting all the file-change info).
-
-    - If --inplace is specified, the generator flags any transfer that is
-      using an alternate basis file so that the sender can use the entire
-      basis file in the rsync algorithm (unlike a normal --inplace update).
+      less prone to screen corruption (because the local receiver/sender is
+      now outputting all the file-change info messages).
+
+    - If a file is being hard-linked, the appropriate bit is enabled in
+      the flag-word and the name of the file that was linked immediately
+      follows in vstring format (see below).
+
+    - If a file is being transferred with an alternate-basis file, the
+      appropriate bit is enabled in the flag-word and a single-byte
+      follows, indicating what type of basis file was chosen.  If that
+      indicates that a fuzzy-match was selected, the name of the match
+      immediately follows in vstring format.  A vstring is a variable
+      length string that has its size written prior to the string, and
+      no terminating null.  If the string is from 1-127 bytes, the length
+      is a single byte.  If it is from 128-32767 bytes, the length is
+      written as ((len >> 8) | 0x80) followed by (len % 0x100).
 
     - The sending of exclude names is done using filter-rule syntax.  This
       means that all names have a prefixed rule indicator, even excludes
@@ -324,18 +349,14 @@ Changes since 2.6.3:
       build the file-list, and one for how long it took to send it over the
       wire (each expressed in thousandths of a second).
 
-    - When --delete-excluded is specified with some filter excludes, a
-      client sender will now initiate a send of the filter rules to the
-      receiver (older protocols used to omit the sending of excludes in
+    - When --delete-excluded is specified with some filter rules (AKA
+      excludes), a client sender will now initiate a send of the rules to
+      the receiver (older protocols used to omit the sending of excludes in
       this situation since there were no receiver-specific rules that
       survived --delete-excluded back then).  Note that, as with all the
       filter-list sending, only items that are significant to the other
       side will actually be sent over the wire, so the filter-rule list
-      is often empty in this scenario.
-
-    - A protocol-29 batch file includes a bit for the setting of the --dirs
-      option.  Also, the shell script created by --write-batch will use the
-      --filter option instead of --exclude-from to capture any filter rules.
+      that is sent in this scenario is often empty.
 
     - An index equal to the file-list count is sent as a keep-alive packet
       from the generator to the sender, which then forwards it on to the
@@ -343,6 +364,11 @@ Changes since 2.6.3:
       packet if the 16-bit flag-word that follows it contains a single bit
       (ITEM_IS_NEW, which is normally an illegal flag to appear alone).
 
+    - A protocol-29 batch file includes a bit for the setting of the --dirs
+      option and for the setting of the --compress option.  Also, the shell
+      script created by --write-batch will use the --filter option instead
+      of --exclude-from to capture any filter rules.
+
   BUILD CHANGES:
 
     - Handle an operating system that use mkdev() in place of makedev().