Jim Searle writes: > > I found this question in the archives, but never saw an answer. Is there a > way to get 'BASE' to work with 'cvs log'?
Yes, by fixing the code, which I just did. :-) The fix will be in the next releases. If you just can't wait, here's a patch (for the stable [1.11] branch): Index: log.c =================================================================== RCS file: /cvs/ccvs/src/log.c,v retrieving revision 1.79.4.12 retrieving revision 1.79.4.14 diff -u -r1.79.4.12 -r1.79.4.14 --- log.c 29 Jan 2005 18:39:50 -0000 1.79.4.12 +++ log.c 1 Feb 2005 19:09:07 -0000 1.79.4.14 @@ -1,6 +1,11 @@ /* - * Copyright (c) 1992, Brian Berliner and Jeff Polk - * Copyright (c) 1989-1992, Brian Berliner + * Copyright (C) 1986-2005 The Free Software Foundation, Inc. + * + * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot <http://ximbiot.com>, + * and others. + * + * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk + * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. @@ -123,7 +128,7 @@ static struct option_revlist *log_parse_revlist PROTO ((const char *)); static void log_parse_date PROTO ((struct log_data *, const char *)); static void log_parse_list PROTO ((List **, const char *)); -static struct revlist *log_expand_revlist PROTO ((RCSNode *, +static struct revlist *log_expand_revlist PROTO ((RCSNode *, char *, struct option_revlist *, int)); static void log_free_revlist PROTO ((struct revlist *)); @@ -810,21 +815,30 @@ { struct log_data *log_data = (struct log_data *) callerdat; Node *p; + char *baserev; int selrev = -1; RCSNode *rcsfile; char buf[50]; struct revlist *revlist = NULL; struct log_data_and_rcs log_data_and_rcs; - if ((rcsfile = finfo->rcs) == NULL) + rcsfile = finfo->rcs; + p = findnode (finfo->entries, finfo->file); + if (p != NULL) + { + Entnode *e = p->data; + baserev = e->version; + if (baserev[0] == '-') ++baserev; + } + else + baserev = NULL; + + if (rcsfile == NULL) { /* no rcs file. What *do* we know about this file? */ - p = findnode (finfo->entries, finfo->file); - if (p != NULL) + if (baserev != NULL) { - Entnode *e = p->data; - - if (e->version[0] == '0' && e->version[1] == '\0') + if (baserev[0] == '0' && baserev[1] == '\0') { if (!really_quiet) error (0, 0, "%s has been added, but not committed", @@ -847,7 +861,7 @@ /* Turn any symbolic revisions in the revision list into numeric revisions. */ - revlist = log_expand_revlist (rcsfile, log_data->revlist, + revlist = log_expand_revlist (rcsfile, baserev, log_data->revlist, log_data->default_branch); if (log_data->sup_header || (!log_data->header && !log_data->long_header)) @@ -1037,8 +1051,9 @@ * Expand any symbolic revisions. */ static struct revlist * -log_expand_revlist (rcs, revlist, default_branch) +log_expand_revlist (rcs, baserev, revlist, default_branch) RCSNode *rcs; + char *baserev; struct option_revlist *revlist; int default_branch; { @@ -1099,7 +1114,9 @@ nr->first = xstrdup (r->first); else { - if (RCS_nodeisbranch (rcs, r->first)) + if (baserev && strcmp (r->first, TAG_BASE) == 0) + nr->first = xstrdup (baserev); + else if (RCS_nodeisbranch (rcs, r->first)) nr->first = RCS_whatbranch (rcs, r->first); else nr->first = RCS_gettag (rcs, r->first, 1, (int *) NULL); @@ -1117,7 +1134,9 @@ nr->last = xstrdup (r->last); else { - if (RCS_nodeisbranch (rcs, r->last)) + if (baserev && strcmp (r->last, TAG_BASE) == 0) + nr->last = xstrdup (baserev); + else if (RCS_nodeisbranch (rcs, r->last)) nr->last = RCS_whatbranch (rcs, r->last); else nr->last = RCS_gettag (rcs, r->last, 1, (int *) NULL); -Larry Jones There's never enough time to do all the nothing you want. -- Calvin _______________________________________________ Info-cvs mailing list Info-cvs@gnu.org http://lists.gnu.org/mailman/listinfo/info-cvs