Design Proposals
Patch to support diffing across dates within a branch. This allows commands such as:
cvs -q rdiff -s -r"dabranch:2006/02/15 22:28" -r"dabranch:2006/02/17 00:28" MODULE
which are otherwise broken due only to command-line parsing erroneous restrictions. Thanks to Jonathan Kamens who pointed out this bug in cvs originally here.
diff -wru cvs-1.12.13/src/patch.c cvs-1.12.13-patched/src/patch.c
--- cvs-1.12.13/src/patch.c 2005-09-23 02:03:04.000000000 +0000
+++ cvs-1.12.13-patched/src/patch.c 2006-02-16 22:53:16.000000000 +0000
@@ -270,6 +270,7 @@
int which;
char *repository;
char *where;
+ char *cp;
TRACE ( TRACE_FUNCTION, "patch_proc ( %s, %s, %s, %d, %d, %s, %s )",
xwhere ? xwhere : "(null)",
@@ -292,7 +293,6 @@
/* if mfile isn't null, we need to set up to do only part of the module */
if (mfile != NULL)
{
- char *cp;
char *path;
/* if the portion of the module is a path, put the dir part on repos */
@@ -340,16 +340,30 @@
else
which = W_REPOS;
+
if (rev1 != NULL && !rev1_validated)
{
- tag_check_valid (rev1, argc - 1, argv + 1, local_specified, 0,
- repository, false);
+ //tag_check_valid (rev1, argc - 1, argv + 1, local_specified, 0, repository, false);
+ if ((cp = strchr(rev1, ':')) != NULL)
+ {
+ *cp++ = '\0';
+ date1 = Make_Date (cp);
+ if (! *rev1)
+ rev1 = NULL;
+ }
rev1_validated = 1;
}
+
if (rev2 != NULL && !rev2_validated)
{
- tag_check_valid (rev2, argc - 1, argv + 1, local_specified, 0,
- repository, false);
+ //tag_check_valid (rev2, argc - 1, argv + 1, local_specified, 0, repository, false);
+ if ((cp = strchr(rev2, ':')) != NULL)
+ {
+ *cp++ = '\0';
+ date2 = Make_Date (cp);
+ if (! *rev2)
+ rev2 = NULL;
+ }
rev2_validated = 1;
}
![[ Valid XHTML 1.0! ]](/branding/w3c-valid-xhtml10-44x16.png)
![[ Valid CSS! ]](/branding/w3c-valid-css-44x16.png)
