The patches for 3.3.0.
[rsync-patches.git] / backup-deleted.diff
index a3faee8991bc8c63d0f07f672a7064183e1124a9..0cbf2bb0029984a0c6764aec488f915655c05be6 100644 (file)
@@ -7,11 +7,11 @@ To use this patch, run these commands for a successful build:
     ./configure                                 (optional if already run)
     make
 
-based-on: d4fc18f3755987ccea6e7f43609f862aa0254c5a
+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) {
@@ -20,16 +20,16 @@ diff --git a/generator.c b/generator.c
                        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) {
@@ -41,7 +41,7 @@ diff --git a/generator.c b/generator.c
 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 },
@@ -51,8 +51,8 @@ diff --git a/options.c b/options.c
    {"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 },
-@@ -2666,6 +2667,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.
@@ -65,7 +65,7 @@ diff --git a/options.c b/options.c
 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) {
@@ -74,7 +74,7 @@ diff --git a/receiver.c b/receiver.c
                                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. */
@@ -86,7 +86,7 @@ diff --git a/receiver.c b/receiver.c
 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)
@@ -94,24 +94,24 @@ diff --git a/rsync.1.md b/rsync.1.md
  --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;
        }