Hi Romain,
Romain Francoise <[EMAIL PROTECTED]> writes:
> "Mark D. Baushke" <[EMAIL PROTECTED]> writes:
>
> > I hope you find the patch to be useful enough to incorporate into a
> > future debian revision of rcs.
>
> Well, I'm all for making rlog(1) and friends recognize the id, but I'm
> not so sure about making RCS generate it at check in time. RCS has been
> stable for many years and I don't want to deviate too much from the
> upstream codebase in the Debian package; your patch as it stands is too
> disruptive for my taste.
>
> Of course if you can get upstream to merge it in a new RCS release,
> things will be different.
I have sent an e-mail to [email protected] and [EMAIL PROTECTED] with
the same patch to see what they will consider. I do not know if they
will condier a new revision of RCS or not. If they do, I hope you will
consider submitting at least some patches with the debian security
fixes.
In the mean time, I have provided you with a stripped down version of
the commitid patch. This version teaches rlog and friends to recognize
the id, but does not change the ci command to generate new ids.
I hope you find this version more acceptable.
-- Mark
ChangeLog entry:
2005-02-12 Mark D. Baushke <[EMAIL PROTECTED]>
* man/rcsfile.5in: Document new commitid delta phrase.
* man/rcsfile.5: Regenerated.
* rcsbase.h (struct hshentry): Add new commitid field.
* src/rcsgen.c (putdelta): Preserve old commitid entries.
* src/rcssyn.c (Kcommitid): New global constant keyword.
(getdelta): Add optional parsing for it.
* src/rlog.c (putadelta): Print it out.
* src/rcssyn.c (getdelta): Initialize Delta->commitid.
Index:man/rcsfile.5
--- man/rcsfile.5~ 1995-06-16 06:58:26.000000000 +0000
+++ man/rcsfile.5 2005-09-27 20:53:01.023504000 +0000
@@ -1,4 +1,4 @@
-.lf 1 ./rcsfile.5in
+.lf 1 rcsfile.5in
.\" Set p to 1 if your formatter can handle pic output.
.if t .nr p 1
.de Id
@@ -69,6 +69,7 @@ nonterminal symbols are in
\f3state\fP {\f2id\fP}\f3;\fP
\f3branches\fP {\f2num\fP}*\f3;\fP
\f3next\fP {\f2num\fP}\f3;\fP
+ { \f3commitid\fP \f2id\fP\f3;\fP }
{ \f2newphrase\fP }*
.LP
\f2desc\fP ::= \f3desc\fP \f2string\fP
@@ -128,6 +129,18 @@ and all the digits of years thereafter.
Dates use the Gregorian calendar; times use UTC.
.PP
The
+.I commitid
+is followed by an
+.I id
+token. This token is intended to be unique across
+multiple files and is used to help group files as
+being a part of the same logical commit.
+This token must uniquely identify the commit
+operation that was applied to a set of RCS files.
+In particular, it must be unique among all the
+commitids in this file.
+.PP
+The
.I newphrase
productions in the grammar are reserved for future extensions
to the format of \*r files.
@@ -230,7 +243,7 @@ The following diagram shows an example o
.fi
.\}
.if \np \{\
-.lf 232
+.lf 245
.PS 4.250i 3.812i
.\" -2.0625 -4.25 1.75 0
.\" 0.000i 4.250i 3.812i 0.000i
@@ -239,7 +252,7 @@ The following diagram shows an example o
.nr 0x 1
\h'3.812i'
.sp -1
-.lf 242
+.lf 255
\h'2.062i-(\w'Head'u/2u)'\v'0.125i-(0v/2u)+0v+0.22m'Head
.sp -1
\h'2.062i'\v'0.250i'\D'l0.000i 0.500i'
@@ -256,7 +269,7 @@ The following diagram shows an example o
.sp -1
\h'1.688i'\v'0.750i'\D'l0.000i 0.500i'
.sp -1
-.lf 244
+.lf 257
\h'2.062i-(\w'2.1'u/2u)'\v'1.000i-(0v/2u)+0v+0.22m'2.1
.sp -1
\h'2.062i'\v'1.250i'\D'l0.000i 0.500i'
@@ -265,7 +278,7 @@ The following diagram shows an example o
.sp -1
\h'2.062i'\v'1.750i'\D'l-0.025i -0.100i'
.sp -1
-.lf 246
+.lf 259
\h'2.062i-(\w'1.3'u/2u)'\v'2.000i-(1v/2u)+0v+0.22m'1.3
.sp -1
\h'2.062i'\v'2.250i'\D'l-0.375i -0.500i'
@@ -280,7 +293,7 @@ The following diagram shows an example o
.sp -1
\h'1.375i'\v'1.500i'\D'l0.025i 0.100i'
.sp -1
-.lf 249
+.lf 262
\h'1.375i-(\w'1.3.1.1'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.3.1.1
.sp -1
\h'1.375i'\v'1.000i'\D'l-0.375i 0.500i'
@@ -295,7 +308,7 @@ The following diagram shows an example o
.sp -1
\h'2.062i'\v'2.750i'\D'l-0.025i -0.100i'
.sp -1
-.lf 252
+.lf 265
\h'2.062i-(\w'1.2'u/2u)'\v'3.000i-(1v/2u)+0v+0.22m'1.2
.sp -1
\h'2.062i'\v'3.250i'\D'l-0.375i -0.500i'
@@ -310,7 +323,7 @@ The following diagram shows an example o
.sp -1
\h'0.375i'\v'2.500i'\D'l0.025i 0.100i'
.sp -1
-.lf 255
+.lf 268
\h'0.375i-(\w'1.2.1.1'u/2u)'\v'2.250i-(1v/2u)+1v+0.22m'1.2.1.1
.sp -1
\h'0.375i'\v'2.000i'\D'l-0.375i 0.500i'
@@ -325,7 +338,7 @@ The following diagram shows an example o
.sp -1
\h'0.375i'\v'1.500i'\D'l0.025i 0.100i'
.sp -1
-.lf 257
+.lf 270
\h'0.375i-(\w'1.2.1.3'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.2.1.3
.sp -1
\h'0.375i'\v'1.000i'\D'l-0.375i 0.500i'
@@ -340,7 +353,7 @@ The following diagram shows an example o
.sp -1
\h'2.750i'\v'2.500i'\D'l0.025i 0.100i'
.sp -1
-.lf 261
+.lf 274
\h'2.750i-(\w'1.2.2.1'u/2u)'\v'2.250i-(1v/2u)+1v+0.22m'1.2.2.1
.sp -1
\h'2.750i'\v'2.000i'\D'l-0.375i 0.500i'
@@ -355,7 +368,7 @@ The following diagram shows an example o
.sp -1
\h'3.438i'\v'1.250i'\D'l0.025i 0.100i'
.sp -1
-.lf 264
+.lf 277
\h'3.438i-(\w'\s-21.2.2.1.1.1\s0'u/2u)'\v'1.000i-(1v/2u)+1v+0.22m'\s-21.2.2.1.1.1\s0
.sp -1
\h'3.438i'\v'0.750i'\D'l-0.375i 0.500i'
@@ -370,7 +383,7 @@ The following diagram shows an example o
.sp -1
\h'2.750i'\v'1.500i'\D'l0.025i 0.100i'
.sp -1
-.lf 267
+.lf 280
\h'2.750i-(\w'1.2.2.2'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.2.2.2
.sp -1
\h'2.750i'\v'1.000i'\D'l-0.375i 0.500i'
@@ -385,7 +398,7 @@ The following diagram shows an example o
.sp -1
\h'2.062i'\v'3.750i'\D'l-0.025i -0.100i'
.sp -1
-.lf 270
+.lf 283
\h'2.062i-(\w'1.1'u/2u)'\v'4.000i-(1v/2u)+0v+0.22m'1.1
.sp -1
\h'2.062i'\v'4.250i'\D'l-0.375i -0.500i'
@@ -398,9 +411,9 @@ The following diagram shows an example o
.if \n(00 .fi
.br
.nr 0x 0
-.lf 271
+.lf 284
.PE
-.lf 272
+.lf 285
.\}
.PP
.SH IDENTIFICATION
Index:man/rcsfile.5in
--- man/rcsfile.5in~ 1995-06-05 08:28:35.000000000 +0000
+++ man/rcsfile.5in 2005-09-27 20:52:46.424504000 +0000
@@ -68,6 +68,7 @@ nonterminal symbols are in
\f3state\fP {\f2id\fP}\f3;\fP
\f3branches\fP {\f2num\fP}*\f3;\fP
\f3next\fP {\f2num\fP}\f3;\fP
+ { \f3commitid\fP \f2id\fP\f3;\fP }
{ \f2newphrase\fP }*
.LP
\f2desc\fP ::= \f3desc\fP \f2string\fP
@@ -127,6 +128,18 @@ and all the digits of years thereafter.
Dates use the Gregorian calendar; times use UTC.
.PP
The
+.I commitid
+is followed by an
+.I id
+token. This token is intended to be unique across
+multiple files and is used to help group files as
+being a part of the same logical commit.
+This token must uniquely identify the commit
+operation that was applied to a set of RCS files.
+In particular, it must be unique among all the
+commitids in this file.
+.PP
+The
.I newphrase
productions in the grammar are reserved for future extensions
to the format of \*r files.
Index:src/rcsbase.h
--- src/rcsbase.h~ 1995-06-16 06:19:24.000000000 +0000
+++ src/rcsbase.h 2005-09-28 21:47:51.490505000 +0000
@@ -358,6 +363,7 @@ struct hshentry {
char const * lockedby; /* who locks the revision */
char const * state; /* state of revision (Exp by default) */
char const * name; /* name (if any) by which retrieved */
+ char const * commitid; /* text string to associate commits */
struct cbuf log; /* log message requested at checkin */
struct branchhead * branches; /* list of first revisions on branches*/
struct cbuf ig; /* ignored phrases in admin part */
@@ -662,6 +668,7 @@ extern int TotalDeltas;
extern char const *const expand_names[];
extern char const
Kaccess[], Kauthor[], Kbranch[], Kcomment[],
+ Kcommitid[],
Kdate[], Kdesc[], Kexpand[], Khead[], Klocks[], Klog[],
Knext[], Kstate[], Kstrict[], Ksymbols[], Ktext[];
void unexpected_EOF P((void)) exiting;
Index:src/rcsgen.c
--- src/rcsgen.c~ 1995-06-16 06:19:24.000000000 +0000
+++ src/rcsgen.c 2005-09-27 22:08:47.421504000 +0000
@@ -547,6 +547,9 @@ putdelta(node, fout)
aprintf(fout, ";\n%s\t%s;\n", Knext, node->next?node->next->num:"");
awrite(node->ig.string, node->ig.size, fout);
+
+ if (node->commitid)
+ aprintf(fout, "%s\t%s;\n", Kcommitid, node->commitid);
}
Index:src/rcssyn.c
--- src/rcssyn.c~ 1995-06-16 06:19:24.000000000 +0000
+++ src/rcssyn.c 2005-10-04 08:05:21.000000000 +0000
@@ -171,6 +171,7 @@ char const
Kauthor[] = "author",
Kbranch[] = "branch",
Kcomment[] = "comment",
+ Kcommitid[] = "commitid",
Kdate[] = "date",
Kdesc[] = "desc",
Kexpand[] = "expand",
@@ -433,6 +434,14 @@ getdelta()
Delta->lockedby = 0;
Delta->log.string = 0;
Delta->selector = true;
+
+ if (getkeyopt(Kcommitid)) {
+ Delta->commitid = NextString;
+ nextlex();
+ getsemi(Kcommitid);
+ } else
+ Delta->commitid = NULL;
+
Delta->ig = getphrases(Kdesc);
TotalDeltas++;
return (true);
Index:src/rlog.c
--- src/rlog.c~ 1995-06-16 06:19:24.000000000 +0000
+++ src/rlog.c 2005-09-26 17:23:55.257504000 +0000
@@ -591,6 +591,10 @@ putadelta(node,editscript,trunk)
aprintf(out, insDelFormat,
editscript->insertlns, editscript->deletelns);
+ if ( node->commitid )
+ aprintf(out, "%s commitid: %s", (editscript) ? ";" : "",
+ node->commitid);
+
newbranch = node->branches;
if ( newbranch ) {
bufautobegin(&branchnum);