[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cvs 1.11.2 rdiff fails with binary files
From: |
tony |
Subject: |
Re: cvs 1.11.2 rdiff fails with binary files |
Date: |
Wed, 30 Oct 2002 15:54:24 -0500 |
User-agent: |
Internet Messaging Program (IMP) 3.1 |
Quoting Larry Jones <lawrence.jones@eds.com>:
> > What exactly is the point of the cvswrappers option during import
> > (-W)... it doesn't seem to matter with rdiff. Is this just an
> rdiff
> > quirk, or am I missing something?
>
> It marks the file as binary, which affects many things -- including
> rdiff -- just not in the way you wanted.
Ok, but now it does. Here's a patch that works as follows:
For each file in the module we are rdiff'ing: if the two versions differ, but
the file is marked as "binary" (via cvswrappers, or cvs admin -kb), then
instead of trying to print the patch (which would result in an error and
non-zero return code), just print out a message like the "patch" program does,
ie: "Binary files name:ver1 and name:ver2 differ".
Here it is:
diff -urN cvs-1.11.1p1-orig/src/patch.c cvs-1.11.1p1-apc/src/patch.c
--- cvs-1.11.1p1-orig/src/patch.c Tue Apr 24 14:14:53 2001
+++ cvs-1.11.1p1-apc/src/patch.c Wed Oct 30 15:32:38 2002
@@ -590,6 +592,28 @@
case 0: /* nothing to do */
break;
case 1:
+ /* If files differ and are marked as binary, just output message */
+ if (rcsfile->expand != NULL && strcmp(rcsfile->expand, "b") == 0)
+ {
+ cvs_output("Binary files ", 0);
+ cvs_output(finfo->fullname, 0);
+ cvs_output(":", 1);
+ if (vers_tag)
+ cvs_output(vers_tag, 0);
+ else
+ cvs_output("missing", 0);
+ cvs_output(" and ", 0);
+ cvs_output(finfo->fullname, 0);
+ cvs_output(":", 1);
+ if (vers_head)
+ cvs_output(vers_head, 0);
+ else
+ cvs_output("removed", 0);
+ cvs_output(" differ",0);
+ cvs_output("\n",1);
+ break;
+ }
+
/*
* The two revisions are really different, so read the first two
* lines of the diff output file, and munge them to include more