The patches for 3.3.0.
[rsync-patches.git] / detect-renamed-lax.diff
index 56352dfe9a8d6c7aa99fbc3f87c185082bacc6f5..edb683ea90143ab6fc31c168ba519f3e79d33b53 100644 (file)
@@ -24,7 +24,7 @@ based-on: patch/master/detect-renamed
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -468,7 +468,9 @@ static int fattr_find(struct file_struct *f, char *fname)
+@@ -467,7 +467,9 @@ static int fattr_find(struct file_struct *f, char *fname)
                                continue;
                        }
                }
@@ -35,11 +35,11 @@ diff --git a/generator.c b/generator.c
                diff = u_strcmp(fmid->basename, f->basename);
                if (diff == 0) {
                        good_match = mid;
-@@ -1953,6 +1955,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1991,6 +1993,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                fnamecmp = partialptr;
                fnamecmp_type = FNAMECMP_PARTIAL_DIR;
                statret = 0;
-+              if (detect_renamed > 1 && unchanged_file(fnamecmp, file, &sx.st)) {
++              if (detect_renamed > 1 && quick_check_ok(FT_REG, fnamecmp, file, &sx.st)) {
 +                      /* Adopt the partial file. */
 +                      finish_transfer(fname, fnamecmp, NULL, NULL, file, 1, 1);
 +                      handle_partial_dir(partialptr, PDIR_DELETE);
@@ -60,7 +60,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -892,7 +892,9 @@ static struct poptOption long_options[] = {
+@@ -744,7 +744,9 @@ static struct poptOption long_options[] = {
    {"compare-dest",     0,  POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
    {"copy-dest",        0,  POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
    {"link-dest",        0,  POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
@@ -71,7 +71,7 @@ diff --git a/options.c b/options.c
    {"fuzzy",           'y', POPT_ARG_NONE,   0, 'y', 0, 0 },
    {"no-fuzzy",         0,  POPT_ARG_VAL,    &fuzzy_basis, 0, 0, 0 },
    {"no-y",             0,  POPT_ARG_VAL,    &fuzzy_basis, 0, 0, 0 },
-@@ -2710,8 +2712,14 @@ void server_options(char **args, int *argc_p)
+@@ -2838,8 +2840,14 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--super";
                if (size_only)
                        args[ac++] = "--size-only";
@@ -91,7 +91,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.1.md b/rsync.1.md
 --- a/rsync.1.md
 +++ b/rsync.1.md
-@@ -419,6 +419,8 @@ detailed description below for a complete description.
+@@ -508,6 +508,8 @@ has its own detailed description later in this manpage.
  --temp-dir=DIR, -T       create temporary files in directory DIR
  --fuzzy, -y              find similar file for basis if no dest file
  --detect-renamed         try to find renamed files to speed the xfer
@@ -100,20 +100,23 @@ diff --git a/rsync.1.md b/rsync.1.md
  --compare-dest=DIR       also compare destination files relative to DIR
  --copy-dest=DIR          ... and include copies of unchanged files
  --link-dest=DIR          hardlink to files in DIR when unchanged
-@@ -2177,6 +2179,17 @@ your home directory (remove the '=' for that).
+@@ -2652,6 +2654,20 @@ expand it.
      otential alternate-basis files will be removed as the transfer progresses.
-     This option conflicts with `--inplace` and `--append`.
+     This option conflicts with [`--inplace`](#opt) and [`--append`](#opt).
  
-+0.  ``--detect-renamed-lax`) This version of `--detect-renamed` makes rsync
-+    hard-link em(dest/D) to em(dest/S) without verifying that em(src/S) and
-+    em(dest/S) have the same data.  This poses a significant risk of corrupting
-+    the destination by representing a new source file by an unrelated
-+    destination file that coincidentally passes the quick check with the source
-+    file.  Use this option only if you accept the risk and disk I/O is a
-+    bottleneck.
++0.  `--detect-renamed-lax`
 +
-+0.  ``--detect-moved`` A less risky variant of `--detect-renamed-lax` that only
-+    uses a destination file that has the same basename as the new source file.
++    This version of [`--detect-renamed`](#opt) makes rsync hard-link `dest/D`
++    to `dest/S` without verifying that `src/S` and `dest/S` have the same data.
++    This poses a significant risk of corrupting the destination by representing
++    a new source file by an unrelated destination file that coincidentally
++    passes the quick check with the source file.  Use this option only if you
++    accept the risk and disk I/O is a bottleneck.
++
++0.  `--detect-moved`
++
++    A less risky variant of [`--detect-renamed-lax`](#opt) that only uses a
++    destination file that has the same basename as the new source file.
 +
  0.  `--compare-dest=DIR`