-- Matt McCutchen <hashproduct@gmail.com>
---- old/options.c
-+++ new/options.c
-@@ -29,6 +29,7 @@ extern struct filter_list_struct filter_
- extern struct filter_list_struct server_filter_list;
+diff --git a/options.c b/options.c
+--- a/options.c
++++ b/options.c
+@@ -33,6 +33,7 @@ extern struct filter_list_struct filter_list;
+ extern struct filter_list_struct daemon_filter_list;
int make_backups = 0;
+int make_source_backups = 0;
/**
* If 1, send the whole file as literal data rather than trying to
-@@ -351,6 +352,7 @@ void usage(enum logcode F)
+@@ -367,6 +368,7 @@ void usage(enum logcode F)
rprintf(F," --existing skip creating new files on receiver\n");
rprintf(F," --ignore-existing skip updating files that already exist on receiver\n");
rprintf(F," --remove-source-files sender removes synchronized files (non-dirs)\n");
rprintf(F," --del an alias for --delete-during\n");
rprintf(F," --delete delete extraneous files from destination dirs\n");
rprintf(F," --delete-before receiver deletes before transfer, not during\n");
-@@ -570,6 +572,7 @@ static struct poptOption long_options[]
+@@ -607,6 +609,7 @@ static struct poptOption long_options[] = {
{"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 },
{"no-bwlimit", 0, POPT_ARG_VAL, &bwlimit, 0, 0, 0 },
{"backup", 'b', POPT_ARG_VAL, &make_backups, 1, 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 },
-@@ -1836,7 +1839,8 @@ void server_options(char **args,int *arg
- args[ac++] = "--super";
- if (size_only)
- args[ac++] = "--size-only";
-- }
-+ } else if (make_source_backups)
-+ args[ac++] = "--source-backup";
+@@ -1951,6 +1954,8 @@ void server_options(char **args, int *argc_p)
+ goto oom;
+ args[ac++] = arg;
+ }
++ if (make_source_backups)
++ args[ac++] = "--source-backup";
+ }
if (modify_window_set) {
- if (asprintf(&arg, "--modify-window=%d", modify_window) < 0)
---- old/rsync.yo
-+++ new/rsync.yo
-@@ -350,6 +350,7 @@ to the detailed description below for a
+diff --git a/rsync.yo b/rsync.yo
+--- a/rsync.yo
++++ b/rsync.yo
+@@ -361,6 +361,7 @@ to the detailed description below for a complete description. verb(
--existing skip creating new files on receiver
--ignore-existing skip updating files that exist on receiver
--remove-source-files sender removes synchronized files (non-dir)
--del an alias for --delete-during
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before transfer (default)
-@@ -1004,6 +1005,14 @@ dit(bf(--remove-source-files)) This tell
+@@ -1111,6 +1112,14 @@ dit(bf(--remove-source-files)) This tells rsync to remove from the sending
side the files (meaning non-directories) that are a part of the transfer
and have been successfully duplicated on the receiving side.
dit(bf(--delete)) This tells rsync to delete extraneous files from the
receiving side (ones that aren't on the sending side), but only for the
directories that are being synchronized. You must have asked rsync to
---- old/sender.c
-+++ new/sender.c
+diff --git a/sender.c b/sender.c
+--- a/sender.c
++++ b/sender.c
@@ -39,6 +39,7 @@ extern int protocol_version;
extern int remove_source_files;
extern int updating_basis_file;