./configure (optional if already run)
make
-based-on: 34141954c7179438f3b3c5e11f55089e5aee5a8e
+based-on: 6c8ca91c731b7bf2b081694bda85b7dadc2b7aff
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
-@@ -1813,7 +1813,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1846,7 +1846,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto notify_others;
if (read_batch || whole_file) {
if (!(backupptr = get_backup_name(fname)))
goto cleanup;
if (!(back_file = make_file(fname, NULL, NULL, 0, NO_FILTERS)))
-@@ -1849,7 +1849,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1882,7 +1882,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto notify_others;
}
- if (inplace && make_backups > 0 && fnamecmp_type == FNAMECMP_FNAME) {
+ if (inplace && make_backups > 1 && fnamecmp_type == FNAMECMP_FNAME) {
if (!(backupptr = get_backup_name(fname))) {
- close(fd);
goto cleanup;
-@@ -1973,7 +1973,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
+ }
+@@ -2002,7 +2002,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
skip_atomic = 0;
if (del_for_flag) {
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -926,7 +926,8 @@ static struct poptOption long_options[] = {
+@@ -776,7 +776,8 @@ static struct poptOption long_options[] = {
{"no-i", 0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
{"bwlimit", 0, POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
{"no-bwlimit", 0, POPT_ARG_VAL, &bwlimit, 0, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2657,6 +2658,10 @@ void server_options(char **args, int *argc_p)
- }
+@@ -2805,6 +2806,10 @@ void server_options(char **args, int *argc_p)
+ args[ac++] = safe_arg("--compress-choice", compress_choice);
if (am_sender) {
+ /* A remote sender just needs the above -b option.
diff --git a/receiver.c b/receiver.c
--- a/receiver.c
+++ b/receiver.c
-@@ -420,7 +420,7 @@ static void handle_delayed_updates(char *local_name)
+@@ -427,7 +427,7 @@ static void handle_delayed_updates(char *local_name)
struct file_struct *file = cur_flist->files[ndx];
fname = local_name ? local_name : f_name(file, NULL);
if ((partialptr = partial_dir_fname(fname)) != NULL) {
continue;
if (DEBUG_GTE(RECV, 1)) {
rprintf(FINFO, "renaming %s to %s\n",
-@@ -736,7 +736,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -748,7 +748,7 @@ int recv_files(int f_in, int f_out, char *local_name)
} else {
/* Reminder: --inplace && --partial-dir are never
* enabled at the same time. */
diff --git a/rsync.1.md b/rsync.1.md
--- a/rsync.1.md
+++ b/rsync.1.md
-@@ -343,6 +343,7 @@ detailed description below for a complete description.
+@@ -428,6 +428,7 @@ has its own detailed description later in this manpage.
--relative, -R use relative path names
--no-implied-dirs don't send implied dirs with --relative
--backup, -b make backups (see --suffix & --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
--suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
--update, -u skip files that are newer on the receiver
-@@ -833,6 +834,13 @@ your home directory (remove the '=' for that).
- trailing inclusion/exclusion of `*`, the auto-added rule would never be
- reached).
+@@ -1006,6 +1007,13 @@ expand it.
+ rules specify a trailing inclusion/exclusion of `*`, the auto-added rule
+ would never be reached).
-+0. --backup-deleted
++0. `--backup-deleted`
+
+ With this option, deleted destination files are renamed, while modified
+ destination files are not. Otherwise, this option behaves the same as
-+ `--backup`, described above. Note that if `--backup` is also specified,
-+ whichever option is specified last takes precedence.
++ [`--backup`](#opt), described above. Note that if [`--backup`](#opt) is
++ also specified, whichever option is specified last takes precedence.
+
0. `--backup-dir=DIR`
- In combination with the `--backup` option, this tells rsync to store all
+ This implies the [`--backup`](#opt) option, and tells rsync to store all
diff --git a/rsync.c b/rsync.c
--- a/rsync.c
+++ b/rsync.c
-@@ -699,7 +699,7 @@ int finish_transfer(const char *fname, const char *fnametmp,
+@@ -733,7 +733,7 @@ int finish_transfer(const char *fname, const char *fnametmp,
goto do_set_file_attrs;
}