Some files not logged when using --compare-dest. Bug?

Wayne Davison wayned at samba.org
Fri Apr 1 18:16:48 GMT 2005


On Thu, Mar 31, 2005 at 02:34:14PM +0200, Vidar Madsen wrote:
> I just spotted another peculiarity when inspecting the rsync log. When
> using --compare-dest, source files that have permissions that differ
> from the "comparables" are not logged, unless you're using -i.

I think I have a better heuristic for this case.  Attached is a patch
that makes rsync itemize the copy as a "local change" (so the leading
'c' will get set) and output the name of the locally-copied file if
itemized-output is not enabled.

..wayne..
-------------- next part --------------
--- generator.c	31 Mar 2005 23:30:03 -0000	1.195
+++ generator.c	1 Apr 2005 18:10:27 -0000
@@ -923,8 +923,25 @@ static void recv_generator(char *fname, 
 					}
 					match_level = 0;
 					statret = -1;
-				} else
-					set_perms(fname, file, NULL, 0);
+				} else {
+					if (itemizing) {
+						itemize(file, ndx, 0, &st,
+							ITEM_LOCAL_CHANGE, 0,
+							NULL);
+					} else if (verbose && code) {
+						rprintf(code, "%s\n",
+							safe_fname(fname));
+					}
+					set_perms(fname, file, NULL,
+						  maybe_PERMS_REPORT);
+					if (preserve_hard_links
+					    && file->link_u.links) {
+						hard_link_cluster(file, ndx,
+								  itemizing,
+								  code);
+					}
+					return;
+				}
 			} else if (compare_dest || match_level == 1) {
 				fnamecmp = fnamecmpbuf;
 				fnamecmp_type = i;


More information about the rsync mailing list