Mention the latest protocol-29 changes.
[rsync/rsync.git] / NEWS
diff --git a/NEWS b/NEWS
index 2952c35..edbd15f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -47,6 +47,11 @@ 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.
+
     - We now check if the OS doesn't support using mknod() for creating
       FIFOs and sockets, and compile-in using mkfifo() and socket() when
       necessary.
@@ -69,6 +74,10 @@ Changes since 2.6.3:
       relative path), the backup code was erroneously trying to backup a
       file that was put into the partial-dir.
 
+    - If a file gets resent in a single transfer and the --backup option is
+      enabled along with --inplace, rsync no longer performs a duplicate
+      backup (it used to overwrite the first backup with the failed file).
+
     - 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
@@ -100,14 +109,26 @@ Changes since 2.6.3:
       output without overlapping it.  (Requires protocol 29.)
 
     - When --timeout is specified, lulls that occur in the transfer while
-      the generator is scanning the file system (either looking for files
-      to generate or files to delete) cause a new keep-alive packet to be
-      sent that should keep the transfer going (as long as the generator
-      continues to make progress).  (Requires protocol 29.)
+      the generator is doing work that does not generate socket traffic
+      (looking for changed files, deleting files, doing directory-time
+      touch-ups, etc.) will cause a new keep-alive packet to be sent that
+      should keep the transfer going as long as the generator continues to
+      make progress.  (Requires protocol 29.)
 
     - The stat size of a device is not added to the total file size of the
       items in the transfer since the size might be undefined on some OSes.
 
+    - Fixed a problem with refused-option messages sometimes not making it
+      back to the client side when a remote --files-from was in effect and
+      the daemon was the receiver.
+
+    - 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 changed-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
@@ -131,7 +152,7 @@ Changes since 2.6.3:
 
     - Added support for specifying multiple --compare-dest or --link-dest
       options, but only of a single type. (Promoted from the patches dir
-      and enhanced.)
+      and enhanced.) (Requires protocol 29.)
 
     - Added the --max-size option. (Promoted from the patches dir.)
 
@@ -211,11 +232,15 @@ 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.
 
+    - The hostname in HOST:PATH or HOST::PATH may now be an IPv6 literal
+      enclosed in '[' and ']' (e.g. "[::1]").  (We already allowed IPv6
+      literals in the rsync://HOST:PORT/PATH format.)
+
     - When building under windows, the default for --daemon is now to
       avoid detaching, requiring the new --detach option to force rsync
       to detach.
@@ -277,9 +302,19 @@ Changes since 2.6.3:
       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
-      file in the rsync algorithm (unlike a normal --inplace update).
+    - 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
@@ -317,7 +352,7 @@ Changes since 2.6.3:
       --filter option instead of --exclude-from to capture any filter rules.
 
     - An index equal to the file-list count is sent as a keep-alive packet
-      from the generator to the sender, who then forwards it on to the
+      from the generator to the sender, which then forwards it on to the
       receiver.  This normally invalid index is only a valid keep-alive
       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).