%!PS-Adobe-1.0 %%Creator: devps (Pipeline Associates, Inc.) %%CreationDate: Fri Jan 4 00:13:52 1991 %%Pages: (atend) %%DocumentFonts: (atend) /X /exch load def /r /rmoveto load def /m /moveto load def /l /lineto load def /rl /rlineto load def /lc{yc X xc X l st} bind def /mc{yc X xc X m} bind def /el{gs /a X def a div 1 X scale cp np a xc 2 div 0 360 arc st gr} bind def /ar{cp 7 2 roll np xc 5 1 roll atan 3 1 roll atan X arc st} bind def /sp{yc X xc X 6 2 roll yc X xc X 6 2 roll yc X xc X 6 2 roll ct} bind def /st /stroke load def /gs /gsave load def /gr /grestore load def /cp /currentpoint load def /np /newpath load def /ct /curveto load def /m0{0 0 moveto} bind def /BP{/devps-save save def m0} bind def /EP{ clear devps-save restore showpage} bind def /res 10.000000 def /V{res neg div 792 add currentpoint pop X m} bind def /H{res div currentpoint X pop transform round exch round exch itransform moveto} bind def /h{res div 0 r} bind def /v{res neg div 0 X r} bind def /xc{res div} bind def /yc{res neg div 792 add} bind def /S{X H show} bind def /psize 10 def /height 1 def /slant 0 def /FF{findfont X dup 12 div setlinewidth /psize X def [psize 0 psize height mul slant sin slant cos div mul psize height mul 0 0] makefont setfont} bind def /shade{gs /dy X def /dx X def np m setgray 0 dy rl dx 0 rl 0 dy neg rl dx neg 0 rl closepath fill gr} bind def 1 setlinecap 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 1000 1000] def /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put dup 8#110/rc put dup 8#111/lt put dup 8#112/bv put dup 8#113/lk put dup 8#114/lb put dup 8#115/rt put dup 8#116/rk put dup 8#117/rb put dup 8#120/rf put dup 8#121/lf put dup 8#122/lc put dup 8#140/sq put dup 8#141/bx put dup 8#142/ci put dup 8#143/br put dup 8#144/rn put dup 8#145/vr put dup 8#146/ob put dup 8#147/bu put dup 8#150/ru put dup 8#151/ul put dup 8#326/sr put pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 2 setlinejoin 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{0 800 moveto 0 -770 rls}def /bv{0 800 moveto 0 -1000 rls}def /br{0 750 moveto 0 -1000 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def /rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def /lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def /sr{395.744681 0 moveto 557.446809 995.744681 lineto 521.276596 1000 lineto 382.978723 170.212766 lineto 168.085106 602.127660 lineto 8.510638 525.531915 lineto 23.404255 496.170213 lineto 127.659574 546.808511 lineto 395.744681 0 lineto closepath fill} def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 416 def /lb 416 def /rt 416 def /rb 416 def /lk 416 def /rk 416 def /rc 416 def /lc 416 def /rf 416 def /lf 416 def /bv 416 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def /sr 750 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /resolution 720 def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight % firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def % /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def /C{/Courier FF}def /R{/Times-Roman FF}def /B{/Times-Bold FF}def /I{/Times-Italic FF}def %% Troff special characters not on Symbol font %% Copyright (C) 1986 by Pipeline Associates, Inc. %% Version 1.0 /altRTD 20 dict def altRTD begin /s{setcachedevice}def /C{1000 1000 scale}def /m /moveto load def /c /curveto load def /S /stroke load def /l /lineto load def /a /arcto load def /p /pop load def /sl /setlinewidth load def end /F_Troff 17 dict def F_Troff begin systemdict /currentpacking known {/SavePacking currentpacking def true setpacking}if /PaintType 0 def /FontType 3 def /StrokeWidth 0 def /UniqueID 8277003 def /FontMatrix [.001000 0 0 .001000 0 0] def /FontBBox [-12 -105 942 855 ] def /Encoding 256 array def /CD 256 1 add dict def /FontInfo 3 dict def FontInfo begin /UnderlinePosition -133 def /UnderlineThickness 20 def end /FontName (Troff) def 0 1 256 1 sub{Encoding exch /.notdef put}for CD /.notdef{500 0 setcharwidth{}}put Encoding (1) 0 get /br put %% bold vertical rule used by tbl CD /br{ C 0 0 -.5 -.5 1 1 s np .05 sl 0 -.1 m 0 .9 l {S} }put Encoding (2) 0 get /ul put %% underline used by tbl CD /ul{ C .5 0 -.5 -.5 1 1 s np .05 sl 0 -.1 m .5 -.1 l {S} }put Encoding (3) 0 get /ru put %% baseline rule CD /ru{ C .5 0 -.5 -.5 1 1 s np .05 sl m0 .5 0 l {S} }put Encoding (4) 0 get /vr put %% vertical rule CD /vr{ C 0 0 -.5 -.5 1 1 s np .05 sl m0 0 1 l {S} }put Encoding (5) 0 get /sq put %% square CD /sq{ C .5 0 -.5 -.5 1 1 s np .05 sl 0 .25 m 0 .5 rl .5 0 rl 0 -.5 rl -.5 0 rl closepath {S} }put Encoding (6) 0 get /bx put %% solid box CD /bx{ C .5 0 -.5 -.5 1 1 s np 0 .25 m 0 .5 rl .5 0 rl 0 -.5 rl -.5 0 rl closepath {fill} }put Encoding (7) 0 get /rn put %% radical extender CD /rn{ C .5 0 -.5 -.5 1 1 s np .03 sl -.03 .9 m .5 0 rl {S} }put Encoding (8) 0 get /GR put %% gray mask CD /GR{ C .5 0 setcharwidth .5 setgray np 0 -.1 m 0 1 rl .5 0 rl 0 -1 rl -.5 0 rl closepath {fill} }put Encoding 97 /a put CD /a{1000 0 0 66 942 421 s 430 415 m 578 406 678 349 662 319 c 655 306 614 287 583 296 c 570 300 466 340 438 332 c 365 309 335 213 270 209 c 0 310 m 108 310 l 108 114 l 0 114 l 0 310 l 42 161 m 42 134 l 66 134 l 66 161 l 42 161 l 47 155 m 47 140 l 62 140 l 62 155 l 47 155 l 110 133 m 226 113 300 66 410 80 c 497 91 550 69 634 76 c 645 76 663 92 669 107 c 677 125 673 141 668 160 c 725 334 m 758 332 734 253 701 250 c 501 325 m 475 316 476 309 473 302 c 465 282 482 263 499 257 c 552 236 615 253 689 253 c 701 253 713 236 713 218 c 712 194 702 168 678 161 c 671 159 663 160 655 160 c 591 158 516 156 479 168 c 461 173 453 191 453 210 c 453 224 456 235 466 244 c 476 253 490 252 503 255 c 459 84 m 447 96 435 106 435 123 c 435 136 440 145 447 155 c 453 163 462 168 469 173 c 110 293 m 173 318 300 421 435 415 c 609 407 852 416 885 411 c 898 409 924 411 930 380 c 942 316 828 339 742 334 c 731 334 730 335 725 335 c 701 336 685 336 660 336 c{S}}put Encoding 98 /b put CD /b{1000 0 -12 66 930 421 s 500 415 m 352 406 252 349 268 319 c 275 306 316 287 347 296 c 360 300 464 340 492 332 c 565 309 595 213 660 209 c 930 310 m 822 310 l 822 114 l 930 114 l 930 310 l 888 161 m 888 134 l 864 134 l 864 161 l 888 161 l 883 155 m 883 140 l 868 140 l 868 155 l 883 155 l 820 133 m 704 113 630 66 520 80 c 433 91 380 69 296 76 c 285 76 267 92 261 107 c 253 125 257 141 262 160 c 205 334 m 172 332 196 253 229 250 c 429 325 m 455 316 454 309 457 302 c 465 282 448 263 431 257 c 378 236 315 253 241 253 c 229 253 217 236 217 218 c 218 194 228 168 252 161 c 259 159 267 160 275 160 c 339 158 414 156 451 168 c 469 173 477 191 477 210 c 477 224 474 235 464 244 c 454 253 440 252 427 255 c 471 84 m 483 96 495 106 495 123 c 495 136 490 145 483 155 c 477 163 468 168 461 173 c 820 293 m 757 318 630 421 495 415 c 321 407 78 416 45 411 c 32 409 6 411 0 380 c -12 316 102 339 188 334 c 199 334 200 335 205 335 c 229 336 245 336 270 336 c{S}}put Encoding 99 /c put CD /c{1000 0 184 0 827 627 s 185 315 m 186 488 332 627 505 625 c 682 623 827 467 815 290 c 804 124 666 0 500 0 c 327 0 184 142 185 315 c{S}}put Encoding 100 /d put CD /d{590 0 134 158 477 500 s 300 160 m 208 162 134 238 135 330 c 136 423 212 500 305 500 c 397 500 473 427 475 335 c 477 239 396 158 300 160 c{fill}}put Encoding 101 /e put % Bell Symbol CD /e{1010 0 -100 -210 1010 1010 s 100 sl 0 setlinecap 420 300 450 0 360 arc 420 650 m 420 575 l S newpath 120 125 m 720 125 l 75 sl S 420 125 m 420 25 l S 220 400 m 220 175 120 175 100 a p p p p 220 400 m 220 550 420 550 80 a p p p p 620 400 m 620 175 720 175 100 a p p p p 620 400 m 620 550 420 550 80 a p p p p 295 550 m 545 550 l{S}}put /BuildChar{altRTD /BuildChar get exec}def end altRTD begin /BuildChar{altRTD begin /char exch def /fontdict exch def save /charname fontdict /Encoding get char get def fontdict /StrokeWidth get sl fontdict /CD get dup charname known {charname}{/.notdef}ifelse get newpath exec fontdict /PaintType get 0 eq{exec}{p S}ifelse restore end}def end systemdict /currentpacking known{F_Troff /SavePacking get setpacking}if /Troff F_Troff definefont pop /Y1{/Troff FF}def /Y{/Symbol FF}def %%EndProlog %%Page: 0 1 BP /slant 0 def /height 1.000000 def 10 C 10 R 40 V 0(-)S 1230 V 12 B 1925(RCS\320A)S 2406(System)S 2809(for)S 2998(Version)S 3434(Control)S 1620 V 10 I 2560(Walter)S 2862(F.)S 2978(Tichy)S 1800 V 10 R 2183(Department)S 2684(of)S 2797(Computer)S 3227(Sciences)S 1920 V 2512(Purdue)S 2825(University)S 2040 V 2257(West)S 2492(Lafayette,)S 2923(Indiana)S 3252(47907)S 2640 V 10 I 2643(ABSTRACT)S 2880 V 10 R 1330(An)S 1490(important)S 1917(problem)S 2289(in)S 2406(program)S 2783(development)S 3338(and)S 3521(maintenance)S 4064(is)S 4170(version)S 4503(con-)S 3000 V 1080(trol,)S 1302(i.e.,)S 1507(the)S 1687(task)S 1906(of)S 2047(keeping)S 2421(a)S 2523(software)S 2924(system)S 3260(consisting)S 3724(of)S 3865(many)S 4145(versions)S 4536(and)S 3120 V 1080(con\256gurations)S 1691(well)S 1902(organized.)S 2389(The)S 2583(Revision)S 2978(Control)S 3323(System)S 3657(\(RCS\))S 3952(is)S 4058(a)S 4141(software)S 4524(tool)S 3240 V 1080(that)S 1280(assists)S 1586(with)S 1814(that)S 2014(task.)S 2280(RCS)S 2520(manages)S 2919(revisions)S 3330(of)S 3463(text)S 3663(documents,)S 4171(in)S 4298(particular)S 3360 V 1080(source)S 1376(programs,)S 1815(documentation,)S 2471(and)S 2652(test)S 2828(data.)S 3086(It)S 3184(automates)S 3626(the)S 3785(storing,)S 4125(retrieval,)S 4519(log-)S 3480 V 1080(ging)S 1289(and)S 1464(identi\256cation)S 2023(of)S 2136(revisions,)S 2552(and)S 2726(it)S 2812(provides)S 3186(selection)S 3571(mechanisms)S 4095(for)S 4241(composing)S 3600 V 1080(con\256gurations.)S 1745(This)S 1962(paper)S 2222(introduces)S 2677(basic)S 2921(version)S 3254(control)S 3576(concepts)S 3964(and)S 4147(discusses)S 4558(the)S 3720 V 1080(practice)S 1438(of)S 1564(version)S 1901(control)S 2227(using)S 2487(RCS.)S 2775(For)S 2957(conserving)S 3438(space,)S 3726(RCS)S 3958(stores)S 4233(deltas,)S 4533(i.e.,)S 3840 V 1080(di)S 1158 H (f)show 10 -.5 mul h (f)show 10 R 1219(erences)S 1555(between)S 1925(successive)S 2384(revisions.)S 2838(Several)S 3175(delta)S 3407(storage)S 3734(methods)S 4112(are)S 4272(discussed.)S 3960 V 1080(Usage)S 1365(statistics)S 1746(show)S 1993(that)S 2179(RCS's)S 2476(delta)S 2705(storage)S 3028(method)S 3363(is)S 3465(space)S 3721(and)S 3900(time)S 4113(e)S 4157 H (f)show 10 -.5 mul h (\256)show 10 R 4241(cient.)S 4525(The)S 4080 V 1080(paper)S 1331(concludes)S 1760(with)S 1968(a)S 2042(detailed)S 2388(survey)S 2684(of)S 2797(version)S 3121(control)S 3434(tools.)S 4320 V 10 B 1080(Keywords)S 10 R 1513(:)S 1579(con\256guration)S 2150(management,)S 2723(history)S 3040(management,)S 3614(version)S 3947(control,)S 4294(revisions,)S 4440 V 1080(deltas.)S 4920 V 720(1991/01/03)S 7920 V EP %%Page: 1 2 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 1230 V 12 B 1925(RCS\320A)S 2406(System)S 2809(for)S 2998(Version)S 3434(Control)S 1620 V 10 I 2560(Walter)S 2862(F.)S 2978(Tichy)S 1800 V 10 R 2183(Department)S 2684(of)S 2797(Computer)S 3227(Sciences)S 1920 V 2512(Purdue)S 2825(University)S 2040 V 2257(West)S 2492(Lafayette,)S 2923(Indiana)S 3252(47907)S 2676 V 10 B 720(1.)S 855(Introduction)S 2892 V 10 R 970(Version)S 1353(control)S 1703(is)S 1837(the)S 2026(task)S 2254(of)S 2404(keeping)S 2787(software)S 3197(systems)S 3581(consisting)S 4054(of)S 4205(many)S 4495(versions)S 4896(and)S 3072 V 720(con\256gurations)S 1337(well)S 1554(organized.)S 2047(The)S 2247(Revision)S 2648(Control)S 2999(System)S 3339(\(RCS\))S 3639(is)S 3750(a)S 3838(set)S 3993(of)S 4120(UNIX)S 4413(commands)S 4890(that)S 3252 V 720(assist)S 967(with)S 1175(that)S 1355(task.)S 3468 V 970(RCS')S 1227(primary)S 1577(function)S 1944(is)S 2045(to)S 2157(manage)S 10 I 2501(revision)S 2857(groups)S 10 R 3135(.)S 3224(A)S 3330(revision)S 3686(group)S 3953(is)S 4054(a)S 4133(set)S 4279(of)S 4397(text)S 4582(documents,)S 3648 V 720(called)S 10 I 991(revisions)S 10 R 1352(,)S 1410(that)S 1593(evolved)S 1942(from)S 2169(each)S 2384(other.)S 2677(A)S 2781(new)S 2979(revision)S 3333(is)S 3432(created)S 3751(by)S 3883(manually)S 4287(editing)S 4597(an)S 4723(existing)S 3828 V 720(one.)S 956(RCS)S 1183(organizes)S 1602(the)S 1761(revisions)S 2159(into)S 2352(an)S 2483(ancestral)S 2874(tree.)S 3115(The)S 3307(initial)S 3579(revision)S 3939(is)S 4044(the)S 4204(root)S 4403(of)S 4524(the)S 4684(tree,)S 4896(and)S 4008 V 720(the)S 880(tree)S 1067(edges)S 1332(indicate)S 1686(from)S 1918(which)S 2200(revision)S 2560(a)S 2642(given)S 2902(one)S 3084(evolved.)S 3493(Besides)S 3842(managing)S 4274(individual)S 4718(revision)S 4188 V 720(groups,)S 1052(RCS)S 1277(provides)S 1657(\257exible)S 1993(selection)S 2384(functions)S 2792(for)S 2944(composing)S 3419(con\256gurations.)S 4082(RCS)S 4308(may)S 4516(be)S 4646(combined)S 4368 V 720(with)S 928(MAKE)S 4318 V 1222(1)S 4368 V 1272(,)S 1327(resulting)S 1707(in)S 1815(a)S 1889(powerful)S 2279(package)S 2635(for)S 2781(version)S 3105(control.)S 4584 V 970(RCS)S 1192(also)S 1385(o)S 1435 H (f)show 10 -.5 mul h (f)show 10 R 1496(ers)S 1644(facilities)S 2021(for)S 2170(merging)S 2536(updates)S 2874(with)S 3085(customer)S 3484(modi\256cations,)S 4087(for)S 4236(distributed)S 4697(software)S 4764 V 720(development,)S 1334(and)S 1551(for)S 1740(automatic)S 2207(identi\256cation.)S 2863(Identi\256cation)S 3469(is)S 3609(the)S 3803(`stamping')S 4308(of)S 4463(revisions)S 4896(and)S 4944 V 720(con\256gurations)S 1336(with)S 1558(unique)S 1874(markers.)S 2294(These)S 2576(markers)S 2941(are)S 3106(akin)S 3322(to)S 3444(serial)S 3704(numbers,)S 4118(telling)S 4419(software)S 4807(main-)S 5124 V 720(tainers)S 1016(unambiguously)S 1663(which)S 1937(con\256guration)S 2500(is)S 2597(before)S 2881(them.)S 5340 V 970(RCS)S 1194(is)S 1295(designed)S 1684(for)S 1835(both)S 2048(production)S 2516(and)S 2695(experimental)S 3251(environments.)S 3885(In)S 4003(production)S 4471(environments,)S 5520 V 720(access)S 1014(controls)S 1376(detect)S 1654(update)S 1959(con\257icts)S 2337(and)S 2520(prevent)S 2858(overlapping)S 3374(changes.)S 3789(In)S 3911(experimental)S 4471(environments,)S 5700 V 720(where)S 993(strong)S 1273(controls)S 1625(are)S 1776(counterproductive,)S 2557(it)S 2643(is)S 2740(possible)S 3098(to)S 3206(loosen)S 3497(the)S 3649(controls.)S 5916 V 970(Although)S 1389(RCS)S 1621(was)S 1818(originally)S 2249(intended)S 2635(for)S 2793(programs,)S 3237(it)S 3335(is)S 3444(useful)S 3730(for)S 3888(any)S 4074(text)S 4266(that)S 4458(is)S 4567(revised)S 4897(fre-)S 6096 V 720(quently)S 1054(and)S 1232(whose)S 1521(previous)S 1898(revisions)S 2292(must)S 2520(be)S 2647(preserved.)S 3122(RCS)S 3345(has)S 3511(been)S 3732(applied)S 4059(successfully)S 4580(to)S 4691(store)S 4918(the)S 6276 V 720(source)S 1010(text)S 1190(for)S 1336(drawings,)S 1757(VLSI)S 2009(layouts,)S 2353(documentation,)S 3002(speci\256cations,)S 3601(test)S 3770(data,)S 3991(form)S 4215(letters)S 4489(and)S 4663(articles.)S 6492 V 970(This)S 1191(paper)S 1455(discusses)S 1870(the)S 2035(practice)S 2393(of)S 2519(version)S 2856(control)S 3182(using)S 3442(RCS.)S 3730(It)S 3834(also)S 4038(introduces)S 4497(basic)S 4746(version)S 6672 V 720(control)S 1036(concepts,)S 1443(useful)S 1720(for)S 1869(clarifying)S 2290(current)S 2605(practice)S 2953(and)S 3130(designing)S 3551(similar)S 3861(systems.)S 4265(Revision)S 4653(groups)S 4957(of)S 6852 V 720(individual)S 1161(components)S 1679(are)S 1835(treated)S 2141(in)S 2254(the)S 2411(next)S 2618(three)S 2853(sections,)S 3236(and)S 3416(the)S 3574(extensions)S 4032(to)S 4146(con\256gurations)S 4754(follow.)S 7032 V 720(Because)S 1082(of)S 1195(its)S 1320(size,)S 1530(a)S 1604(survey)S 1900(of)S 2013(version)S 2337(control)S 2650(tools)S 2875(appears)S 3209(at)S 3311(the)S 3463(end)S 3637(of)S 3750(the)S 3902(paper.)S 7132 V 8 Y1 720(333333333333333333)S 7232 V 8 R 720(An)S 842(earlier)S 1067(version)S 1325(of)S 1415(this)S 1554(paper)S 1754(was)S 1902(published)S 2236(in)S 8 I 2322(Software\320Practice)S 2970(&)S 3056(Experience)S 8 B 3450(15)S 8 R 3530(,)S 3574(7)S 3638(\(July)S 3821(1985\),)S 4051(637-654.)S 7920 V EP %%Page: 2 3 BP /slant 0 def /height 1.000000 def 8 R 8 R 40 V 10 R 0(-)S 580 V 2792(- 2 -)S 900 V 10 B 720(2.)S 855(Getting)S 1207(started)S 1536(with)S 1755(RCS)S 1116 V 10 R 970(Suppose)S 1339(a)S 1413(text)S 1593(\256le)S 10 I 1751(f.c)S 10 R 1878(is)S 1975(to)S 2083(be)S 2207(placed)S 2497(under)S 2754(control)S 3067(of)S 3180(RCS.)S 3455(Invoking)S 3846(the)S 3998(check-in)S 4371(command)S 1296 V 10 I 1080(ci)S 1212(f.c)S 1536 V 10 R 720(creates)S 1030(a)S 1108(new)S 1308(revision)S 1664(group)S 1931(with)S 2143(the)S 2299(contents)S 2666(of)S 10 I 2783(f.c)S 10 R 2914(as)S 3031(the)S 3187(initial)S 3455(revision)S 3811(\(numbered)S 4278(1.1\))S 4471(and)S 4650(stores)S 4918(the)S 1716 V 720(group)S 986(into)S 1175(the)S 1330(\256le)S 10 I 1491(f.c,v)S 10 R 1657(.)S 1745(Unless)S 2050(told)S 2239(otherwise,)S 2685(the)S 2840(command)S 3267(deletes)S 10 I 3577(f.c)S 10 R 3674(.)S 3762(It)S 3856(also)S 4050(asks)S 4255(for)S 4404(a)S 4481(description)S 4957(of)S 1896 V 720(the)S 878(group.)S 1202(The)S 1393(description)S 1873(should)S 2176(state)S 2395(the)S 2553(common)S 2939(purpose)S 3291(of)S 3410(all)S 3546(revisions)S 3943(in)S 4057(the)S 4215(group,)S 4510(and)S 4691(becomes)S 2076 V 720(part)S 913(of)S 1034(the)S 1194(group's)S 1537(documentation.)S 2224(All)S 2390(later)S 2605(check-in)S 2986(commands)S 3457(will)S 3651(ask)S 3822(for)S 3976(a)S 4058(log)S 4224(entry,)S 4492(which)S 4773(should)S 2256 V 720(summarize)S 1197(the)S 1358(changes)S 1718(made.)S 2029(\(The)S 2257(\256rst)S 2453(revision)S 2815(is)S 2922(assigned)S 3306(a)S 3390(default)S 3707(log)S 3875(message,)S 4278(which)S 4562(just)S 4747(records)S 2436 V 720(the)S 872(fact)S 1051(that)S 1231(it)S 1317(is)S 1414(the)S 1566(initial)S 1830(revision.\))S 2652 V 970(Files)S 1204(ending)S 1515(in)S 10 I 1632(,v)S 10 R 1740(are)S 1900(called)S 10 I 2177(RCS)S 2394(files)S 10 R 2600(\()S 10 I 2633(v)S 10 R 2716(stands)S 3006(for)S 10 I 3162(v)S 10 R 3206(ersions\);)S 3590(the)S 3752(others)S 4036(are)S 4197(called)S 4475(working)S 4848(\256les.)S 2832 V 720(To)S 861(get)S 1013(back)S 1231(the)S 1383(working)S 1746(\256le)S 10 I 1904(f.c)S 10 R 2031(in)S 2139(the)S 2291(previous)S 2665(example,)S 3058(execute)S 3392(the)S 3544(check-out)S 3967(command:)S 3012 V 10 I 1080(co)S 1234(f.c)S 3252 V 10 R 720(This)S 932(command)S 1360(extracts)S 1704(the)S 1860(latest)S 2105(revision)S 2461(from)S 2689(the)S 2845(revision)S 3201(group)S 10 I 3468(f.c,v)S 10 R 3668(and)S 3846(writes)S 4124(it)S 4214(into)S 10 I 4404(f.c)S 10 R 4501(.)S 4590(The)S 4780(\256le)S 10 I 4943(f.c)S 3432 V 10 R 720(can)S 888(now)S 1090(be)S 1214(edited)S 1488(and,)S 1687(when)S 1933(\256nished,)S 2305(checked)S 2661(back)S 2879(in)S 2987(with)S 10 I 3195(ci)S 10 R 3267(:)S 3612 V 10 I 1080(ci)S 1212(f.c)S 3852 V 720(Ci)S 10 R 845(assigns)S 1164(number)S 1499(1.2)S 1654(to)S 1762(the)S 1914(new)S 2110(revision.)S 2517(If)S 10 I 2613(ci)S 10 R 2715(complains)S 3156(with)S 3364(the)S 3516(message)S 4032 V 10 I 1080(ci)S 1182(error:)S 1456(no)S 1586(lock)S 1782(set)S 1923(by)S 2047(<login>)S 4272 V 10 R 720(then)S 922(the)S 1074(system)S 1383(administrator)S 1947(has)S 2111(decided)S 2452(to)S 2561(con\256gure)S 2969(RCS)S 3190(for)S 3337(a)S 3412(production)S 3876(environment)S 4412(by)S 4543(enabling)S 4918(the)S 4452 V 720(`strict)S 993(locking)S 1333(feature'.)S 1736(If)S 1841(this)S 2025(feature)S 2340(is)S 2446(enabled,)S 2820(all)S 2959(RCS)S 3188(\256les)S 3394(are)S 3554(initialized)S 3993(such)S 4215(that)S 4404(check-in)S 4786(opera-)S 4632 V 720(tions)S 959(require)S 1285(a)S 1373(lock)S 1590(on)S 1735(the)S 1902(previous)S 2291(revision)S 2658(\(the)S 2858(one)S 3047(from)S 3286(which)S 3575(the)S 3742(current)S 4069(one)S 4258(evolved\).)S 4707(Locking)S 4812 V 720(prevents)S 1100(overlapping)S 1619(modi\256cations)S 2206(if)S 2309(several)S 2633(people)S 2941(work)S 3188(on)S 3330(the)S 3494(same)S 3740(\256le.)S 3964(If)S 4071(locking)S 4412(is)S 4520(required,)S 4918(the)S 4992 V 720(revision)S 1072(should)S 1369(have)S 1587(been)S 1805(locked)S 2101(during)S 2392(the)S 2544(check-out)S 2967(by)S 3097(using)S 3344(the)S 3496(option)S 10 I 3782(\261l)S 10 R 3860(:)S 5172 V 10 I 1080(co)S 1234(\261l)S 1372(f.c)S 5412 V 10 R 720(Of)S 858(course)S 1151(it)S 1240(is)S 1340(too)S 1501(late)S 1678(now)S 1883(for)S 2032(the)S 2187(check-out)S 2614(with)S 2826(locking,)S 3185(because)S 10 I 3534(f.c)S 10 R 3665(has)S 3832(already)S 4159(been)S 4381(changed;)S 4775(check-)S 5592 V 720(ing)S 880(out)S 1040(the)S 1194(\256le)S 1354(again)S 1602(would)S 1884(overwrite)S 2298(the)S 2452(modi\256cations.)S 3084(\(To)S 3260(prevent)S 3591(accidental)S 4027(overwrites,)S 10 I 4505(co)S 10 R 4631(senses)S 4918(the)S 5772 V 720(presence)S 1111(of)S 1237(a)S 1324(working)S 1700(\256le)S 1871(and)S 2058(asks)S 2273(whether)S 2637(the)S 2803(user)S 3013(really)S 3284(intended)S 3672(to)S 3794(overwrite)S 4220(it.)S 4375(The)S 4574(overwriting)S 5952 V 720(check-out)S 1151(is)S 1256(sometimes)S 1722(useful)S 2004(for)S 2158(backing)S 2512(up)S 2650(to)S 2766(the)S 2926(previous)S 3307(revision.\))S 3754(To)S 3902(be)S 4033(able)S 4236(to)S 4351(proceed)S 4703(with)S 4918(the)S 6132 V 720(check-in)S 1093(in)S 1201(the)S 1353(present)S 1671(case,)S 1897(\256rst)S 2083(execute)S 6312 V 10 I 1080(rcs)S 1262(\261l)S 1400(f.c)S 6552 V 10 R 720(This)S 933(command)S 1363(retroactively)S 1903(locks)S 2150(the)S 2308(latest)S 2555(revision,)S 2938(unless)S 3224(someone)S 3615(else)S 3806(locked)S 4108(it)S 4200(in)S 4314(the)S 4472(meantime.)S 4957(In)S 6732 V 720(this)S 895(case,)S 1121(the)S 1273(two)S 1453(programmers)S 2015(involved)S 2395(have)S 2613(to)S 2721(negotiate)S 3117(whose)S 3402(modi\256cations)S 3977(should)S 4274(take)S 4470(precedence.)S 6948 V 970(If)S 1073(an)S 1204(RCS)S 1431(\256le)S 1596(is)S 1700(private,)S 2039(i.e.,)S 2223(if)S 2321(only)S 2536(the)S 2695(owner)S 2981(of)S 3101(the)S 3260(\256le)S 3426(is)S 3531(expected)S 3923(to)S 4039(deposit)S 4366(revisions)S 4765(into)S 4959(it,)S 7128 V 720(the)S 879(strict)S 1116(locking)S 1453(feature)S 1766(is)S 1870(unnecessary)S 2394(and)S 2575(may)S 2784(be)S 2915(disabled.)S 3340(If)S 3443(strict)S 3680(locking)S 4017(is)S 4120(disabled,)S 4514(the)S 4672(owner)S 4957(of)S 7308 V 720(the)S 884(RCS)S 1117(\256le)S 1288(need)S 1519(not)S 1690(have)S 1921(a)S 2008(lock)S 2223(for)S 2382(check-in.)S 2823(For)S 3005(safety)S 3286(reasons,)S 3653(all)S 3796(others)S 4083(still)S 4277(do.)S 4475(Turning)S 4840(strict)S 7920 V EP %%Page: 3 4 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2792(- 3 -)S 900 V 720(locking)S 1050(o)S 1100 H (f)show 10 -.5 mul h (f)show 10 R 1191(and)S 1365(on)S 1495(is)S 1592(done)S 1816(with)S 2024(the)S 2176(commands:)S 1080 V 10 I 1080(rcs)S 1262(\261U)S 1444(f.c)S 10 R 1751(and)S 10 I 2165(rcs)S 2347(\261L)S 2513(f.c)S 1320 V 10 R 720(These)S 993(commands)S 1461(enable)S 1756(or)S 1875(disable)S 2194(the)S 2352(strict)S 2588(locking)S 2924(feature)S 3236(for)S 3388(each)S 3606(RCS)S 3832(\256le)S 3996(individually.)S 4571(The)S 4762(system)S 1500 V 720(administrator)S 1283(only)S 1491(decides)S 1820(whether)S 2171(strict)S 2401(locking)S 2731(is)S 2828(enabled)S 3168(initially.)S 1716 V 970(To)S 1114(reduce)S 1412(the)S 1567(clutter)S 1855(in)S 1966(a)S 2043(working)S 2409(directory,)S 2827(all)S 2960(RCS)S 3183(\256les)S 3383(can)S 3554(be)S 3681(moved)S 3986(to)S 4097(a)S 4174(subdirectory)S 4706(with)S 4918(the)S 1896 V 720(name)S 10 I 980(RCS)S 10 R 1158(.)S 1257(RCS)S 1491(commands)S 1968(look)S 2190(\256rst)S 2390(into)S 2590(that)S 2784(directory)S 3188(for)S 3348(RCS)S 3581(\256les.)S 3846(All)S 4017(the)S 4182(commands)S 4658(presented)S 2076 V 720(above)S 988(work)S 1223(with)S 1431(the)S 10 I 1583(RCS)S 10 R 1791(subdirectory)S 2320(without)S 2656(change.\262)S 2292 V 970(It)S 1068(may)S 1277(be)S 1408(undesirable)S 1906(that)S 10 I 2094(ci)S 10 R 2204(deletes)S 2519(the)S 2679(working)S 3050(\256le.)S 3271(For)S 3448(instance,)S 3838(sometimes)S 4304(one)S 4486(would)S 4774(like)S 4962(to)S 2472 V 720(save)S 927(the)S 1079(current)S 1391(revision,)S 1768(but)S 1926(continue)S 2300(editing.)S 2663(Invoking)S 2652 V 10 I 1080(ci)S 1212(\261l)S 1350(f.c)S 2892 V 10 R 720(checks)S 1027(in)S 10 I 1141(f.c)S 10 R 1274(as)S 1393(usual,)S 1665(but)S 1829(performs)S 2225(an)S 2355(additional)S 2792(check-out)S 3222(with)S 3437(locking)S 3774(afterwards.)S 4286(Thus,)S 4548(the)S 4707(working)S 3072 V 720(\256le)S 883(does)S 1101(not)S 1264(disappear)S 1681(after)S 1898(the)S 2055(check-in.)S 2488(Similarly,)S 2921(the)S 3078(option)S 10 I 3368(\261u)S 10 R 3502(does)S 3719(a)S 3797(check-in)S 4174(followed)S 4563(by)S 4697(a)S 4775(check-)S 3252 V 720(out)S 885(without)S 1228(locking.)S 1620(This)S 1835(option)S 2128(is)S 2232(useful)S 2513(if)S 2611(the)S 2770(\256le)S 2935(is)S 3039(needed)S 3359(for)S 3513(compilation)S 4029(after)S 4249(the)S 4409(check-in.)S 4845(Both)S 3432 V 720(options)S 1045(update)S 1341(the)S 1493(identi\256cation)S 2051(markers)S 2402(in)S 2510(the)S 2662(working)S 3025(\256le)S 3183(\(see)S 3373(below\).)S 3648 V 970(Besides)S 1311(the)S 1463(operations)S 10 I 1909(ci)S 10 R 2011(and)S 10 I 2185(co)S 10 R 2279(,)S 2334(RCS)S 2554(provides)S 2928(the)S 3080(following)S 3499(commands:)S 3828 V 10 I 720(ident)S 10 R 1241(extract)S 1542(identi\256cation)S 2100(markers)S 3948 V 10 I 720(rcs)S 10 R 1241(change)S 1553(RCS)S 1773(\256le)S 1931(attributes)S 4068 V 10 I 720(rcsclean)S 10 R 1241(remove)S 1570(unchanged)S 2032(working)S 2395(\256les)S 2592(\(optional\))S 4188 V 10 I 720(rcsdiff)S 10 R 1241(compare)S 1614(revisions)S 4308 V 10 I 720(rcsfreeze)S 10 R 1241(record)S 1525(a)S 1599(con\256guration)S 2162(\(optional\))S 4428 V 10 I 720(rcsmerge)S 10 R 1241(merge)S 1520(revisions)S 4548 V 10 I 720(rlog)S 10 R 1241(read)S 1442(log)S 1600(messages)S 2007(and)S 2181(other)S 2416(information)S 2918(in)S 3026(RCS)S 3246(\256les)S 4728 V 720(A)S 822(synopsis)S 1197(of)S 1310(these)S 1545(commands)S 2008(appears)S 2342(in)S 2450(the)S 2602(Appendix.)S 4968 V 10 B 720(2.1.)S 930(Automatic)S 1409(Identi\256cation)S 5124 V 10 R 970(RCS)S 1201(can)S 1381(stamp)S 1662(source)S 1964(and)S 2150(object)S 2436(code)S 2666(with)S 2886(special)S 3205(identi\256cation)S 3775(strings,)S 4109(similar)S 4429(to)S 4549(product)S 4896(and)S 5244 V 720(serial)S 966(numbers.)S 1395(To)S 1536(obtain)S 1816(such)S 2029(identi\256cation,)S 2612(place)S 2852(the)S 3004(marker)S 5424 V 10 I 1080($Id$)S 5664 V 10 R 720(into)S 923(the)S 1092(text)S 1289(of)S 1419(a)S 1510(revision,)S 1904(for)S 2067(instance)S 2441(inside)S 2727(a)S 2818(comment.)S 3292(The)S 3494(check-out)S 3934(operation)S 4358(will)S 4561(replace)S 4895(this)S 5844 V 720(marker)S 1032(with)S 1240(a)S 1314(string)S 1572(of)S 1685(the)S 1837(form)S 6024 V 10 I 1080($Id:)S 1306(filename)S 1710(revisionnumber)S 2397(date)S 2629(time)S 2861(author)S 3188(state)S 3437(locker)S 3716($)S 6264 V 10 R 720(This)S 929(string)S 1188(need)S 1407(never)S 1659(be)S 1784(touched,)S 2156(because)S 10 I 2502(co)S 10 R 2627(keeps)S 2885(it)S 2972(up)S 3103(to)S 3212(date)S 3409(automatically.)S 4039(To)S 4181(propagate)S 4605(the)S 4758(marker)S 6444 V 720(into)S 906(object)S 1180(code,)S 1423(simply)S 1726(put)S 1884(it)S 1970(into)S 2156(a)S 2230(literal)S 2493(character)S 2887(string.)S 3200(In)S 3313(C,)S 3435(this)S 3610(is)S 3707(done)S 3931(as)S 4044(follows:)S 6702 V 8 Y1 720(333333333333333333)S 6820 V 8 R 820(\262)S 900(Pairs)S 1088(of)S 1184(RCS)S 1367(and)S 1512(working)S 1808(\256les)S 1971(can)S 2111(actually)S 2392(be)S 2497(speci\256ed)S 2810(in)S 2902(3)S 2972(ways:)S 3188(a\))S 3279(both)S 3451(are)S 3577(given,)S 3804(b\))S 3900(only)S 4072(the)S 4199(working)S 4495(\256le)S 4627(is)S 6920 V 720(given,)S 945(c\))S 1034(only)S 1204(the)S 1329(RCS)S 1510(\256le)S 1640(is)S 1721(given.)S 1970(If)S 2050(a)S 2113(pair)S 2264(is)S 2345(given,)S 2570(both)S 2740(\256les)S 2900(may)S 3064(have)S 3241(arbitrary)S 3540(path)S 3704(pre\256xes;)S 4005(RCS)S 4185(commands)S 4557(pair)S 7020 V 720(them)S 903(up)S 1007(intelligently.)S 7920 V EP %%Page: 4 5 BP /slant 0 def /height 1.000000 def 8 R 8 R 40 V 10 R 0(-)S 520 V 2792(- 4 -)S 900 V 10 I 1080(static)S 1327(char)S 1540(rcsid[])S 1848(=)S 1946("$Id$";)S 1140 V 10 R 720(The)S 914(command)S 10 I 1347(ident)S 10 R 1586(extracts)S 1935(such)S 2157(markers)S 2517(from)S 2750(any)S 2933(\256le,)S 3125(in)S 3243(particular)S 3665(from)S 3899(object)S 4183(code.)S 10 I 4466(Ident)S 10 R 4711(helps)S 4962(to)S 1320 V 720(\256nd)S 921(out)S 1094(which)S 1383(revisions)S 1789(of)S 1917(which)S 2206(modules)S 2590(were)S 2828(used)S 3056(in)S 3179(a)S 3268(given)S 3535(program.)S 3972(It)S 4077(returns)S 4398(a)S 4486(complete)S 4896(and)S 1500 V 720(unambiguous)S 1300(component)S 1785(list,)S 1974(from)S 2209(which)S 2494(a)S 2579(copy)S 2814(of)S 2938(the)S 3101(program)S 3480(can)S 3659(be)S 3794(reconstructed.)S 4428(This)S 4648(facility)S 4973(is)S 1680 V 720(invaluable)S 1166(for)S 1312(program)S 1680(maintenance.)S 1896 V 970(There)S 1232(are)S 1383(several)S 1695(additional)S 2125(identi\256cation)S 2683(markers,)S 3059(one)S 3233(for)S 3379(each)S 3591(component)S 4065(of)S 4178($Id$.)S 4446(The)S 4631(marker)S 2076 V 10 I 1080($Log$)S 2316 V 10 R 720(has)S 894(a)S 979(similar)S 1298(function.)S 1727(It)S 1829(accumulates)S 2363(the)S 2526(log)S 2695(messages)S 3113(that)S 3304(are)S 3466(requested)S 3889(during)S 4191(check-in.)S 4630(Thus,)S 4896(one)S 2496 V 720(can)S 891(maintain)S 1274(the)S 1429(complete)S 1828(history)S 2139(of)S 2255(a)S 2332(revision)S 2687(directly)S 3025(inside)S 3297(it,)S 3411(by)S 3544(enclosing)S 3960(it)S 4049(in)S 4160(a)S 4237(comment.)S 4697(Figure)S 4990(1)S 2676 V 720(is)S 822(a)S 901(partial)S 1191(reproduction)S 1736(of)S 1854(a)S 1933(log)S 2096(contained)S 2519(in)S 2632(revision)S 2990(4.1)S 3151(of)S 3270(the)S 3428(\256le)S 10 I 3592(ci.c)S 10 R 3733(.)S 3824(The)S 4015(log)S 4179(appears)S 4519(at)S 4627(the)S 4785(begin-)S 2856 V 720(ning)S 928(of)S 1041(the)S 1193(\256le,)S 1376(and)S 1550(makes)S 1835(it)S 1921(easy)S 2128(to)S 2236(determine)S 2665(what)S 2889(the)S 3041(recent)S 3314(modi\256cations)S 3889(were.)S 3156 V 1080(/*)S 1188($Log:)S 1457(ci.c,v)S 1703($)S 3276 V 1110(*)S 1190(Revision)S 1576(4.1)S 1761(1983/05/10)S 2277(17:03:06)S 2693(wft)S 3396 V 1110(*)S 1190(Added)S 1486(option)S 1772(\261d)S 1902(and)S 2076(\261w,)S 2253(and)S 2427(updated)S 2773(assignment)S 3253(of)S 3366(date,)S 3587(etc.)S 3758(to)S 3866(new)S 4062(delta.)S 3516 V 1110(*)S 1190(Added)S 1486(handling)S 1866(of)S 1979(default)S 2286(branches.)S 3636 V 1110(*)S 3756 V 1110(*)S 1190(Revision)S 1576(3.9)S 1761(1983/02/15)S 2277(15:25:44)S 2693(wft)S 3876 V 1110(*)S 1190(Added)S 1486(call)S 1660(to)S 1768(fastcopy\(\))S 2202(to)S 2310(copy)S 2534(remainder)S 2968(of)S 3081(RCS)S 3301(\256le.)S 3996 V 1110(*)S 4116 V 1110(*)S 1190(Revision)S 1576(3.8)S 1761(1983/01/14)S 2277(15:34:05)S 2693(wft)S 4236 V 1110(*)S 1190(Added)S 1486(ignoring)S 1855(of)S 1968(interrupts)S 2381(while)S 2633(new)S 2829(RCS)S 3049(\256le)S 3207(is)S 3304(renamed;)S 4356 V 1110(*)S 1190(avoids)S 1481(deletion)S 1833(of)S 1946(RCS)S 2166(\256les)S 2363(by)S 2493(interrupts.)S 4476 V 1110(*)S 4596 V 1110(*)S 1190(Revision)S 1576(3.7)S 1761(1982/12/10)S 2277(16:09:20)S 2693(wft)S 4716 V 1110(*)S 1190(Corrected)S 1613(checking)S 2003(of)S 2116(return)S 2384(code)S 2602(from)S 2826(di)S 2904 H (f)show 10 -.5 mul h (f)show 10 R 2965(.)S 4836 V 1110(*)S 1190(An)S 1342(RCS)S 1562(\256le)S 1720(now)S 1922(inherits)S 2252(its)S 2377(mode)S 2629(during)S 2920(the)S 3072(\256rst)S 3258(ci)S 3360(from)S 3584(the)S 3736(working)S 4099(\256le,)S 4956 V 1110(*)S 1190(except)S 1480(that)S 1660(write)S 1895(permission)S 2364(is)S 2461(removed.)S 5076 V 1110(*/)S 5196 V 1783(Figure)S 2074(1.)S 2209(Log)S 2400(entries)S 2696(produced)S 3097(by)S 3227(the)S 3379(marker)S 3691($Log$.)S 5412 V 720(Since)S 973(revisions)S 1365(are)S 1517(stored)S 1792(in)S 1901(the)S 2054(form)S 2279(of)S 2393(di)S 2471 H (f)show 10 -.5 mul h (f)show 10 R 2532(erences,)S 2886(each)S 3099(log)S 3258(message)S 3628(is)S 3727(physically)S 4170(stored)S 4446(once,)S 4691(indepen-)S 5592 V 720(dent)S 922(of)S 1035(the)S 1187(number)S 1522(of)S 1635(revisions)S 2026(present.)S 2399(Thus,)S 2654(the)S 2806($Log$)S 3097(marker)S 3409(incurs)S 3683(negligible)S 4113(space)S 4364(overhead.)S 5952 V 10 B 720(3.)S 855(The)S 1052(RCS)S 1282(Revision)S 1679(Tree)S 6168 V 10 R 970(RCS)S 1198(arranges)S 1573(revisions)S 1972(in)S 2089(an)S 2222(ancestral)S 2615(tree.)S 2858(The)S 10 I 3052(ci)S 10 R 3163(command)S 3596(builds)S 3880(this)S 4064(tree;)S 4280(the)S 4441(auxiliary)S 4835(com-)S 6348 V 720(mand)S 10 I 983(rcs)S 10 R 1146(prunes)S 1453(it.)S 1605(The)S 1801(tree)S 1991(has)S 2165(a)S 2250(root)S 2452(revision,)S 2840(normally)S 3242(numbered)S 3682(1.1,)S 3873(and)S 4057(successive)S 4518(revisions)S 4919(are)S 6528 V 720(numbered)S 1154(1.2,)S 1339(1.3,)S 1524(etc.)S 1730(The)S 1921(\256rst)S 2113(\256eld)S 2327(of)S 2446(a)S 2526(revision)S 2884(number)S 3225(is)S 3328(called)S 3602(the)S 10 I 3760(release)S 4084(number)S 10 R 4425(and)S 4605(the)S 4763(second)S 6708 V 720(one)S 900(the)S 10 I 1058(level)S 1282(number)S 10 R 1587(.)S 1677(Unless)S 1984(given)S 2241(explicitly,)S 2679(the)S 10 I 2836(ci)S 10 R 2943(command)S 3372(assigns)S 3696(a)S 3775(new)S 3976(revision)S 4333(number)S 4673(by)S 4808(incre-)S 6888 V 720(menting)S 1085(the)S 1244(level)S 1475(number)S 1817(of)S 1937(the)S 2096(previous)S 2477(revision.)S 2891(The)S 3084(release)S 3398(number)S 3741(must)S 3974(be)S 4106(incremented)S 4637(explicitly,)S 7068 V 720(using)S 974(the)S 10 I 1133(\261r)S 10 R 1259(option)S 1551(of)S 10 I 1670(ci)S 10 R 1742(.)S 1833(Assuming)S 2275(there)S 2510(are)S 2667(revisions)S 3064(1.1,)S 3250(1.2,)S 3436(and)S 3616(1.3)S 3777(in)S 3891(the)S 4049(RCS)S 4275(\256le)S 4439(f.c,v,)S 4677(the)S 4835(com-)S 7248 V 720(mand)S 7920 V EP %%Page: 5 6 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2792(- 5 -)S 900 V 10 I 1080(ci)S 1212(\261r2.1)S 1486(f.c)S 10 R 1793(or)S 10 I 2086(ci)S 2218(\261r2)S 2417(f.c)S 1140 V 10 R 720(assigns)S 1061(the)S 1235(number)S 1592(2.1)S 1769(to)S 1899(the)S 2074(new)S 2293(revision.)S 2723(Later)S 2986(check-ins)S 3421(without)S 3780(the)S 10 I 3955(\261r)S 10 R 4097(option)S 4406(will)S 4615(assign)S 4918(the)S 1320 V 720(numbers)S 1095(2.2,)S 1276(2.3,)S 1457(and)S 1632(so)S 1751(on.)S 1936(The)S 2121(release)S 2427(number)S 2762(should)S 3059(be)S 3183(incremented)S 3706(only)S 3914(at)S 4016(major)S 4279(transition)S 4687(points)S 4962(in)S 1500 V 720(the)S 872(development,)S 1443(for)S 1589(instance)S 1946(when)S 2192(a)S 2266(new)S 2462(release)S 2768(of)S 2881(a)S 2955(software)S 3328(product)S 3663(has)S 3826(been)S 4044(completed.)S 1860 V 10 B 720(3.1.)S 930(When)S 1216(are)S 1384(branches)S 1803(needed?)S 2076 V 10 R 970(A)S 1075(young)S 1358(revision)S 1713(tree)S 1895(is)S 1995(slender:)S 2344(It)S 2438(consists)S 2789(of)S 2906(only)S 3118(one)S 3296(branch,)S 3626(called)S 3898(the)S 4054(trunk.)S 4354(As)S 4499(the)S 4655(tree)S 4838(ages,)S 2256 V 720(side)S 911(branches)S 1295(may)S 1497(form.)S 1776(Branches)S 2177(are)S 2328(needed)S 2640(in)S 2748(the)S 2900(following)S 3319(4)S 3399(situations.)S 2472 V 10 I 720(Temporary)S 1194(fixes)S 2652 V 10 R 970(Suppose)S 1346(a)S 1427(tree)S 1614(has)S 1785(5)S 1873(revisions)S 2272(grouped)S 2637(in)S 2753(2)S 2841(releases,)S 3219(as)S 3340(illustrated)S 3778(in)S 3894(Figure)S 4193(2.)S 4336(Revision)S 4730(1.3,)S 4918(the)S 2832 V 970(last)S 1139(one)S 1313(of)S 1426(release)S 1732(1,)S 1837(is)S 1934(in)S 2042(operation)S 2449(at)S 2551(customer)S 2947(sites,)S 3180(while)S 3432(release)S 3738(2)S 3818(is)S 3915(in)S 4023(active)S 4291(development.)S 3143 V 8 R 2532(1.1)S 3242 V 2410 H 2410 3012 lc 2410 3012 mc 2410 H 2755 3012 lc 2755 3012 mc 2755 H 2755 3242 lc 2755 3242 mc 2755 H 2410 3242 lc 2410 3242 mc 3127 V 2755 H 2985 3127 lc 2985 3127 mc 3138 V 2939 H 2985 3127 lc 2985 3127 mc 3115 V 2939 H 2985 3126 lc 2985 3126 mc 3143 V 3108(1.2)S 3242 V 2986 H 2986 3012 lc 2986 3012 mc 2986 H 3331 3012 lc 3331 3012 mc 3331 H 3331 3242 lc 3331 3242 mc 3331 H 2986 3242 lc 2986 3242 mc 3127 V 3331 H 3561 3127 lc 3561 3127 mc 3138 V 3515 H 3561 3127 lc 3561 3127 mc 3115 V 3515 H 3561 3126 lc 3561 3126 mc 3143 V 3684(1.3)S 3242 V 3562 H 3562 3012 lc 3562 3012 mc 3562 H 3907 3012 lc 3907 3012 mc 3907 H 3907 3242 lc 3907 3242 mc 3907 H 3562 3242 lc 3562 3242 mc 3127 V 3907 H 4137 3127 lc 4137 3127 mc 3138 V 4091 H 4137 3127 lc 4137 3127 mc 3115 V 4091 H 4137 3126 lc 4137 3126 mc 3143 V 4260(2.1)S 3242 V 4138 H 4138 3012 lc 4138 3012 mc 4138 H 4483 3012 lc 4483 3012 mc 4483 H 4483 3242 lc 4483 3242 mc 4483 H 4138 3242 lc 4138 3242 mc 3127 V 4483 H 4713 3127 lc 4713 3127 mc 3138 V 4667 H 4713 3127 lc 4713 3127 mc 3115 V 4667 H 4713 3126 lc 4713 3126 mc 3143 V 4836(2.2)S 3242 V 4714 H 4714 3012 lc 4714 3012 mc 4714 H 5059 3012 lc 5059 3012 mc 5059 H 5059 3242 lc 5059 3242 mc 5059 H 4714 3242 lc 4714 3242 mc 3127 V 5059 H 5082 3127 lc 5082 3127 mc 5111 H 5134 3127 lc 5134 3127 mc 5163 H 5186 3127 lc 5186 3127 mc 5215 H 5238 3127 lc 5238 3127 mc 5266 H 5289 3127 lc 5289 3127 mc 3138 V 5243 H 5289 3127 lc 5289 3127 mc 3115 V 5243 H 5289 3126 lc 5289 3126 mc 3422 V 10 R 2319(Figure)S 2610(2.)S 2745(A)S 2847(slender)S 3165(revision)S 3517(tree.)S 3602 V 970(Now)S 1194(imagine)S 1547(a)S 1622(customer)S 2019(requesting)S 2466(a)S 2541(\256x)S 2678(of)S 2792(a)S 2867(problem)S 3231(in)S 3340(revision)S 3693(1.3,)S 3874(although)S 4255(actual)S 4524(development)S 3782 V 970(has)S 1135(moved)S 1439(on)S 1571(to)S 1681(release)S 1989(2.)S 2126(RCS)S 2347(does)S 2561(not)S 2720(permit)S 3012(an)S 3137(extra)S 3367(revision)S 3720(to)S 3829(be)S 3954(spliced)S 4268(in)S 4377(between)S 4740(1.3)S 4896(and)S 3962 V 970(2.1,)S 1151(since)S 1387(that)S 1568(would)S 1849(not)S 2008(re\257ect)S 2288(the)S 2441(actual)S 2710(development)S 3257(history.)S 3621(Instead,)S 3966(create)S 4235(a)S 4311(branch)S 4614(at)S 4718(revision)S 4142 V 970(1.3,)S 1155(and)S 1334(check)S 1601(in)S 1714(the)S 1871(\256x)S 2012(on)S 2147(that)S 2332(branch.)S 2692(The)S 2881(\256rst)S 3071(branch)S 3376(starting)S 3710(at)S 3816(1.3)S 3975(has)S 4142(number)S 4481(1.3.1,)S 4740(and)S 4918(the)S 4322 V 970(revisions)S 1374(on)S 1517(that)S 1710(branch)S 2024(are)S 2188(numbered)S 2630(1.3.1.1,)S 2974(1.3.1.2,)S 3318(etc.)S 3533(The)S 3732(double)S 4048(numbering)S 4525(is)S 4636(needed)S 4962(to)S 4502 V 970(allow)S 1235(for)S 1394(another)S 1736(branch)S 2050(at)S 2165(1.3,)S 2358(say)S 2534(1.3.2.)S 2832(Revisions)S 3270(on)S 3413(the)S 3578(second)S 3898(branch)S 4212(would)S 4505(be)S 4641(numbered)S 4682 V 970(1.3.2.1,)S 1300(1.3.2.2,)S 1630(and)S 1804(so)S 1923(on.)S 2108(The)S 2293(following)S 2712(steps)S 2942(create)S 3209(branch)S 3510(1.3.1)S 3740(and)S 3914(add)S 4088(revision)S 4440(1.3.1.1:)S 4862 V 10 I 1270(co)S 1424(\261r1.3)S 1698(f.c)S 2028(\320)S 2147(check)S 2403(out)S 2561(revision)S 2913(1.3)S 4982 V 1270(edit)S 1480(f.c)S 2028(\320)S 2147(change)S 2465(it)S 5102 V 1270(ci)S 1402(\261r1.3.1)S 1751(f.c)S 2028(\320)S 2147(check)S 2403(it)S 2489(in)S 2597(on)S 2727(branch)S 3040(1.3.1)S 5342 V 10 R 970(This)S 1184(sequence)S 1585(of)S 1704(commands)S 2173(transforms)S 2636(the)S 2794(tree)S 2979(of)S 3098(Figure)S 3395(2)S 3481(into)S 3673(the)S 3831(one)S 4011(in)S 4126(Figure)S 4424(3.)S 4566(Note)S 4797(that)S 4984(it)S 5522 V 970(may)S 1179(be)S 1310(necessary)S 1734(to)S 1849(incorporate)S 2340(the)S 2499(di)S 2577 H (f)show 10 -.5 mul h (f)show 10 R 2638(erences)S 2973(between)S 3342(1.3)S 3504(and)S 3685(1.3.1.1)S 3997(into)S 4189(a)S 4269(revision)S 4627(at)S 4735(level)S 4965(2.)S 5702 V 970(The)S 1155(operation)S 10 I 1562(rcsmerge)S 10 R 1963(automates)S 2398(this)S 2573(process)S 2902(\(see)S 3092(the)S 3244(Appendix\).)S 6013 V 8 R 2532(1.1)S 6112 V 2410 H 2410 5882 lc 2410 5882 mc 2410 H 2755 5882 lc 2755 5882 mc 2755 H 2755 6112 lc 2755 6112 mc 2755 H 2410 6112 lc 2410 6112 mc 5997 V 2755 H 2985 5997 lc 2985 5997 mc 6008 V 2939 H 2985 5997 lc 2985 5997 mc 5985 V 2939 H 2985 5996 lc 2985 5996 mc 6013 V 3108(1.2)S 6112 V 2986 H 2986 5882 lc 2986 5882 mc 2986 H 3331 5882 lc 3331 5882 mc 3331 H 3331 6112 lc 3331 6112 mc 3331 H 2986 6112 lc 2986 6112 mc 5997 V 3331 H 3561 5997 lc 3561 5997 mc 6008 V 3515 H 3561 5997 lc 3561 5997 mc 5985 V 3515 H 3561 5996 lc 3561 5996 mc 6013 V 3684(1.3)S 6112 V 3562 H 3562 5882 lc 3562 5882 mc 3562 H 3907 5882 lc 3907 5882 mc 3907 H 3907 6112 lc 3907 6112 mc 3907 H 3562 6112 lc 3562 6112 mc 5997 V 3907 H 4137 5997 lc 4137 5997 mc 6008 V 4091 H 4137 5997 lc 4137 5997 mc 5985 V 4091 H 4137 5996 lc 4137 5996 mc 6013 V 4260(2.1)S 6112 V 4138 H 4138 5882 lc 4138 5882 mc 4138 H 4483 5882 lc 4483 5882 mc 4483 H 4483 6112 lc 4483 6112 mc 4483 H 4138 6112 lc 4138 6112 mc 5997 V 4483 H 4713 5997 lc 4713 5997 mc 6008 V 4667 H 4713 5997 lc 4713 5997 mc 5985 V 4667 H 4713 5996 lc 4713 5996 mc 6013 V 4836(2.2)S 6112 V 4714 H 4714 5882 lc 4714 5882 mc 4714 H 5059 5882 lc 5059 5882 mc 5059 H 5059 6112 lc 5059 6112 mc 5059 H 4714 6112 lc 4714 6112 mc 5997 V 5059 H 5082 5997 lc 5082 5997 mc 5111 H 5134 5997 lc 5134 5997 mc 5163 H 5186 5997 lc 5186 5997 mc 5215 H 5238 5997 lc 5238 5997 mc 5266 H 5289 5997 lc 5289 5997 mc 6008 V 5243 H 5289 5997 lc 5289 5997 mc 5985 V 5243 H 5289 5996 lc 5289 5996 mc 6474 V 4200(1.3.1.1)S 6573 V 4138 H 4138 6343 lc 4138 6343 mc 6342 V 4138 H 4483 6342 lc 4483 6342 mc 4483 H 4483 6572 lc 4483 6572 mc 6573 V 4483 H 4138 6573 lc 4138 6573 mc 6458 V 4483 H 4506 6458 lc 4506 6458 mc 4535 H 4558 6458 lc 4558 6458 mc 4587 H 4610 6458 lc 4610 6458 mc 4639 H 4662 6458 lc 4662 6458 mc 4690 H 4713 6458 lc 4713 6458 mc 6469 V 4667 H 4713 6458 lc 4713 6458 mc 6446 V 4667 H 4713 6457 lc 4713 6457 mc 6112 V 3734 H 4137 6457 lc 4137 6457 mc 6436 V 4095 H 4137 6457 lc 4137 6457 mc 6419 V 4110 H 4137 6457 lc 4137 6457 mc 6753 V 10 R 2053(Figure)S 2344(3.)S 2479(A)S 2581(revision)S 2933(tree)S 3112(with)S 3320(one)S 3494(side)S 3685(branch)S 7149 V 10 I 720(Distributed)S 1206(development)S 1740(and)S 1920(customer)S 2316(modifications)S 7329 V 10 R 970(Assume)S 1337(a)S 1426(situation)S 1816(as)S 1944(in)S 2067(Figure)S 2373(2,)S 2493(where)S 2781(revision)S 3148(1.3)S 3319(is)S 3432(in)S 3556(operation)S 3979(at)S 4097(several)S 4425(customer)S 4837(sites,)S 7920 V EP %%Page: 6 7 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2792(- 6 -)S 900 V 970(while)S 1223(release)S 1530(2)S 1611(is)S 1709(in)S 1818(development.)S 2420(Customer)S 2840(sites)S 3049(should)S 3347(use)S 3510(RCS)S 3730(to)S 3838(store)S 4062(the)S 4214(distributed)S 4672(software.)S 1080 V 970(However,)S 1413(customer)S 1832(modi\256cations)S 2430(should)S 2750(not)S 2931(be)S 3078(placed)S 3391(on)S 3544(the)S 3719(same)S 3977(branch)S 4301(as)S 4437(the)S 4612(distributed)S 1260 V 970(source;)S 1309(instead,)S 1668(they)S 1891(should)S 2209(be)S 2354(placed)S 2665(on)S 2816(a)S 2911(side)S 3123(branch.)S 3500(When)S 3789(the)S 3962(next)S 4185(software)S 4578(distribution)S 1440 V 970(arrives,)S 1303(it)S 1396(should)S 1700(be)S 1831(appended)S 2250(to)S 2365(the)S 2524(trunk)S 2772(of)S 2892(the)S 3051(customer's)S 3527(RCS)S 3755(\256le,)S 3946(and)S 4128(the)S 4288(customer)S 4692(can)S 4868(then)S 1620 V 970(merge)S 1254(the)S 1411(local)S 1640(modi\256cations)S 2220(back)S 2443(into)S 2634(the)S 2791(new)S 2992(release.)S 3358(In)S 3475(the)S 3631(above)S 3903(example,)S 4300(a)S 4378(customer's)S 4850(RCS)S 1800 V 970(\256le)S 1134(would)S 1421(contain)S 1752(the)S 1911(following)S 2337(tree,)S 2548(assuming)S 2963(that)S 3150(the)S 3309(customer)S 3712(has)S 3882(received)S 4256(revision)S 4615(1.3,)S 4802(added)S 1980 V 970(his)S 1124(local)S 1355(modi\256cations)S 1937(as)S 2057(revision)S 2416(1.3.1.1,)S 2753(then)S 2962(received)S 3336(revision)S 3695(2.4,)S 3882(and)S 4063(merged)S 4399(2.4)S 4560(and)S 4740(1.3.1.1,)S 2160 V 970(resulting)S 1350(in)S 1458(2.4.1.1.)S 2471 V 8 R 2532(1.3)S 2570 V 2410 H 2410 2340 lc 2410 2340 mc 2410 H 2755 2340 lc 2755 2340 mc 2755 H 2755 2570 lc 2755 2570 mc 2755 H 2410 2570 lc 2410 2570 mc 2471 V 4260(2.4)S 2570 V 4138 H 4138 2340 lc 4138 2340 mc 4138 H 4483 2340 lc 4483 2340 mc 4483 H 4483 2570 lc 4483 2570 mc 4483 H 4138 2570 lc 4138 2570 mc 2455 V 2755 H 4137 2455 lc 4137 2455 mc 2466 V 4091 H 4137 2455 lc 4137 2455 mc 2443 V 4091 H 4137 2454 lc 4137 2454 mc 2932 V 3048(1.3.1.1)S 3031 V 2986 H 2986 2801 lc 2986 2801 mc 2800 V 2986 H 3331 2800 lc 3331 2800 mc 3331 H 3331 3030 lc 3331 3030 mc 3031 V 3331 H 2986 3031 lc 2986 3031 mc 2570 V 2582 H 2985 2915 lc 2985 2915 mc 2894 V 2943 H 2985 2915 lc 2985 2915 mc 2877 V 2958 H 2985 2915 lc 2985 2915 mc 2932 V 4776(2.4.1.1)S 3031 V 4714 H 4714 2801 lc 4714 2801 mc 2800 V 4714 H 5059 2800 lc 5059 2800 mc 5059 H 5059 3030 lc 5059 3030 mc 3031 V 5059 H 4714 3031 lc 4714 3031 mc 2570 V 4310 H 4713 2915 lc 4713 2915 mc 2894 V 4671 H 4713 2915 lc 4713 2915 mc 2877 V 4686 H 4713 2915 lc 4713 2915 mc 3211 V 10 R 1740(Figure)S 2031(4.)S 2166(A)S 2268(customer's)S 2736(revision)S 3088(tree)S 3267(with)S 3475(local)S 3699(modi\256cations.)S 3571 V 970(This)S 1178(approach)S 1573(is)S 1670(actually)S 2016(practiced)S 2411(in)S 2519(the)S 2671(CSNET)S 3018(project,)S 3350(where)S 3623(several)S 3935(universities)S 4426(and)S 4600(a)S 4674(company)S 3751 V 970(cooperate)S 1387(in)S 1495(developing)S 1969(a)S 2043(national)S 2395(computer)S 2802(network.)S 3967 V 10 I 720(Parallel)S 1078(development)S 4147 V 10 R 970(Sometimes)S 1451(it)S 1543(is)S 1646(desirable)S 2042(to)S 2156(explore)S 2491(an)S 2621(alternate)S 3000(design)S 3297(or)S 3416(a)S 3497(di)S 3575 H (f)show 10 -.5 mul h (f)show 10 R 3636(erent)S 3872(implementation)S 4537(technique)S 4962(in)S 4327 V 970(parallel)S 1301(with)S 1511(the)S 1665(main)S 1896(line)S 2077(development.)S 2679(Such)S 2910(development)S 3457(should)S 3755(be)S 3880(carried)S 4187(out)S 4346(on)S 4477(a)S 4552(side)S 4744(branch.)S 4507 V 970(The)S 1155(experimental)S 1706(changes)S 2057(may)S 2259(later)S 2466(be)S 2590(moved)S 2892(into)S 3078(the)S 3230(main)S 3460(line,)S 3665(or)S 3778(abandoned.)S 4723 V 10 I 720(Conflicting)S 1201(updates)S 4903 V 10 R 970(A)S 1075(common)S 1458(occurrence)S 1927(is)S 2027(that)S 2210(one)S 2387(programmer)S 2913(has)S 3079(checked)S 3438(out)S 3599(a)S 3676(revision,)S 4056(but)S 4218(cannot)S 4518(complete)S 4918(the)S 5083 V 970(assignment)S 1459(for)S 1614(some)S 1864(reason.)S 2218(In)S 2340(the)S 2501(meantime,)S 2959(another)S 3297(person)S 3602(must)S 3836(perform)S 4196(another)S 4534(modi\256cation)S 5263 V 970(immediately.)S 1565(In)S 1689(that)S 1880(case,)S 2117(the)S 2280(second)S 2598(person)S 2905(should)S 3213(check-out)S 3647(the)S 3810(same)S 4056(revision,)S 4444(modify)S 4774(it,)S 4896(and)S 5443 V 970(check)S 1232(it)S 1318(in)S 1426(on)S 1556(a)S 1630(side)S 1821(branch,)S 2147(for)S 2293(later)S 2500(merging.)S 5659 V 970(Every)S 1238(node)S 1462(in)S 1570(a)S 1644(revision)S 1996(tree)S 2175(consists)S 2522(of)S 2635(the)S 2787(following)S 3206(attributes:)S 3636(a)S 3711(revision)S 4064(number,)S 4425(a)S 4500(check-in)S 4874(date)S 5839 V 720(and)S 896(time,)S 1131(the)S 1285(author's)S 1644(identi\256cation,)S 2229(a)S 2305(log)S 2465(entry,)S 2727(a)S 2803(state)S 3018(and)S 3194(the)S 3348(actual)S 3618(text.)S 3855(All)S 4015(these)S 4252(attributes)S 4656(are)S 4808(deter-)S 6019 V 720(mined)S 1000(at)S 1102(the)S 1254(time)S 1462(the)S 1614(revision)S 1966(is)S 2063(checked)S 2419(in.)S 2582(The)S 2767(state)S 2980(attribute)S 3344(indicates)S 3730(the)S 3883(status)S 4142(of)S 4256(a)S 4331(revision.)S 4739(It)S 4831(is)S 4929(set)S 6199 V 720(automatically)S 1299(to)S 1412(`experimental')S 2034(during)S 2330(check-in.)S 2763(A)S 2870(revision)S 3227(can)S 3400(later)S 3612(be)S 3741(promoted)S 4158(to)S 4270(a)S 4348(higher)S 4637(status,)S 4924(for)S 6379 V 720(example)S 1088(`stable')S 1417(or)S 1530(`released'.)S 2007(The)S 2192(set)S 2333(of)S 2446(states)S 2698(is)S 2795(user-de\256ned.)S 6739 V 10 B 720(3.2.)S 930(Revisions)S 1366(are)S 1534(represented)S 2068(as)S 2187(deltas)S 6955 V 10 R 970(For)S 1145(conserving)S 1619(space,)S 1901(RCS)S 2127(stores)S 2396(revisions)S 2793(in)S 2907(the)S 3065(form)S 3295(of)S 3414(deltas,)S 3708(i.e.,)S 3891(as)S 4010(di)S 4088 H (f)show 10 -.5 mul h (f)show 10 R 4149(erences)S 4483(between)S 4852(revi-)S 7135 V 720(sions.)S 1011(The)S 1196(user)S 1392(interface)S 1770(completely)S 2244(hides)S 2485(this)S 2660(fact.)S 7920 V EP %%Page: 7 8 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2792(- 7 -)S 900 V 970(A)S 1096(delta)S 1344(is)S 1465(a)S 1563(sequence)S 1982(of)S 2119(edit)S 2323(commands)S 2810(that)S 3014(transforms)S 3495(one)S 3694(string)S 3977(into)S 4188(another.)S 4597(The)S 4807(deltas)S 1080 V 720(employed)S 1156(by)S 1298(RCS)S 1529(are)S 1691(line-based,)S 2167(which)S 2452(means)S 2748(that)S 2939(the)S 3102(only)S 3321(edit)S 3512(commands)S 3986(allowed)S 4343(are)S 4505(insertion)S 4896(and)S 1260 V 720(deletion)S 1091(of)S 1223(lines.)S 1516(If)S 1631(a)S 1724(single)S 2012(character)S 2425(in)S 2552(a)S 2646(line)S 2846(is)S 2963(changed,)S 3370(the)S 3542(edit)S 3742(scripts)S 4053(consider)S 4441(the)S 4613(entire)S 4890(line)S 1440 V 720(changed.)S 1145(The)S 1337(program)S 10 I 1712(diff)S 1390 V 10 R 1846(2)S 1440 V 1933(produces)S 2330(a)S 2411(small,)S 2690(line-based)S 3137(delta)S 3368(between)S 3737(pairs)S 3968(of)S 4088(text)S 4275(\256les.)S 4534(A)S 4643(character-)S 1620 V 720(based)S 977(edit)S 1157(script)S 1409(would)S 1689(take)S 1885(much)S 2137(longer)S 2422(to)S 2530(compute,)S 2929(and)S 3103(would)S 3383(not)S 3541(be)S 3665(signi\256cantly)S 4190(shorter.)S 1836 V 970(Using)S 1259(deltas)S 1542(is)S 1659(a)S 1753(classical)S 2141(space-time)S 2623(tradeo)S 2872 H (f)show 10 -.5 mul h (f)show 10 R 2933(:)S 3011(deltas)S 3294(reduce)S 3609(the)S 3782(space)S 4054(consumed,)S 4535(but)S 4714(increase)S 2016 V 720(access)S 1012(time.)S 1283(However,)S 1711(a)S 1793(version)S 2124(control)S 2444(tool)S 2637(should)S 2941(impose)S 3267(as)S 3387(little)S 3608(delay)S 3861(as)S 3981(possible)S 4346(on)S 4483(programmers.)S 2196 V 720(Excessive)S 1163(delays)S 1462(discourage)S 1938(the)S 2104(use)S 2281(of)S 2408(version)S 2746(controls,)S 3137(or)S 3264(induce)S 3574(programmers)S 4150(to)S 4273(take)S 4484(shortcuts)S 4890(that)S 2376 V 720(compromise)S 1252(system)S 1568(integrity.)S 2000(To)S 2149(gain)S 2359(reasonably)S 2829(fast)S 3011(access)S 3303(time)S 3518(for)S 3671(both)S 3886(editing)S 4201(and)S 4382(compiling,)S 4850(RCS)S 2556 V 720(arranges)S 1096(deltas)S 1368(in)S 1485(the)S 1646(following)S 2074(way.)S 2334(The)S 2528(most)S 2762(recent)S 3044(revision)S 3406(on)S 3546(the)S 3708(trunk)S 3959(is)S 4066(stored)S 4350(intact.)S 4667(All)S 4835(other)S 2736 V 720(revisions)S 1117(on)S 1253(the)S 1411(trunk)S 1658(are)S 1815(stored)S 2095(as)S 2214(reverse)S 2537(deltas.)S 2861(A)S 2969(reverse)S 3292(delta)S 3522(describes)S 3928(how)S 4135(to)S 4248(go)S 4383(backward)S 4805(in)S 4918(the)S 2916 V 720(development)S 1277(history:)S 1624(it)S 1721(produces)S 2122(the)S 2285(desired)S 2615(revision)S 2979(if)S 3082(applied)S 3418(to)S 3538(the)S 3702(successor)S 4126(of)S 4251(that)S 4443(revision.)S 4862(This)S 3096 V 720(implementation)S 1379(has)S 1543(the)S 1696(advantage)S 2131(that)S 2311(extraction)S 2740(of)S 2853(the)S 3005(latest)S 3246(revision)S 3598(is)S 3695(a)S 3769(simple)S 4066(and)S 4240(fast)S 4414(copy)S 4638(operation.)S 3276 V 720(Adding)S 1051(a)S 1126(new)S 1324(revision)S 1678(to)S 1788(the)S 1942(trunk)S 2185(is)S 2284(also)S 2477(fast:)S 10 I 2681(ci)S 10 R 2785(simply)S 3090(adds)S 3305(the)S 3459(new)S 3657(revision)S 4011(intact,)S 4290(replaces)S 4648(the)S 4802(previ-)S 3456 V 720(ous)S 895(revision)S 1253(with)S 1467(a)S 1546(reverse)S 1868(delta,)S 2122(and)S 2301(keeps)S 2563(the)S 2720(rest)S 2899(of)S 3017(the)S 3174(old)S 3337(deltas.)S 3660(Thus,)S 10 I 3920(ci)S 10 R 4027(requires)S 4383(the)S 4540(computation)S 3636 V 720(of)S 833(only)S 1041(one)S 1215(new)S 1411(delta.)S 3852 V 970(Branches)S 1373(need)S 1593(special)S 1902(treatment.)S 2366(The)S 2553(naive)S 2801(solution)S 3156(would)S 3439(be)S 3566(to)S 3677(store)S 3904(complete)S 4303(copies)S 4591(for)S 4740(the)S 4895(tips)S 4032 V 720(of)S 836(all)S 969(branches.)S 1411(Clearly,)S 1762(this)S 1939(approach)S 2336(would)S 2618(cost)S 2811(too)S 2971(much)S 3225(space.)S 3533(Instead,)S 3878(RCS)S 4100(uses)S 10 I 4304(forward)S 10 R 4659(deltas)S 4924(for)S 4212 V 720(branches.)S 1163(Regenerating)S 1729(a)S 1807(revision)S 2163(on)S 2297(a)S 2375(side)S 2570(branch)S 2875(proceeds)S 3263(as)S 3380(follows.)S 3769(First,)S 4012(extract)S 4317(the)S 4473(latest)S 4718(revision)S 4392 V 720(on)S 864(the)S 1030(trunk;)S 1313(secondly,)S 1737(apply)S 2003(reverse)S 2334(deltas)S 2611(until)S 2839(the)S 3005(fork)S 3215(revision)S 3581(for)S 3741(the)S 3907(branch)S 4222(is)S 4333(obtained;)S 4748(thirdly,)S 4572 V 720(apply)S 974(forward)S 1321(deltas)S 1586(until)S 1802(the)S 1956(desired)S 2277(branch)S 2581(revision)S 2936(is)S 3036(reached.)S 3433(Figure)S 3727(5)S 3810(illustrates)S 4232(a)S 4309(tree)S 4491(with)S 4702(one)S 4879(side)S 4752 V 720(branch.)S 1076(Triangles)S 1483(pointing)S 1847(to)S 1955(the)S 2107(left)S 2270(and)S 2444(right)S 2663(represent)S 3058(reverse)S 3375(and)S 3549(forward)S 3894(deltas,)S 4182(respectively.)S 5130 V 8 R 2273(1.1)S 5114 V 2463 H 2463 4932 lc 2463 4932 mc 2463 H 2160 5114 lc 2160 5114 mc 2160 H 2463 5296 lc 2463 5296 mc 5295 V 2463 H 2463 5113 lc 2463 5113 mc 5114 V 2463 H 2766 5114 lc 2766 5114 mc 5129 V 2705 H 2765 5114 lc 2765 5114 mc 5099 V 2705 H 2765 5114 lc 2765 5114 mc 5130 V 2880(1.2)S 5114 V 3069 H 3069 4932 lc 3069 4932 mc 3069 H 2766 5114 lc 2766 5114 mc 2766 H 3069 5296 lc 3069 5296 mc 5295 V 3069 H 3069 5113 lc 3069 5113 mc 5114 V 3069 H 3372 5114 lc 3372 5114 mc 5129 V 3312 H 3372 5114 lc 3372 5114 mc 5099 V 3312 H 3372 5114 lc 3372 5114 mc 5130 V 3486(1.3)S 5114 V 3675 H 3675 4932 lc 3675 4932 mc 3675 H 3372 5114 lc 3372 5114 mc 3372 H 3675 5296 lc 3675 5296 mc 5295 V 3675 H 3675 5113 lc 3675 5113 mc 5114 V 3675 H 3978 5114 lc 3978 5114 mc 5129 V 3918 H 3978 5114 lc 3978 5114 mc 5099 V 3918 H 3978 5114 lc 3978 5114 mc 5130 V 4092(2.1)S 5114 V 4281 H 4281 4932 lc 4281 4932 mc 4281 H 3978 5114 lc 3978 5114 mc 3978 H 4281 5296 lc 4281 5296 mc 5295 V 4281 H 4281 5113 lc 4281 5113 mc 5114 V 4281 H 4584 5114 lc 4584 5114 mc 5129 V 4524 H 4584 5114 lc 4584 5114 mc 5099 V 4524 H 4584 5114 lc 4584 5114 mc 5130 V 4762(2.2)S 5265 V 4584 H 4584 4962 lc 4584 4962 mc 4584 H 5039 4962 lc 5039 4962 mc 5040 H 5040 5265 lc 5040 5265 mc 5040 H 4585 5265 lc 4585 5265 mc 5796 V 4008(1.3.1.1)S 5780 V 4281 H 3978 5962 lc 3978 5962 mc 5963 V 3978 H 3978 5600 lc 3978 5600 mc 5598 V 3978 H 4281 5780 lc 4281 5780 mc 5295 V 3675 H 3978 5780 lc 3978 5780 mc 5737 V 3934 H 3978 5780 lc 3978 5780 mc 5721 V 3960 H 3979 5780 lc 3979 5780 mc 4281 H 4584 5780 lc 4584 5780 mc 5796 V 4524 H 4584 5781 lc 4584 5781 mc 5765 V 4524 H 4584 5780 lc 4584 5780 mc 5796 V 4614(1.3.1.2)S 5780 V 4888 H 4585 5962 lc 4585 5962 mc 5963 V 4584 H 4584 5600 lc 4584 5600 mc 5598 V 4584 H 4887 5780 lc 4887 5780 mc 6143 V 10 R 1699(Figure)S 1990(5.)S 2125(A)S 2227(revision)S 2579(tree)S 2758(with)S 2966(reverse)S 3283(and)S 3457(forward)S 3802(deltas.)S 6359 V 970(Although)S 1382(implementing)S 1972(fast)S 2150(check-out)S 2577(for)S 2727(the)S 2884(latest)S 3130(trunk)S 3376(revision,)S 3758(this)S 3938(arrangement)S 4471(has)S 4639(the)S 4796(disad-)S 6539 V 720(vantage)S 1071(that)S 1262(generation)S 1724(of)S 1848(other)S 2093(revisions)S 2494(takes)S 2739(time)S 2957(proportional)S 3491(to)S 3609(the)S 3771(number)S 4116(of)S 4239(deltas)S 4512(applied.)S 4901(For)S 6719 V 720(example,)S 1121(regenerating)S 1657(the)S 1817(branch)S 2126(tip)S 2270(in)S 2386(Figure)S 2685(5)S 2773(requires)S 3132(application)S 3614(of)S 3735(\256ve)S 3923(deltas)S 4195(\(including)S 4645(the)S 4806(initial)S 6899 V 720(one\).)S 983(Since)S 1236(usage)S 1494(statistics)S 1870(show)S 2112(that)S 2293(the)S 2446(latest)S 2688(trunk)S 2930(revision)S 3282(is)S 3379(the)S 3531(one)S 3705(that)S 3885(is)S 3982(retrieved)S 4366(in)S 4474(95)S 4604(per)S 4761(cent)S 4957(of)S 7079 V 720(all)S 859(cases)S 1108(\(see)S 1307(the)S 1468(section)S 1790(on)S 1929(usage)S 2195(statistics\),)S 2638(biasing)S 2967(check-out)S 3400(time)S 3618(in)S 3736(favor)S 3986(of)S 4109(that)S 4299(revision)S 4661(results)S 4962(in)S 7259 V 720(signi\256cant)S 1186(savings.)S 1590(However,)S 2029(careful)S 2354(implementation)S 3030(of)S 3161(the)S 3331(delta)S 3573(application)S 4065(process)S 4412(is)S 4527(necessary)S 4962(to)S 7920 V EP %%Page: 8 9 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2792(- 8 -)S 900 V 720(provide)S 1055(low)S 1235(retrieval)S 1597(overhead)S 1992(for)S 2138(other)S 2373(revisions,)S 2789(in)S 2897(particular)S 3309(for)S 3455(branch)S 3756(tips.)S 1116 V 970(There)S 1233(are)S 1386(several)S 1700(techniques)S 2159(for)S 2307(delta)S 2533(application.)S 3064(The)S 3251(naive)S 3499(one)S 3675(is)S 3774(to)S 3884(pass)S 4088(each)S 4302(delta)S 4528(to)S 4638(a)S 4714(general-)S 1296 V 720(purpose)S 1077(text)S 1267(editor.)S 1595(A)S 1707(prototype)S 2130(of)S 2253(RCS)S 2483(invoked)S 2845(the)S 3007(UNIX)S 3296(editor)S 10 I 3569(ed)S 10 R 3703(both)S 3921(for)S 4077(applying)S 4467(deltas)S 4740(and)S 4924(for)S 1476 V 720(expanding)S 1172(the)S 1330(identi\256cation)S 1894(markers.)S 2306(Although)S 2720(easy)S 2934(to)S 3049(implement,)S 3539(performance)S 4079(was)S 4271(poor,)S 4516(owing)S 4803(to)S 4918(the)S 1656 V 720(high)S 934(start-up)S 1275(costs)S 1511(and)S 1691(excess)S 1987(generality)S 2422(of)S 10 I 2541(ed)S 10 R 2635(.)S 2726(An)S 2884(intermediate)S 3419(version)S 3749(of)S 3867(RCS)S 4092(used)S 4310(a)S 4389(special-purpose,)S 1836 V 720(stream-oriented)S 1376(editor.)S 1694(This)S 1902(technique)S 2320(reduced)S 2665(the)S 2817(cost)S 3008(of)S 3121(applying)S 3501(a)S 3575(delta)S 3800(to)S 3909(the)S 4062(cost)S 4254(of)S 4368(checking)S 4759(out)S 4918(the)S 2016 V 720(latest)S 965(trunk)S 1210(revision.)S 1621(The)S 1810(reason)S 2104(for)S 2254(this)S 2433(behavior)S 2816(is)S 2917(that)S 3101(each)S 3316(delta)S 3543(application)S 4020(involves)S 4392(a)S 4469(complete)S 4868(pass)S 2196 V 720(over)S 927(the)S 1079(preceding)S 1502(revision.)S 2412 V 970(However,)S 1395(there)S 1629(is)S 1731(a)S 1810(much)S 2068(better)S 2331(algorithm.)S 2811(Note)S 3041(that)S 3227(the)S 3385(deltas)S 3654(are)S 3811(line)S 3997(oriented)S 4360(and)S 4540(that)S 4726(most)S 4957(of)S 2592 V 720(the)S 884(work)S 1131(of)S 1256(a)S 1342(stream)S 1650(editor)S 1925(involves)S 2306(copying)S 2670(unchanged)S 3143(lines)S 3373(from)S 3608(one)S 3793(revision)S 4156(to)S 4275(the)S 4438(next.)S 4706(A)S 4819(faster)S 2772 V 720(algorithm)S 1141(avoids)S 1434(unnecessary)S 1953(copying)S 2307(of)S 2423(character)S 2820(strings)S 3120(by)S 3253(using)S 3503(a)S 10 I 3580(piece)S 3823(table)S 10 R 4023(.)S 4111(A)S 4216(piece)S 4459(table)S 4686(is)S 4786(a)S 4863(one-)S 2952 V 720(dimensional)S 1245(array,)S 1509(specifying)S 1960(how)S 2167(a)S 2246(given)S 2503(revision)S 2860(is)S 2962(`pieced)S 3290(together')S 3685(from)S 3914(lines)S 4138(in)S 4251(the)S 4408(RCS)S 4633(\256le.)S 4851(Sup-)S 3132 V 720(pose)S 935(piece)S 1177(table)S 10 I 1403(PT)S 3182 V 1520(r)S 3132 V 10 R 1591(represents)S 2027(revision)S 10 I 2381(r)S 10 R 2420(.)S 2507(Then)S 10 I 2744(PT)S 3182 V 2861(r)S 3132 V 2900([i])S 10 R 3038(contains)S 3403(the)S 3557(starting)S 3889(position)S 4244(of)S 4359(line)S 10 I 4541(i)S 10 R 4602(of)S 4718(revision)S 3312 V 10 I 720(r)S 10 R 759(.)S 848(Application)S 1354(of)S 1471(the)S 1627(next)S 1833(delta)S 2061(transforms)S 2522(piece)S 2766(table)S 10 I 2994(PT)S 3362 V 3111(r)S 3312 V 10 R 3184(into)S 10 I 3374(PT)S 3362 V 3491(r+1)S 3312 V 10 R 3648(.)S 3737(For)S 3910(instance,)S 4296(a)S 4374(delete)S 4646(command)S 3492 V 720(removes)S 1093(a)S 1173(series)S 1436(of)S 1555(entries)S 1857(from)S 2087(the)S 2245(piece)S 2491(table.)S 2776(An)S 2934(insertion)S 3320(command)S 3750(inserts)S 4047(new)S 4249(entries,)S 4576(moving)S 4918(the)S 3672 V 720(entries)S 1019(following)S 1441(the)S 1596(insertion)S 1979(point)S 2218(further)S 2522(down)S 2777(the)S 2932(array.)S 3224(The)S 3411(inserted)S 3759(entries)S 4057(point)S 4295(to)S 4405(the)S 4559(text)S 4741(lines)S 4962(in)S 3852 V 720(the)S 874(delta.)S 1155(Thus,)S 1412(no)S 1544(I/O)S 1709(is)S 1808(involved)S 2190(except)S 2483(for)S 2632(reading)S 2964(the)S 3119(delta)S 3346(itself.)S 3634(When)S 3905(all)S 4038(deltas)S 4304(have)S 4525(been)S 4746(applied)S 4032 V 720(to)S 834(the)S 992(piece)S 1238(table,)S 1493(a)S 1573(sequential)S 2014(pass)S 2222(through)S 2569(the)S 2726(table)S 2955(looks)S 3207(up)S 3342(each)S 3559(line)S 3744(in)S 3857(the)S 4014(RCS)S 4239(\256le)S 4402(and)S 4581(copies)S 4871(it)S 4962(to)S 4212 V 720(the)S 872(output)S 1158(\256le,)S 1341(updating)S 1721(identi\256cation)S 2279(markers)S 2630(at)S 2732(the)S 2884(same)S 3119(time.)S 3382(Of)S 3517(course,)S 3832(the)S 3984(RCS)S 4204(\256le)S 4362(must)S 4588(permit)S 4880(ran-)S 4392 V 720(dom)S 930(access,)S 1241(since)S 1478(the)S 1632(copied)S 1930(lines)S 2151(are)S 2304(scattered)S 2690(throughout)S 3161(that)S 3343(\256le.)S 3558(Figure)S 3851(6)S 3933(illustrates)S 4354(an)S 4480(RCS)S 4702(\256le)S 4862(with)S 4572 V 720(two)S 900(revisions)S 1291(and)S 1465(the)S 1617(corresponding)S 2218(piece)S 2458(tables.)S 5832 V 10 I 2363(Figure)S 2665(6)S 2745(is)S 2842(not)S 3000(available.)S 6912 V 10 R 2016(Figure)S 2307(6.)S 2442(An)S 2594(RCS)S 2814(\256le)S 2972(and)S 3146(its)S 3271(piece)S 3511(tables)S 7128 V 970(The)S 1157(piece)S 1399(table)S 1625(approach)S 2022(has)S 2187(the)S 2341(property)S 2711(that)S 2893(the)S 3047(time)S 3257(for)S 3405(applying)S 3788(a)S 3865(single)S 4137(delta)S 4364(is)S 4464(roughly)S 4808(deter-)S 7308 V 720(mined)S 1004(by)S 1138(the)S 1294(size)S 1483(of)S 1600(the)S 1756(delta,)S 2009(and)S 2187(not)S 2349(by)S 2483(the)S 2639(size)S 2828(of)S 2945(the)S 3101(revision.)S 3512(For)S 3685(example,)S 4082(if)S 4177(a)S 4254(delta)S 4481(is)S 4581(10)S 4714(per)S 4874(cent)S 7920 V EP %%Page: 9 10 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2792(- 9 -)S 900 V 720(of)S 840(the)S 999(size)S 1191(of)S 1311(a)S 1392(revision,)S 1776(then)S 1985(applying)S 2372(it)S 2466(takes)S 2709(only)S 2925(10)S 3063(per)S 3228(cent)S 3432(of)S 3553(the)S 3713(time)S 3929(to)S 4045(generate)S 4420(the)S 4580(latest)S 4829(trunk)S 1080 V 720(revision.)S 1127(\(The)S 1345(stream)S 1641(editor)S 1904(would)S 2184(take)S 2380(100)S 2560(per)S 2717(cent.\))S 1296 V 970(There)S 1233(is)S 1331(an)S 1456(important)S 1876(alternative)S 2328(for)S 2475(representing)S 2999(deltas)S 3263(that)S 3444(a)S 3488 H (f)show 10 -.5 mul h (f)show 10 R 3549(ects)S 3735(performance.)S 4324(SCCS)S 1246 V 4570(3)S 1296 V 4620(,)S 4677(a)S 4753(precur-)S 1476 V 720(sor)S 889(of)S 1019(RCS,)S 1281(uses)S 10 I 1499(interleaved)S 10 R 1994(deltas.)S 2328(A)S 2446(\256le)S 2620(containing)S 3088(interleaved)S 3577(deltas)S 3856(is)S 3969(partitioned)S 4448(into)S 4650(blocks)S 4957(of)S 1656 V 720(lines.)S 1009(Each)S 1253(block)S 1520(has)S 1698(a)S 1787(header)S 2097(that)S 2292(speci\256es)S 2681(to)S 2804(which)S 3093(revision\(s\))S 3565(the)S 3732(block)S 3999(belongs.)S 4411(The)S 4612(blocks)S 4919(are)S 1836 V 720(sorted)S 995(out)S 1154(in)S 1262(such)S 1475(a)S 1549(way)S 1745(that)S 1925(a)S 1999(single)S 2268(pass)S 2470(over)S 2677(the)S 2829(\256le)S 2987(can)S 3155(pick)S 3357(up)S 3487(all)S 3617(the)S 3769(lines)S 3988(belonging)S 4418(to)S 4526(a)S 4600(given)S 4852(revi-)S 2016 V 720(sion.)S 984(Thus,)S 1251(the)S 1415(regeneration)S 1955(time)S 2175(for)S 2333(all)S 2475(revisions)S 2878(is)S 2987(the)S 3151(same:)S 3426(all)S 3568(headers)S 3914(must)S 4151(be)S 4287(inspected,)S 4731(and)S 4918(the)S 2196 V 720(associated)S 1169(blocks)S 1469(either)S 1735(copied)S 2040(or)S 2162(skipped.)S 2567(As)S 2717(the)S 2878(number)S 3222(of)S 3344(revisions)S 3744(increases,)S 4172(the)S 4332(cost)S 4531(of)S 4652(retrieving)S 2376 V 720(any)S 896(revision)S 1251(is)S 1351(much)S 1606(higher)S 1894(than)S 2099(the)S 2254(cost)S 2448(of)S 2564(checking)S 2957(out)S 3118(the)S 3273(latest)S 3517(trunk)S 3761(revision)S 4116(with)S 4327(reverse)S 4647(deltas.)S 4968(A)S 2556 V 720(detailed)S 1071(comparison)S 1572(of)S 1690(SCCS's)S 2043(interleaved)S 2520(deltas)S 2787(and)S 2965(RCS's)S 3261(reverse)S 3582(deltas)S 3849(can)S 4021(be)S 4149(found)S 4416(in)S 4528(Reference)S 4965(4.)S 2736 V 720(This)S 952(reference)S 1375(considers)S 1806(the)S 1982(version)S 2330(of)S 2467(RCS)S 2711(with)S 2943(the)S 3119(stream)S 3440(editor)S 3728(only.)S 4016(The)S 4226(piece)S 4491(table)S 4740(method)S 2916 V 720(improves)S 1131(performance)S 1673(further,)S 2008(so)S 2135(that)S 2323(RCS)S 2551(is)S 2656(always)S 2971(faster)S 3230(than)S 3440(SCCS,)S 3749(except)S 4047(if)S 4146(10)S 4284(or)S 4405(more)S 4648(deltas)S 4919(are)S 3096 V 720(applied.)S 3312 V 970(Additional)S 1429(speed-up)S 1820(for)S 1967(both)S 2176(delta)S 2402(methods)S 2773(can)S 2943(be)S 3069(obtained)S 3445(by)S 3577(caching)S 3919(the)S 4073(most)S 4300(recently)S 4653(generated)S 3492 V 720(revision,)S 1101(as)S 1218(has)S 1385(been)S 1607(implemented)S 2163(in)S 2275(DSEE.)S 3442 V 2550(5)S 3492 V 2634(With)S 2868(caching,)S 3237(access)S 3525(time)S 3737(to)S 3849(frequently)S 4292(used)S 4508(revisions)S 4902(can)S 3672 V 720(approach)S 1115(normal)S 1428(\256le)S 1586(access)S 1870(time,)S 2103(at)S 2205(the)S 2357(cost)S 2548(of)S 2661(some)S 2902(additional)S 3332(space.)S 4032 V 10 B 720(4.)S 855(Locking:)S 1269(A)S 1371(Controversial)S 1989(Issue)S 4248 V 10 R 970(The)S 1169(locking)S 1513(mechanism)S 2012(for)S 2172(RCS)S 2406(was)S 2605(di)S 2683 H (f)show 10 -.5 mul h (\256)show 10 R 2767(cult)S 2961(to)S 3083(design.)S 3443(The)S 3643(problem)S 4021(and)S 4210(its)S 4350(solution)S 4718(are)S 4884(\256rst)S 4428 V 720(presented)S 1136(in)S 1248(their)S 1465(`pure')S 1742(form,)S 1995(followed)S 2384(by)S 2518(a)S 2596(discussion)S 3047(of)S 3163(the)S 3318(complications)S 3912(caused)S 4216(by)S 4349(`real-world')S 4863(con-)S 4608 V 720(siderations.)S 4824 V 970(RCS)S 1198(must)S 1431(prevent)S 1768(two)S 1956(or)S 2077(more)S 2320(persons)S 2663(from)S 2895(depositing)S 3350(competing)S 3810(changes)S 4169(of)S 4290(the)S 4450(same)S 4693(revision.)S 5004 V 720(Suppose)S 1104(two)S 1299(programmers)S 1875(check)S 2151(out)S 2323(revision)S 2689(2.4)S 2858(and)S 3046(modify)S 3379(it.)S 3534(Programmer)S 4077(A)S 4193(checks)S 4508(in)S 4630(a)S 4718(revision)S 5184 V 720(before)S 1010(programmer)S 1539(B.)S 1697(Unfortunately,)S 2318(programmer)S 2847(B)S 2950(has)S 3119(not)S 3284(seen)S 3498(A's)S 3679(changes,)S 4062(so)S 4188(the)S 4347(e)S 4391 H (f)show 10 -.5 mul h (f)show 10 R 4452(ect)S 4605(is)S 4709(that)S 4896(A's)S 5364 V 720(changes)S 1079(are)S 1238(covered)S 1591(up)S 1729(by)S 1867(B's)S 2044(deposit.)S 2426(A's)S 2608(changes)S 2967(are)S 3126(not)S 3292(lost)S 3475(since)S 3718(all)S 3856(revisions)S 4255(are)S 4414(saved,)S 4703(but)S 4868(they)S 5544 V 720(are)S 871(con\256ned)S 1245(to)S 1353(a)S 1427(single)S 1696(revision.\263)S 5760 V 970(This)S 1191(con\257ict)S 1534(is)S 1644(prevented)S 2080(in)S 2201(RCS)S 2434(by)S 2577(locking.)S 2975(Whenever)S 3427(someone)S 3825(intends)S 4157(to)S 4278(edit)S 4471(a)S 4558(revision)S 4924(\(as)S 5940 V 720(opposed)S 1083(to)S 1191(reading)S 1520(or)S 1633(compiling)S 2069(it\),)S 2213(the)S 2365(revision)S 2717(should)S 3014(be)S 3138(checked)S 3494(out)S 3652(and)S 3826(locked,)S 4147(using)S 4394(the)S 10 I 4546(\261l)S 10 R 4654(option)S 4940(on)S 6120 V 10 I 720(co)S 10 R 814(.)S 908(On)S 1069(subsequent)S 1552(check-in,)S 10 I 1959(ci)S 10 R 2070(tests)S 2287(the)S 2448(lock)S 2659(and)S 2842(then)S 3053(removes)S 3430(it.)S 3580(At)S 3719(most)S 3953(one)S 4136(programmer)S 4668(at)S 4779(a)S 4862(time)S 6300 V 720(may)S 932(lock)S 1144(a)S 1228(particular)S 1650(revision,)S 2037(and)S 2221(only)S 2439(this)S 2624(programmer)S 3157(may)S 3368(check)S 3639(in)S 3756(the)S 3917(succeeding)S 4399(revision.)S 4815(Thus,)S 6480 V 720(while)S 972(a)S 1046(revision)S 1398(is)S 1495(locked,)S 1816(it)S 1902(is)S 1999(the)S 2151(exclusive)S 2558(responsibility)S 3133(of)S 3246(the)S 3398(locker.)S 6702 V 8 Y1 720(333333333333333333)S 6820 V 8 R 820(\263)S 900(Note)S 1088(that)S 1240(this)S 1388(problem)S 1686(is)S 1773(entirely)S 2049(di)S 2111 H (f)show 8 -.5 mul h (f)show 8 R 2160(erent)S 2352(from)S 2540(the)S 2671(atomicity)S 3005(problem.)S 3348(Atomicity)S 3705(means)S 3942(that)S 4095(concurrent)S 4468(update)S 6920 V 720(operations)S 1082(on)S 1193(the)S 1321(same)S 1515(RCS)S 1698(\256le)S 1830(cannot)S 2072(be)S 2177(permitted,)S 2531(because)S 2812(that)S 2961(may)S 3128(result)S 3334(in)S 3426(inconsistent)S 3836(data.)S 4042(Atomic)S 4311(updates)S 4584(are)S 7020 V 720(essential)S 1017(\(and)S 1182(implemented)S 1621(in)S 1707(RCS\),)S 1930(but)S 2056(do)S 2160(not)S 2286(solve)S 2478(the)S 2599(con\257ict)S 2862(discussed)S 3191(here.)S 7920 V EP %%Page: 10 11 BP /slant 0 def /height 1.000000 def 8 R 8 R 40 V 10 R 0(-)S 580 V 2767(- 10 -)S 900 V 970(An)S 1126(important)S 1549(maxim)S 1861(for)S 2011(software)S 2388(tools)S 2617(like)S 2801(RCS)S 3025(is)S 3126(that)S 3310(they)S 3516(must)S 3745(not)S 3907(stand)S 4152(in)S 4264(the)S 4421(way)S 4622(of)S 4740(making)S 1080 V 720(progress)S 1093(with)S 1305(a)S 1383(project.)S 1749(This)S 1961(consideration)S 2533(leads)S 2772(to)S 2884(several)S 3200(weakenings)S 3705(of)S 3822(the)S 3978(locking)S 4312(mechanism.)S 4856(First)S 1260 V 720(of)S 839(all,)S 1000(even)S 1224(if)S 1321(a)S 1401(revision)S 1759(is)S 1862(locked,)S 2189(it)S 2281(can)S 2455(still)S 2642(be)S 2772(checked)S 3134(out.)S 3353(This)S 3567(is)S 3670(necessary)S 4093(if)S 4191(other)S 4433(people)S 4736(wish)S 4962(to)S 1440 V 720(compile)S 1073(or)S 1187(inspect)S 1501(the)S 1654(locked)S 1951(revision)S 2304(while)S 2556(the)S 2708(next)S 2910(one)S 3084(is)S 3181(in)S 3289(preparation.)S 3828(The)S 4013(only)S 4221(operations)S 4667(they)S 4869(can-)S 1620 V 720(not)S 880(do)S 1012(are)S 1165(to)S 1275(lock)S 1479(the)S 1633(revision)S 1987(or)S 2102(to)S 2212(check)S 2476(in)S 2586(the)S 2740(succeeding)S 3215(one.)S 3447(Secondly,)S 3877(check-in)S 4253(operations)S 4702(on)S 4835(other)S 1800 V 720(branches)S 1109(in)S 1222(the)S 1379(RCS)S 1604(\256le)S 1767(are)S 1923(still)S 2109(possible;)S 2500(the)S 2657(locking)S 2991(of)S 3108(one)S 3286(revision)S 3642(does)S 3859(not)S 4021(a)S 4065 H (f)show 10 -.5 mul h (f)show 10 R 4126(ect)S 4276(any)S 4454(other)S 4693(revision.)S 1980 V 720(Thirdly,)S 1084(revisions)S 1484(are)S 1644(occasionally)S 2183(locked)S 2489(for)S 2645(a)S 2729(long)S 2947(period)S 3242(of)S 3365(time)S 3583(because)S 3938(a)S 4022(programmer)S 4555(is)S 4662(absent)S 4957(or)S 2160 V 720(otherwise)S 1153(unable)S 1464(to)S 1587(complete)S 1998(the)S 2165(assignment.)S 2715(If)S 2826(another)S 3170(programmer)S 3708(has)S 3886(to)S 4008(make)S 4268(a)S 4356(pressing)S 4733(change,)S 2340 V 720(there)S 950(are)S 1102(the)S 1255(following)S 1675(three)S 1905(alternatives)S 2397(for)S 2545(making)S 2877(progress:)S 3275(a\))S 3384(\256nd)S 3572(out)S 3732(who)S 3936(is)S 4035(holding)S 4373(the)S 4527(lock)S 4731(and)S 4907(ask)S 2520 V 720(that)S 906(person)S 1208(to)S 1322(release)S 1634(it;)S 1754(b\))S 1873(check)S 2141(out)S 2305(the)S 2463(locked)S 2765(revision,)S 3148(modify)S 3473(it,)S 3590(check)S 3858(it)S 3950(in)S 4064(on)S 4200(a)S 4280(branch,)S 4612(and)S 4791(merge)S 2700 V 720(the)S 878(changes)S 1236(later;)S 1478(c\))S 1592(break)S 1850(the)S 2009(lock.)S 2273(Breaking)S 2676(a)S 2757(lock)S 2966(leaves)S 3252(a)S 3333(highly)S 3626(visible)S 3930(trace,)S 4185(namely)S 4516(an)S 4647(electronic)S 2880 V 720(mail)S 930(message)S 1300(that)S 1482(is)S 1581(sent)S 1774(automatically)S 2350(to)S 2460(the)S 2614(holder)S 2901(of)S 3015(the)S 3168(lock,)S 3396(recording)S 3809(the)S 3962(breaker)S 4291(and)S 4466(a)S 4541(commentary)S 3060 V 720(requested)S 1135(from)S 1362(him.)S 1606(Thus,)S 1864(breaking)S 2246(locks)S 2490(is)S 2590(tolerated)S 2972(under)S 3232(certain)S 3536(circumstances,)S 4159(but)S 4321(will)S 4511(not)S 4673(go)S 4807(unno-)S 3240 V 720(ticed.)S 1016(Experience)S 1511(has)S 1691(shown)S 1998(that)S 2194(the)S 2362(automatic)S 2802(mail)S 3026(message)S 3410(attaches)S 3777(a)S 3867(high)S 4091(enough)S 4431(stigma)S 4744(to)S 4868(lock)S 3420 V 720(breaking,)S 1130(such)S 1349(that)S 1535(programmers)S 2103(break)S 2360(locks)S 2607(only)S 2821(in)S 2935(real)S 3120(emergencies,)S 3679(or)S 3798(when)S 4050(a)S 4130(co-worker)S 4576(resigns)S 4896(and)S 3600 V 720(leaves)S 999(locked)S 1295(revisions)S 1686(behind.)S 3816 V 970(If)S 1074(an)S 1206(RCS)S 1434(\256le)S 1600(is)S 1705(private,)S 2046(i.e.,)S 2232(when)S 2487(a)S 2570(programmer)S 3102(owns)S 3352(an)S 3485(RCS)S 3714(\256le)S 3881(and)S 4064(does)S 4286(not)S 4453(expect)S 4752(anyone)S 3996 V 720(else)S 912(to)S 1027(perform)S 1385(check-in)S 1765(operations,)S 2243(locking)S 2580(is)S 2684(an)S 2815(unnecessary)S 3339(nuisance.)S 3780(In)S 3900(this)S 4081(case,)S 4313(the)S 4471(`strict)S 4740(locking)S 4176 V 720(feature')S 1069(discussed)S 1492(earlier)S 1786(may)S 1998(be)S 2133(disabled,)S 2532(provided)S 2928(that)S 3119(\256le)S 3288(protection)S 3734(is)S 3842(set)S 3994(such)S 4218(that)S 4409(only)S 4628(the)S 4791(owner)S 4356 V 720(may)S 927(write)S 1167(the)S 1324(RCS)S 1549(\256le.)S 1767(This)S 1980(has)S 2148(the)S 2305(e)S 2349 H (f)show 10 -.5 mul h (f)show 10 R 2410(ect)S 2561(that)S 2746(only)S 2959(the)S 3116(owner)S 3400(can)S 3573(check-in)S 3951(revisions,)S 4372(and)S 4550(that)S 4734(no)S 4868(lock)S 4536 V 720(is)S 817(needed)S 1129(for)S 1275(doing)S 1533(so.)S 4752 V 970(As)S 1113(added)S 1383(protection,)S 1845(each)S 2059(RCS)S 2281(\256le)S 2441(contains)S 2806(an)S 2932(access)S 3218(list)S 3373(that)S 3556(speci\256es)S 3933(the)S 4088(users)S 4326(who)S 4531(may)S 4736(execute)S 4932 V 720(update)S 1019(operations.)S 1523(If)S 1622(an)S 1749(access)S 2036(list)S 2192(is)S 2292(empty,)S 2600(only)S 2811(normal)S 3127(UNIX)S 3408(\256le)S 3568(protection)S 4005(applies.)S 4375(Thus,)S 4632(the)S 4786(access)S 5112 V 720(list)S 878(is)S 980(useful)S 1259(for)S 1410(restricting)S 1851(the)S 2009(set)S 2156(of)S 2275(people)S 2577(who)S 2785(would)S 3071(otherwise)S 3495(have)S 3719(update)S 4021(permission.)S 4551(Just)S 4743(as)S 4862(with)S 5292 V 720(locking,)S 1077(the)S 1231(access)S 1517(list)S 1672(has)S 1837(no)S 1969(e)S 2013 H (f)show 10 -.5 mul h (f)show 10 R 2074(ect)S 2222(on)S 2354(read-only)S 2768(operations)S 3216(such)S 3431(as)S 10 I 3546(co)S 10 R 3640(.)S 3727(This)S 3937(approach)S 4333(is)S 4431(consistent)S 4862(with)S 5472 V 720(the)S 872(UNIX)S 1151(philosophy)S 1626(of)S 1739(openness,)S 2160(which)S 2434(contributes)S 2908(to)S 3016(a)S 3090(productive)S 3547(software)S 3920(development)S 4466(environment.)S 5832 V 10 B 720(5.)S 855(Con\256guration)S 1486(Management)S 6048 V 10 R 970(The)S 1156(preceding)S 1580(sections)S 1933(described)S 2346(how)S 2549(RCS)S 2770(deals)S 3006(with)S 3215(revisions)S 3607(of)S 3722(individual)S 4160(components;)S 4703(this)S 4880(sec-)S 6228 V 720(tion)S 917(discusses)S 1330(how)S 1543(to)S 1662(handle)S 1969(con\256gurations.)S 2637(A)S 2749(con\256guration)S 3322(is)S 3429(a)S 3513(set)S 3664(of)S 3787(revisions,)S 4213(where)S 4496(each)S 4718(revision)S 6408 V 720(comes)S 1007(from)S 1233(a)S 1309(di)S 1387 H (f)show 10 -.5 mul h (f)show 10 R 1448(erent)S 1679(revision)S 2033(group,)S 2323(and)S 2500(the)S 2655(revisions)S 3049(are)S 3203(selected)S 3557(according)S 3983(to)S 4094(a)S 4171(certain)S 4475(criterion.)S 4901(For)S 6588 V 720(example,)S 1121(in)S 1237(order)S 1485(to)S 1601(build)S 1845(a)S 1927(functioning)S 2426(compiler,)S 2844(the)S 3004(`right')S 3297(revisions)S 3696(from)S 3928(the)S 4088(scanner,)S 4454(the)S 4613(parser,)S 4918(the)S 6768 V 720(optimizer)S 1154(and)S 1349(the)S 1522(code)S 1761(generator)S 2188(must)S 2434(be)S 2579(combined.)S 3079(RCS,)S 3345(in)S 3475(conjunction)S 3999(with)S 4229(MAKE,)S 4600(provides)S 4996(a)S 6948 V 720(number)S 1055(of)S 1168(facilities)S 1542(to)S 1650(e)S 1694 H (f)show 10 -.5 mul h (f)show 10 R 1755(ect)S 1901(a)S 1975(smooth)S 2300(selection.)S 7920 V EP %%Page: 11 12 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2767(- 11 -)S 900 V 10 B 720(5.1.)S 930(RCS)S 1160(Selection)S 1573(Functions)S 1152 V 10 I 720(Default)S 1050(selection)S 1332 V 10 R 970(During)S 1285(development,)S 1858(the)S 2012(usual)S 2255(selection)S 2642(criterion)S 3012(is)S 3111(to)S 3221(choose)S 3530(the)S 3684(latest)S 3928(revision)S 4283(of)S 4399(all)S 4532(components.)S 1512 V 970(The)S 10 I 1155(co)S 10 R 1279(command)S 1703(makes)S 1988(this)S 2163(selection)S 2548(by)S 2678(default.)S 3040(For)S 3209(example,)S 3602(the)S 3754(command)S 1692 V 10 I 1330(co)S 1484(*,v)S 1932 V 10 R 970(retrieves)S 1354(the)S 1517(latest)S 1769(revision)S 2132(on)S 2273(the)S 2437(default)S 2756(branch)S 3069(of)S 3194(each)S 3418(RCS)S 3650(\256le)S 3820(in)S 3940(the)S 4104(current)S 4428(directory.)S 4885(The)S 2112 V 970(default)S 1285(branch)S 1594(is)S 1699(usually)S 2025(the)S 2184(trunk,)S 2457(but)S 2622(may)S 2831(be)S 2962(set)S 3110(to)S 3225(be)S 3356(a)S 3437(side)S 3635(branch.)S 3998(Side)S 4213(branches)S 4604(as)S 4724(defaults)S 2292 V 970(are)S 1133(needed)S 1457(in)S 1577(distributed)S 2047(software)S 2432(development,)S 3015(as)S 3140(discussed)S 3565(in)S 3686(the)S 3851(section)S 4177(on)S 4320(the)S 4485(RCS)S 4718(revision)S 2472 V 970(tree.)S 2868 V 10 I 720(Release)S 1060(based)S 1323(selection)S 3048 V 10 R 970(Specifying)S 1448(a)S 1537(release)S 1858(or)S 1986(branch)S 2302(number)S 2653(selects)S 2965(the)S 3133(latest)S 3390(revision)S 3758(in)S 3882(that)S 4078(release)S 4400(or)S 4529(branch.)S 4901(For)S 3228 V 970(instance,)S 3408 V 10 I 1330(co)S 1484(\261r2)S 1683(*,v)S 3648 V 10 R 970(retrieves)S 1344(the)S 1497(latest)S 1739(revision)S 2092(with)S 2302(release)S 2610(number)S 2947(2)S 3029(from)S 3255(each)S 3469(RCS)S 3691(\256le.)S 3906(This)S 4116(selection)S 4503(is)S 4602(convenient)S 3828 V 970(if)S 1061(a)S 1135(release)S 1441(has)S 1604(been)S 1822(completed)S 2268(and)S 2442(development)S 2988(has)S 3151(moved)S 3453(on)S 3583(to)S 3691(the)S 3843(next)S 4045(release.)S 4224 V 10 I 720(State)S 950(and)S 1130(author)S 1427(based)S 1690(selection)S 4404 V 10 R 970(If)S 1070(the)S 1226(highest)S 1549(level)S 1777(number)S 2116(within)S 2406(a)S 2484(given)S 2740(release)S 3050(number)S 3389(is)S 3490(not)S 3652(the)S 3808(desired)S 4130(one,)S 4333(the)S 4489(state)S 4707(attribute)S 4584 V 970(can)S 1138(help.)S 1395(For)S 1564(example,)S 4764 V 10 I 1330(co)S 1484(\261r2)S 1683(\261sReleased)S 2192(*,v)S 5004 V 10 R 970(retrieves)S 1352(the)S 1513(latest)S 1763(revision)S 2124(with)S 2341(release)S 2656(number)S 3001(2)S 3091(whose)S 3386(state)S 3609(attribute)S 3982(is)S 4089(`Released'.)S 4610(Of)S 4755(course,)S 5184 V 970(the)S 1126(state)S 1343(attribute)S 1710(has)S 1877(to)S 1989(be)S 2117(set)S 2262(appropriately,)S 2853(using)S 3104(the)S 10 I 3260(ci)S 10 R 3366(or)S 10 I 3483(rcs)S 10 R 3638(commands.)S 4159(Another)S 4519(alternative)S 4973(is)S 5364 V 970(to)S 1078(select)S 1335(a)S 1409(revision)S 1761(by)S 1891(its)S 2016(author,)S 2326(using)S 2573(the)S 10 I 2725(\261w)S 10 R 2872(option.)S 5760 V 10 I 720(Date)S 944(based)S 1207(selection)S 5940 V 10 R 970(Revisions)S 1399(may)S 1605(also)S 1800(be)S 1928(selected)S 2283(by)S 2417(date.)S 2672(Suppose)S 3045(a)S 3123(release)S 3433(of)S 3551(an)S 3680(entire)S 3942(system)S 4255(was)S 4445(completed)S 4896(and)S 6120 V 970(current)S 1282(on)S 1412(March)S 1702(4,)S 1807(at)S 1909(1:00)S 2117(p.m.)S 2325(local)S 2549(time.)S 2812(Then)S 3047(the)S 3199(command)S 6300 V 10 I 1330(co)S 1484(\261d'March)S 1913(4,)S 2018(1:00)S 2231(pm)S 2383(LT')S 2588(*,v)S 6540 V 10 R 970(checks)S 1293(out)S 1473(all)S 1626(the)S 1801(components)S 2337(of)S 2473(that)S 2676(release,)S 3030(independent)S 3571(of)S 3707(the)S 3882(numbering.)S 4423(The)S 10 I 4631(\261d)S 10 R 4784(option)S 6720 V 970(speci\256es)S 1346(a)S 1422(`cuto)S 1627 H (f)show 10 -.5 mul h (f)show 10 R 1720(date',)S 1976(i.e.,)S 2155(the)S 2309(revision)S 2662(selected)S 3014(has)S 3178(a)S 3253(check-in)S 3627(date)S 3824(that)S 4005(is)S 4103(closest)S 4406(to,)S 4540(but)S 4699(not)S 4858(after)S 6900 V 970(the)S 1122(date)S 1318(given.)S 7116 V 10 I 720(Name)S 983(based)S 1246(selection)S 7296 V 10 R 970(The)S 1178(most)S 1426(powerful)S 1839(selection)S 2247(function)S 2633(is)S 2753(based)S 3033(on)S 3187(assigning)S 3619(symbolic)S 4040(names)S 4349(to)S 4481(revisions)S 4896(and)S 7920 V EP %%Page: 12 13 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2767(- 12 -)S 900 V 970(branches.)S 1412(In)S 1528(large)S 1760(systems,)S 2135(a)S 2212(single)S 2484(release)S 2793(number)S 3131(or)S 3247(date)S 3446(is)S 3546(not)S 3707(su)S 3796 H (f)show 10 -.5 mul h (\256)show 10 R 3880(cient)S 4107(to)S 4217(collect)S 4515(the)S 4669(appropri-)S 1080 V 970(ate)S 1122(revisions)S 1519(from)S 1749(all)S 1885(groups.)S 2248(For)S 2423(example,)S 2822(suppose)S 3181(one)S 3362(wishes)S 3671(to)S 3786(combine)S 4167(release)S 4480(2)S 4567(of)S 4687(one)S 4868(sub-)S 1260 V 970(system)S 1296(and)S 1488(release)S 1812(15)S 1960(of)S 2091(another.)S 2493(Most)S 2747(likely,)S 3048(the)S 3218(creation)S 3587(dates)S 3840(of)S 3971(those)S 4229(releases)S 4591(di)S 4669 H (f)show 10 -.5 mul h (f)show 10 R 4730(er)S 4854(also.)S 1440 V 970(Thus,)S 1226(a)S 1301(single)S 1571(revision)S 1924(number)S 2260(or)S 2375(date)S 2573(passed)S 2871(to)S 2981(the)S 10 I 3135(co)S 10 R 3261(command)S 3687(will)S 3875(not)S 4035(su)S 4124 H (f)show 10 -.5 mul h (\256)show 10 R 4208(ce)S 4328(to)S 4438(select)S 4697(the)S 4851(right)S 1620 V 970(revisions.)S 1432(Symbolic)S 1862(revision)S 2230(numbers)S 2620(solve)S 2877(this)S 3068(problem.)S 3502(Each)S 3747(RCS)S 3983(\256le)S 4156(may)S 4373(contain)S 4712(a)S 4801(set)S 4957(of)S 1800 V 970(symbolic)S 1377(names)S 1672(that)S 1862(are)S 2023(mapped)S 2379(to)S 2497(numeric)S 2864(revision)S 3226(numbers.)S 3665(For)S 3844(example,)S 4247(assume)S 4582(the)S 4745(symbol)S 1980 V 10 I 970(V3)S 10 R 1122(is)S 1230(bound)S 1521(to)S 1640(release)S 1957(number)S 2303(2)S 2394(in)S 2513(\256le)S 10 I 2682(s,v)S 10 R 2790(,)S 2856(and)S 3041(to)S 3160(revision)S 3523(number)S 3869(15.9)S 4084(in)S 10 I 4202(t,v)S 10 R 4299(.)S 4394(Then)S 4639(the)S 4801(single)S 2160 V 970(command)S 2340 V 10 I 1330(co)S 1484(\261rV3)S 1744(s,v)S 1912(t,v)S 2580 V 10 R 970(retrieves)S 1344(the)S 1497(latest)S 1739(revision)S 2092(of)S 2206(release)S 2513(2)S 2594(from)S 10 I 2819(s,v)S 10 R 2927(,)S 2983(and)S 3159(revision)S 3513(15.9)S 3720(from)S 10 I 3946(t,v)S 10 R 4043(.)S 4130(In)S 4245(a)S 4321(large)S 4552(system)S 4862(with)S 2760 V 970(many)S 1249(modules,)S 1670(checking)S 2087(out)S 2271(all)S 2427(revisions)S 2844(with)S 3078(one)S 3278(command)S 3728(greatly)S 4061(simpli\256es)S 4507(con\256guration)S 2940 V 970(management.)S 3156 V 970(Judicious)S 1385(use)S 1555(of)S 1675(symbolic)S 2079(revision)S 2439(numbers)S 2821(helps)S 3070(with)S 3286(organizing)S 3751(large)S 3988(con\256gurations.)S 4653(A)S 4763(special)S 3336 V 720(command,)S 10 I 1195(rcsfreeze)S 10 R 1555(,)S 1636(assigns)S 1981(a)S 2081(symbolic)S 2504(revision)S 2882(number)S 3243(to)S 3377(a)S 3477(selected)S 3854(revision)S 4232(in)S 4366(every)S 4642(RCS)S 4887(\256le.)S 3516 V 10 I 720(Rcsfreeze)S 10 R 1147(e)S 1191 H (f)show 10 -.5 mul h (f)show 10 R 1252(ectively)S 1613(freezes)S 1939(a)S 2028(con\256guration.)S 2661(The)S 2861(assigned)S 3250(symbolic)S 3662(revision)S 4029(number)S 4379(selects)S 4690(all)S 4835(com-)S 3696 V 720(ponents)S 1062(of)S 1176(the)S 1329(con\256guration.)S 1948(If)S 2045(necessary,)S 2488(symbolic)S 2886(numbers)S 3260(may)S 3462(even)S 3680(be)S 3804(intermixed)S 4267(with)S 4475(numeric)S 4832(ones.)S 3876 V 720(Thus,)S 10 I 975(V3.5)S 10 R 1191(in)S 1299(the)S 1451(above)S 1719(example)S 2087(would)S 2367(select)S 2624(revision)S 2976(2.5)S 3131(in)S 10 I 3239(s,v)S 10 R 3377(and)S 3551(branch)S 3852(15.9.5)S 4132(in)S 10 I 4240(t,v)S 10 R 4337(.)S 4092 V 970(The)S 1162(options)S 10 I 1494(\261r)S 10 R 1583(,)S 10 I 1645(\261s)S 10 R 1734(,)S 10 I 1796(\261w)S 10 R 1950(and)S 10 I 2131(\261d)S 10 R 2269(may)S 2479(be)S 2611(combined.)S 3098(If)S 3202(a)S 3284(branch)S 3593(is)S 3698(given,)S 3983(the)S 4143(latest)S 4392(revision)S 4752(on)S 4890(that)S 4272 V 720(branch)S 1021(satisfying)S 1440(all)S 1570(conditions)S 2017(is)S 2114(retrieved;)S 2526(otherwise,)S 2969(the)S 3121(default)S 3428(branch)S 3729(is)S 3826(used.)S 4632 V 10 B 720(5.2.)S 930(Combining)S 1439(MAKE)S 1780(and)S 1972(RCS)S 4848 V 10 R 970(MAKE)S 4798 V 1264(1)S 4848 V 1360(is)S 1473(a)S 1563(program)S 1947(that)S 2143(processes)S 2571(con\256gurations.)S 3245(It)S 3353(is)S 3467(driven)S 3769(by)S 3916(con\256guration)S 4496(speci\256cations)S 5028 V 720(recorded)S 1108(in)S 1226(a)S 1310(special)S 1627(\256le,)S 1820(called)S 2098(a)S 2182(`Make\256le'.)S 2698(MAKE)S 3031(avoids)S 3331(redundant)S 3769(processing)S 4235(steps)S 4474(by)S 4613(comparing)S 5208 V 720(creation)S 1072(dates)S 1308(of)S 1422(source)S 1713(and)S 1888(processed)S 2312(objects.)S 2681(For)S 2851(example,)S 3245(when)S 3492(instructed)S 3917(to)S 4026(compile)S 4379(all)S 4510(modules)S 4881(of)S 4996(a)S 5388 V 720(given)S 972(system,)S 1305(it)S 1391(only)S 1599(recompiles)S 2067(those)S 2308(source)S 2598(modules)S 2967(that)S 3147(were)S 3370(changed)S 3732(since)S 3967(they)S 4169(were)S 4392(processed)S 4815(last.)S 5604 V 970(MAKE)S 1298(has)S 1465(been)S 1687(extended)S 2081(with)S 2293(an)S 2421(auto-checkout)S 3020(feature)S 3330(for)S 3481(RCS.*)S 3811(When)S 4084(a)S 4163(certain)S 4469(\256le)S 4632(to)S 4745(be)S 4874(pro-)S 5784 V 720(cessed)S 1012(is)S 1111(not)S 1271(present,)S 1616(MAKE)S 1942(attempts)S 2313(a)S 2389(check-out)S 2813(operation.)S 3276(If)S 3373(successful,)S 3839(MAKE)S 4164(performs)S 4555(the)S 4708(required)S 5964 V 720(processing,)S 1210(and)S 1392(then)S 1602(deletes)S 1917(the)S 2077(checked)S 2441(out)S 2607(\256le)S 2773(to)S 2889(conserve)S 3281(space.)S 3595(The)S 3788(selection)S 4181(parameters)S 4657(discussed)S 6144 V 720(above)S 996(can)S 1172(be)S 1304(passed)S 1608(to)S 1724(MAKE)S 2056(either)S 2321(as)S 2442(parameters,)S 2942(or)S 3063(directly)S 3406(embedded)S 3854(in)S 3970(the)S 4129(Make\256le.)S 4576(MAKE)S 4907(has)S 6324 V 720(also)S 922(been)S 1152(extended)S 1554(to)S 1674(search)S 1970(the)S 2134(subdirectory)S 2675(named)S 10 I 2983(RCS)S 10 R 3203(for)S 3361(needed)S 3685(\256les,)S 3919(rather)S 4193(than)S 4407(just)S 4594(the)S 4758(current)S 6504 V 720(working)S 1090(directory.)S 1542(However,)S 1969(if)S 2067(a)S 2148(working)S 2517(\256le)S 2681(is)S 2784(present,)S 3133(MAKE)S 3463(totally)S 3755(ignores)S 4085(the)S 4243(corresponding)S 4850(RCS)S 6684 V 720(\256le)S 894(and)S 1085(uses)S 1304(the)S 1473(working)S 1853(\256le.)S 2083(\(In)S 2246(newer)S 2536(versions)S 2916(of)S 3046(MAKE)S 3387(distributed)S 3862(by)S 4009(AT&T)S 4328(and)S 4519(others,)S 4835(auto-)S 6864 V 720(checkout)S 1112(can)S 1282(be)S 1408(achieved)S 1794(with)S 2004(the)S 2158(rule)S 2345(DEFAULT,)S 2856(instead)S 3170(of)S 3284(a)S 3359(special)S 3667(extension)S 4081(of)S 4195(MAKE.)S 4575(However,)S 4996(a)S 6964 V 8 Y1 720(333333333333333333)S 7082 V 8 R 820(*)S 900(This)S 1066(auto-checkout)S 1540(extension)S 1869(is)S 1946(available)S 2256(only)S 2422(in)S 2508(some)S 2700(versions)S 2989(of)S 3079(MAKE,)S 3359(e.g.)S 3498(GNU)S 3696(MAKE.)S 7920 V EP %%Page: 13 14 BP /slant 0 def /height 1.000000 def 8 R 8 R 40 V 10 R 0(-)S 580 V 2767(- 13 -)S 900 V 720(\256le)S 879(checked)S 1236(out)S 1395(by)S 1526(the)S 1679(rule)S 1865(DEFAULT)S 2351(will)S 2538(not)S 2697(be)S 2822(deleted)S 3141(after)S 3355(processing.)S 10 I 3839(Rcsclean)S 10 R 4231(can)S 4401(be)S 4527(used)S 4742(for)S 4890(that)S 1080 V 720(purpose.\))S 1296 V 970(With)S 1225(auto-checkout,)S 1870(RCS/MAKE)S 2437(can)S 2630(e)S 2674 H (f)show 10 -.5 mul h (f)show 10 R 2735(ect)S 2906(a)S 3005(selection)S 3415(rule)S 3625(especially)S 4079(tuned)S 4357(for)S 4529(multi-person)S 1476 V 720(software)S 1107(development)S 1667(and)S 1855(maintenance.)S 2458(In)S 2585(these)S 2834(situations,)S 3287(programmers)S 3863(should)S 4174(obtain)S 4468(con\256gurations)S 1656 V 720(that)S 910(consist)S 1228(of)S 1351(the)S 1513(revisions)S 1914(they)S 2126(have)S 2354(personally)S 2810(checked)S 3176(out)S 3344(plus)S 3552(the)S 3715(latest)S 3967(checked)S 4334(in)S 4453(revision)S 4816(of)S 4940(all)S 1836 V 720(other)S 955(revision)S 1307(groups.)S 1664(This)S 1872(schema)S 2201(can)S 2369(be)S 2493(set)S 2634(up)S 2764(as)S 2877(follows.)S 2052 V 970(Each)S 1207(programmer)S 1738(chooses)S 2092(a)S 2174(working)S 2546(directory)S 2945(and)S 3128(places)S 3416(into)S 3611(it)S 3706(a)S 3789(symbolic)S 4195(link,)S 4415(named)S 10 I 4720(RCS)S 10 R 4898(,)S 4962(to)S 2232 V 720(the)S 879(directory)S 1276(containing)S 1735(the)S 1894(relevant)S 2252(RCS)S 2479(\256les.)S 2738(The)S 2930(symbolic)S 3334(link)S 3527(makes)S 3818(sure)S 4020(that)S 10 I 4206(co)S 10 R 4336(and)S 10 I 4516(ci)S 10 R 4624(operations)S 2412 V 720(need)S 947(only)S 1164(specify)S 1491(the)S 1652(working)S 2024(\256les,)S 2255(and)S 2438(that)S 2627(the)S 2788(Make\256le)S 3183(need)S 3411(not)S 3579(be)S 3713(changed.)S 4140(The)S 4335(programmer)S 4868(then)S 2592 V 720(checks)S 1039(out)S 1215(the)S 1385(needed)S 1715(\256les)S 1930(and)S 2121(modi\256es)S 2513(them.)S 2815(If)S 2928(MAKE)S 3269(is)S 3383(invoked,)S 3777(it)S 3880(composes)S 4321(con\256gurations)S 4940(by)S 2772 V 720(selecting)S 1112(those)S 1360(revisions)S 1758(that)S 1945(are)S 2103(checked)S 2466(out,)S 2656(and)S 2837(the)S 2996(rest)S 3177(from)S 3408(the)S 3567(subdirectory)S 10 I 4103(RCS)S 10 R 4281(.)S 4373(The)S 4565(latter)S 4808(selec-)S 2952 V 720(tion)S 912(may)S 1120(be)S 1250(controlled)S 1691(by)S 1827(a)S 1907(symbolic)S 2310(revision)S 2668(number)S 3009(or)S 3128(any)S 3307(of)S 3425(the)S 3582(other)S 3822(selection)S 4212(criteria.)S 4584(If)S 4685(there)S 4919(are)S 3132 V 720(several)S 1034(programmers)S 1598(editing)S 1908(in)S 2018(separate)S 2376(working)S 2741(directories,)S 3219(they)S 3423(are)S 3576(insulated)S 3969(from)S 4195(each)S 4409(other's)S 4719(changes)S 3312 V 720(until)S 934(checking)S 1324(in)S 1432(their)S 1645(modi\256cations.)S 3528 V 970(Similarly,)S 1399(a)S 1475(maintainer)S 1934(can)S 2104(recreate)S 2450(an)S 2576(older)S 2813(con\256guration)S 3378(by)S 3510(starting)S 3842(to)S 3952(work)S 4189(in)S 4299(an)S 4425(empty)S 4707(working)S 3708 V 720(directory.)S 1172(During)S 1492(the)S 1651(initial)S 1922(MAKE)S 2253(invocation,)S 2737(all)S 2874(revisions)S 3272(are)S 3430(selected)S 3788(from)S 4018(RCS)S 4244(\256les.)S 4502(As)S 4649(the)S 4807(main-)S 3888 V 720(tainer)S 977(checks)S 1278(out)S 1436(\256les)S 1633(and)S 1807(modi\256es)S 2182(them,)S 2437(a)S 2511(new)S 2707(con\256guration)S 3270(is)S 3367(gradually)S 3774(built)S 3988(up.)S 4173(Every)S 4441(time)S 4649(MAKE)S 4973(is)S 4068 V 720(invoked,)S 1097(it)S 1183(substitutes)S 1636(the)S 1788(modi\256ed)S 2174(revisions)S 2565(into)S 2751(the)S 2903(con\256guration)S 3466(being)S 3718(manipulated.)S 4284 V 970(A)S 1096(\256nal)S 1328(application)S 1826(of)S 1963(RCS)S 2208(is)S 2330(to)S 2463(use)S 2651(it)S 2762(for)S 2933(storing)S 3266(Make\256les.)S 3770(Revision)S 4181(groups)S 4508(of)S 4646(Make\256les)S 4464 V 720(represent)S 1126(multiple)S 1501(versions)S 1875(of)S 1999(con\256gurations.)S 2667(Whenever)S 3117(a)S 3202(con\256guration)S 3776(is)S 3884(baselined)S 4302(or)S 4425(distributed,)S 4918(the)S 4644 V 720(best)S 929(approach)S 1342(is)S 1457(to)S 1584(unambiguously)S 2250(\256x)S 2405(the)S 2576(con\256guration)S 3158(with)S 3385(a)S 3478(symbolic)S 3894(revision)S 4265(number)S 4619(by)S 4768(calling)S 4824 V 10 I 720(rcsfreeze)S 10 R 1080(,)S 1137(to)S 1247(embed)S 1545(that)S 1727(symbol)S 2054(into)S 2242(the)S 2396(Make\256le,)S 2808(and)S 2983(to)S 3092(check)S 3355(in)S 3464(the)S 3617(Make\256le)S 4003(\(using)S 4284(the)S 4437(same)S 4673(symbolic)S 5004 V 720(revision)S 1072(number\).)S 1495(With)S 1725(this)S 1900(approach,)S 2320(old)S 2478(con\256gurations)S 3080(can)S 3248(be)S 3372(regenerated)S 3866(easily)S 4129(and)S 4303(reliably.)S 5364 V 10 B 720(6.)S 855(Usage)S 1140(Statistics)S 5580 V 10 R 970(The)S 1165(following)S 1594(usage)S 1861(statistics)S 2246(were)S 2479(collected)S 2879(on)S 3019(two)S 3209(DEC)S 3449(VAX-11/780)S 4016(computers)S 4472(of)S 4595(the)S 4757(Purdue)S 5760 V 720(Computer)S 1164(Science)S 1517(Department.)S 2086(Both)S 2324(machines)S 2744(are)S 2908(mainly)S 3229(used)S 3455(for)S 3614(research)S 3988(purposes.)S 4441(Thus,)S 4709(the)S 4874(data)S 5940 V 720(re\257ect)S 1019(an)S 1163(environment)S 1718(in)S 1847(which)S 2142(the)S 2315(majority)S 2705(of)S 2839(projects)S 3206(involve)S 3557(prototyping)S 4075(and)S 4270(advanced)S 4697(software)S 6120 V 720(development,)S 1291(but)S 1449(relatively)S 1856(little)S 2070(long-term)S 2494(maintenance.)S 6336 V 970(For)S 1141(the)S 1295(\256rst)S 1483(experiment,)S 1989(the)S 10 I 2143(ci)S 10 R 2247(and)S 10 I 2423(co)S 10 R 2549(operations)S 2997(were)S 3222(instrumented)S 3776(to)S 3886(log)S 4046(the)S 4200(number)S 4537(of)S 4653(backward)S 6516 V 720(and)S 903(forward)S 1256(deltas)S 1527(applied.)S 1914(The)S 2107(data)S 2311(were)S 2542(collected)S 2940(during)S 3239(a)S 3321(13)S 3459(month)S 3753(period)S 4046(from)S 4278(Dec.)S 4501(1982)S 4739(to)S 4855(Dec.)S 6696 V 720(1983.)S 1005(Table)S 1262(I)S 1325(summarizes)S 1832(the)S 1984(results.)S 7920 V EP %%Page: 14 15 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 520 V 2767(- 14 -)S 740 V 10 Y1 1032(2)S 1078(2222222222222222222222222222222222222222222222222222222222222222222222222)S 860 V 10 R 1082(Operation)S 1748(Total)S 2227(Total)S 2468(deltas)S 2851(Mean)S 3108(deltas)S 3541(Operations)S 4284(Branch)S 980 V 1631(operations)S 2317(applied)S 2949(applied)S 3491(with)S 3699(>1)S 3835(delta)S 4220(operations)S 1000 V 10 Y1 1032(2)S 1078(2222222222222222222222222222222222222222222222222222222222222222222222222)S 1120 V 10 R 1082(co)S 1779(7867)S 2389(9320)S 3008(1.18)S 3491(509)S 3810(\(6%\))S 4179(203)S 4479(\(3%\))S 1240 V 1082(ci)S 1779(3468)S 2389(2207)S 3008(0.64)S 3541(85)S 3810(\(2%\))S 4229(75)S 4479(\(2%\))S 1360 V 1082(ci)S 1184(&)S 1292(co)S 1729(11335)S 2339(11527)S 3008(1.02)S 3491(594)S 3810(\(5%\))S 4179(278)S 4479(\(2%\))S 1380 V 10 Y1 1032(2)S 1078(2222222222222222222222222222222222222222222222222222222222222222222222222)S 1032(1)S 1340 V 1032(1)S 1240 V 1032(1)S 1140 V 1032(1)S 1040 V 1032(1)S 940 V 1032(1)S 840 V 1032(1)S 1380 V 1556(1)S 1340 V 1556(1)S 1240 V 1556(1)S 1140 V 1556(1)S 1040 V 1556(1)S 940 V 1556(1)S 840 V 1556(1)S 1380 V 2152(1)S 1340 V 2152(1)S 1240 V 2152(1)S 1140 V 2152(1)S 1040 V 2152(1)S 940 V 2152(1)S 840 V 2152(1)S 1380 V 2776(1)S 1340 V 2776(1)S 1240 V 2776(1)S 1140 V 2776(1)S 1040 V 2776(1)S 940 V 2776(1)S 840 V 2776(1)S 1380 V 3416(1)S 1340 V 3416(1)S 1240 V 3416(1)S 1140 V 3416(1)S 1040 V 3416(1)S 940 V 3416(1)S 840 V 3416(1)S 1380 V 4104(1)S 1340 V 4104(1)S 1240 V 4104(1)S 1140 V 4104(1)S 1040 V 4104(1)S 940 V 4104(1)S 840 V 4104(1)S 1380 V 4728(1)S 1340 V 4728(1)S 1240 V 4728(1)S 1140 V 4728(1)S 1040 V 4728(1)S 940 V 4728(1)S 840 V 4728(1)S 1560 V 10 R 2003(Table)S 2260(I.)S 2378(Statistics)S 2770(for)S 10 I 2916(co)S 10 R 3040(and)S 10 I 3214(ci)S 10 R 3316(operations.)S 1776 V 970(The)S 1157(\256rst)S 1345(two)S 1527(lines)S 1748(show)S 1991(statistics)S 2368(for)S 2516(check-out)S 2941(and)S 3117(check-in;)S 3520(the)S 3674(third)S 3895(line)S 4077(shows)S 4360(the)S 4515(combination.)S 1956 V 720(Recall)S 1006(that)S 10 I 1187(ci)S 10 R 1290(performs)S 1681(an)S 1806(implicit)S 2149(check-out)S 2573(to)S 2682(obtain)S 2963(a)S 3038(revision)S 3391(for)S 3537(computing)S 3995(the)S 4147(delta.)S 4426(In)S 4539(all)S 4669(measures)S 2136 V 720(presented,)S 1173(the)S 1341(most)S 1582(recent)S 1871(revision)S 2239(\(stored)S 2562(intact\))S 2863(counts)S 3170(as)S 3299(one)S 3489(delta.)S 3784(The)S 3985(number)S 4336(of)S 4466(deltas)S 4746(applied)S 2316 V 720(represents)S 1154(the)S 1306(number)S 1641(of)S 1754(passes)S 2039(necessary,)S 2481(where)S 2754(the)S 2906(\256rst)S 3092(`pass')S 3360(is)S 3457(a)S 3531(copying)S 3883(step.)S 2532 V 970(Note)S 1199(that)S 1384(the)S 1541(check-out)S 1969(operation)S 2381(is)S 2483(executed)S 2872(more)S 3112(than)S 3319(twice)S 3570(as)S 3688(frequently)S 4133(as)S 4251(the)S 4408(check-in)S 4786(opera-)S 2712 V 720(tion.)S 972(The)S 1168(fourth)S 1453(column)S 1794(gives)S 2046(the)S 2209(mean)S 2466(number)S 2812(of)S 2936(deltas)S 3210(applied)S 3544(in)S 3662(all)S 3802(three)S 4041(cases.)S 4346(For)S 10 I 4525(ci)S 10 R 4597(,)S 4662(the)S 4824(mean)S 2892 V 720(number)S 1055(of)S 1168(deltas)S 1431(applied)S 1755(is)S 1852(less)S 2032(than)S 2234(one.)S 2463(The)S 2649(reasons)S 2979(are)S 3131(that)S 3312(the)S 3465(initial)S 3730(check-in)S 4104(requires)S 4456(no)S 4587(delta)S 4812(at)S 4915(all,)S 3072 V 720(and)S 913(that)S 1111(the)S 1281(only)S 1507(time)S 10 I 1733(ci)S 10 R 1853(requires)S 2222(more)S 2475(than)S 2695(one)S 2887(delta)S 3129(is)S 3244(for)S 3408(branches.)S 3865(Column)S 4236(5)S 4334(shows)S 4632(the)S 4802(actual)S 3252 V 720(number)S 1058(of)S 1174(operations)S 1623(that)S 1806(applied)S 2133(more)S 2371(than)S 2576(one)S 2753(delta.)S 3035(The)S 3223(last)S 3395(column)S 3728(indicates)S 4116(that)S 4299(branches)S 4686(were)S 4912(not)S 3432 V 720(used)S 933(often.)S 3648 V 970(The)S 1156(last)S 1326(three)S 1556(columns)S 1926(demonstrate)S 2445(that)S 2626(the)S 2779(most)S 3005(recent)S 3279(trunk)S 3522(revision)S 3876(is)S 3975(by)S 4107(far)S 4249(the)S 4403(most)S 4630(frequently)S 3828 V 720(accessed.)S 1154(For)S 1324(RCS,)S 1570(check-out)S 1994(of)S 2108(this)S 2284(revision)S 2637(is)S 2735(a)S 2810(simple)S 3108(copy)S 3332(operation,)S 3764(which)S 4038(is)S 4135(the)S 4287(absolute)S 4650(minimum)S 4008 V 720(given)S 996(the)S 1172(copy-semantics)S 1847(of)S 10 I 1984(co)S 10 R 2078(.)S 2187(Access)S 2523(to)S 2655(older)S 2914(revisions)S 3329(and)S 3528(branches)S 3937(is)S 4059(more)S 4319(common)S 4724(in)S 4857(non-)S 4188 V 720(academic)S 1131(environments,)S 1735(yet)S 1892(even)S 2115(if)S 2210(access)S 2498(to)S 2610(older)S 2849(deltas)S 3116(were)S 3343(an)S 3471(order)S 3715(of)S 3832(magnitude)S 4288(more)S 4527(frequent,)S 4918(the)S 4368 V 720(combined)S 1155(average)S 1505(number)S 1851(of)S 1975(deltas)S 2249(applied)S 2584(would)S 2875(still)S 3068(be)S 3204(below)S 3490(1.2.)S 3712(Since)S 3976(RCS)S 4208(is)S 4317(faster)S 4580(than)S 4794(SCCS)S 4548 V 720(until)S 934(up)S 1064(to)S 1172(10)S 1302(delta)S 1526(applications,)S 2064(reverse)S 2381(deltas)S 2644(are)S 2795(clearly)S 3096(the)S 3248(method)S 3578(of)S 3691(choice.)S 4764 V 970(The)S 1158(second)S 1468(experiment,)S 1975(conducted)S 2418(in)S 2529(March)S 2822(of)S 2938(1984,)S 3196(involved)S 3580(surveying)S 4008(the)S 4164(existing)S 4515(RCS)S 4739(\256les)S 4940(on)S 4944 V 720(our)S 887(two)S 1071(machines.)S 1536(The)S 1724(goal)S 1929(was)S 2117(to)S 2228(determine)S 2660(the)S 2815(mean)S 3064(number)S 3402(of)S 3518(revisions)S 3912(per)S 4072(RCS)S 4295(\256le,)S 4481(as)S 4597(well)S 4802(as)S 4918(the)S 5124 V 720(space)S 977(consumed)S 1418(by)S 1554(them.)S 1845(Table)S 2109(II)S 2212(shows)S 2499(the)S 2658(results.)S 3011(\(Tables)S 3347(I)S 3417(and)S 3598(II)S 3701(were)S 3931(produced)S 4339(at)S 4448(di)S 4526 H (f)show 10 -.5 mul h (f)show 10 R 4587(erent)S 4823(times)S 5304 V 720(and)S 894(are)S 1045(unrelated.\))S 5384 V 10 Y1 883(2)S 926(2222222222222222222222222222222222222222222222222222222222222222222222222222222)S 5504 V 10 R 1486(Total)S 1727(RCS)S 2142(Total)S 2645(Mean)S 3089(Mean)S 3346(size)S 3531(of)S 3764(Mean)S 4021(size)S 4206(of)S 4439(Overhead)S 5624 V 1618(\256les)S 2067(revisions)S 2578(revisions)S 3158(RCS)S 3378(\256les)S 3846(revisions)S 5644 V 10 Y1 883(2)S 926(2222222222222222222222222222222222222222222222222222222222222222222222222222222)S 5764 V 10 R 933(All)S 1091(\256les)S 1601(8033)S 2122(11133)S 2671(1.39)S 3251(6156)S 3926(5585)S 4545(1.10)S 5884 V 933(Files)S 1158(with)S 1601(1477)S 2172(4578)S 2671(3.10)S 3251(8074)S 3926(6041)S 4545(1.34)S 6004 V 10 Y 933(\263)S 10 R 1018(2)S 1098(deltas)S 6024 V 10 Y1 883(2)S 926(2222222222222222222222222222222222222222222222222222222222222222222222222222222)S 883(1)S 5984 V 883(1)S 5884 V 883(1)S 5784 V 883(1)S 5684 V 883(1)S 5584 V 883(1)S 5484 V 883(1)S 6024 V 1411(1)S 5984 V 1411(1)S 5884 V 1411(1)S 5784 V 1411(1)S 5684 V 1411(1)S 5584 V 1411(1)S 5484 V 1411(1)S 6024 V 1992(1)S 5984 V 1992(1)S 5884 V 1992(1)S 5784 V 1992(1)S 5684 V 1992(1)S 5584 V 1992(1)S 5484 V 1992(1)S 6024 V 2503(1)S 5984 V 2503(1)S 5884 V 2503(1)S 5784 V 2503(1)S 5684 V 2503(1)S 5584 V 2503(1)S 5484 V 2503(1)S 6024 V 3014(1)S 5984 V 3014(1)S 5884 V 3014(1)S 5784 V 3014(1)S 5684 V 3014(1)S 5584 V 3014(1)S 5484 V 3014(1)S 6024 V 3689(1)S 5984 V 3689(1)S 5884 V 3689(1)S 5784 V 3689(1)S 5684 V 3689(1)S 5584 V 3689(1)S 5484 V 3689(1)S 6024 V 4364(1)S 5984 V 4364(1)S 5884 V 4364(1)S 5784 V 4364(1)S 5684 V 4364(1)S 5584 V 4364(1)S 5484 V 4364(1)S 6024 V 4876(1)S 5984 V 4876(1)S 5884 V 4876(1)S 5784 V 4876(1)S 5684 V 4876(1)S 5584 V 4876(1)S 5484 V 4876(1)S 6204 V 10 R 2201(Table)S 2458(II.)S 2609(Statistics)S 3001(for)S 3147(RCS)S 3367(\256les.)S 6420 V 970(The)S 1166(mean)S 1423(number)S 1769(of)S 1893(revisions)S 2295(per)S 2463(RCS)S 2694(\256le)S 2863(is)S 2972(1.39.)S 3244(Columns)S 3648(5)S 3740(and)S 3926(6)S 4018(show)S 4271(the)S 4435(mean)S 4693(sizes)S 4929(\(in)S 6600 V 720(bytes\))S 1004(of)S 1127(an)S 1261(RCS)S 1491(\256le)S 1659(and)S 1842(of)S 1964(the)S 2125(latest)S 2375(revision)S 2736(of)S 2858(each)S 3079(RCS)S 3308(\256le,)S 3500(respectively.)S 4076(The)S 4270(`overhead')S 4740(column)S 6780 V 720(contains)S 1093(the)S 1255(ratio)S 1478(of)S 1601(the)S 1763(mean)S 2019(sizes.)S 2308(Assuming)S 2754(that)S 2944(all)S 3084(revisions)S 3485(in)S 3603(an)S 3738(RCS)S 3969(\256le)S 4138(are)S 4300(approximately)S 4918(the)S 6960 V 720(same)S 955(size,)S 1165(this)S 1340(ratio)S 1553(gives)S 1794(a)S 1868(measure)S 2230(of)S 2343(the)S 2495(space)S 2746(consumed)S 3181(by)S 3311(the)S 3463(extra)S 3692(revisions.)S 7176 V 970(In)S 1092(our)S 1264(sample,)S 1611(over)S 1827(80)S 1966(per)S 2132(cent)S 2337(of)S 2459(the)S 2620(RCS)S 2849(\256les)S 3055(contained)S 3482(only)S 3699(a)S 3782(single)S 4061(revision.)S 4478(The)S 4673(reason)S 4973(is)S 7356 V 720(that)S 911(our)S 1085(systems)S 1443(programmers)S 2016(routinely)S 2418(check)S 2691(in)S 2810(all)S 2951(source)S 3252(\256les)S 3460(on)S 3600(the)S 3762(distribution)S 4264(tapes,)S 4534(even)S 4762(though)S 7920 V EP %%Page: 15 16 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2767(- 15 -)S 900 V 720(they)S 933(may)S 1146(never)S 1408(touch)S 1672(them)S 1914(again.)S 2227(To)S 2380(get)S 2544(a)S 2630(better)S 2899(indication)S 3341(of)S 3466(how)S 3680(much)S 3944(space)S 4207(savings)S 4549(are)S 4712(possible)S 1080 V 720(with)S 935(deltas,)S 1230(all)S 1367(measures)S 1775(with)S 1990(those)S 2238(\256les)S 2442(that)S 2629(contained)S 3054(2)S 3140(or)S 3259(more)S 3500(revisions)S 3897(were)S 4126(recomputed.)S 4688(Only)S 4924(for)S 1260 V 720(those)S 961(\256les)S 1158(is)S 1255(RCS)S 1475(necessary.)S 1947(As)S 2088(shown)S 2379(in)S 2487(the)S 2639(second)S 2946(line,)S 3151(the)S 3303(average)S 3642(number)S 3978(of)S 4092(revisions)S 4484(for)S 4631(those)S 4873(\256les)S 1440 V 720(is)S 823(3.10,)S 1059(with)S 1273(an)S 1403(overhead)S 1804(of)S 1923(1.34.)S 2188(This)S 2401(means)S 2691(that)S 2876(the)S 3033(extra)S 3267(2.10)S 3477(deltas)S 3745(require)S 4062(34)S 4197(per)S 4359(cent)S 4560(extra)S 4794(space,)S 1620 V 720(or)S 842(16)S 981(per)S 1147(cent)S 1352(per)S 1518(extra)S 1756(revision.)S 2172(Rochkind)S 1570 V 2561(3)S 1620 V 2650(measured)S 3071(the)S 3233(space)S 3494(consumed)S 3939(by)S 4079(SCCS,)S 4390(and)S 4574(reported)S 4946(an)S 1800 V 720(average)S 1067(of)S 1188(5)S 1276(revisions)S 1675(per)S 1840(group)S 2111(and)S 2293(an)S 2425(overhead)S 2828(of)S 2949(1.37)S 3162(\(or)S 3316(about)S 3575(9)S 3662(per)S 3826(cent)S 4029(per)S 4193(extra)S 4429(revision\).)S 4876(In)S 4996(a)S 1980 V 720(later)S 930(paper,)S 1209(Glasser)S 1930 V 1508(6)S 1980 V 1591(observed)S 1984(an)S 2111(average)S 2453(of)S 2569(7)S 2652(revisions)S 3046(per)S 3206(group)S 3472(in)S 3583(a)S 3660(single,)S 3957(large)S 4189(project,)S 4524(but)S 4685(provided)S 2160 V 720(no)S 863(overhead)S 1271(\256gure.)S 1602(In)S 1728(his)S 1888(paper)S 2152(on)S 2294(DSEE)S 2110 V 2544(5)S 2160 V 2594(,)S 2661(Leblang)S 3030(reported)S 3404(that)S 3596(delta)S 3832(storage)S 4162(combined)S 4598(with)S 4818(blank)S 2340 V 720(compression)S 1260(results)S 1556(in)S 1669(an)S 1798(overhead)S 2198(of)S 2316(a)S 2395(mere)S 2629(1\2612)S 2814(per)S 2976(cent)S 3177(per)S 3339(revision.)S 3751(Since)S 4009(leading)S 4339(blanks)S 4636(accounted)S 2520 V 720(for)S 870(about)S 1126(20)S 1260(per)S 1421(cent)S 1621(of)S 1738(the)S 1894(surveyed)S 2288(Pascal)S 2577(programs,)S 3013(a)S 3091(revision)S 3447(group)S 3714(with)S 3926(5\26110)S 4159(members)S 4558(was)S 4746(smaller)S 2700 V 720(than)S 922(a)S 996(single)S 1265(cleartext)S 1638(copy.)S 2916 V 970(The)S 1155(above)S 1423(observations)S 1958(demonstrate)S 2476(clearly)S 2777(that)S 2957(the)S 3109(space)S 3360(needed)S 3672(for)S 3818(extra)S 4047(revisions)S 4439(is)S 4537(small.)S 4840(With)S 3096 V 720(delta)S 950(storage,)S 1299(the)S 1457(luxury)S 1753(of)S 1871(keeping)S 2222(multiple)S 2591(revisions)S 2987(online)S 3272(is)S 3374(certainly)S 3758(a)S 3802 H (f)show 10 -.5 mul h (f)show 10 R 3863(ordable.)S 4252(In)S 4370(fact,)S 4579(introducing)S 3276 V 720(a)S 803(system)S 1120(with)S 1337(delta)S 1571(storage)S 1899(may)S 2111(reduce)S 2416(storage)S 2744(requirements,)S 3330(because)S 3685(programmers)S 4257(often)S 4502(save)S 4719(back-up)S 3456 V 720(copies)S 1011(anyway.)S 1411(Since)S 1668(back-up)S 2024(copies)S 2314(are)S 2470(stored)S 2749(much)S 3006(more)S 3246(e)S 3290 H (f)show 10 -.5 mul h (\256)show 10 R 3374(ciently)S 3681(with)S 3894(deltas,)S 4187(introducing)S 4683(a)S 4762(system)S 3636 V 720(such)S 933(as)S 1046(RCS)S 1266(may)S 1468(actually)S 1814(free)S 1998(a)S 2072(considerable)S 2606(amount)S 2936(of)S 3049(space.)S 3996 V 10 B 720(7.)S 855(Survey)S 1185(of)S 1298(Version)S 1661(Control)S 2024(Tools)S 4212 V 10 R 970(The)S 1159(need)S 1381(to)S 1493(keep)S 1715(back-up)S 2070(copies)S 2359(of)S 2477(software)S 2855(arose)S 3100(when)S 3351(programs)S 3763(and)S 3942(data)S 4143(were)S 4371(no)S 4506(longer)S 4796(stored)S 4392 V 720(on)S 861(paper)S 1123(media,)S 1433(but)S 1602(were)S 1836(entered)S 2170(from)S 2405(terminals)S 2818(and)S 3003(stored)S 3288(on)S 3428(disk.)S 3690(Back-up)S 4068(copies)S 4363(are)S 4524(desirable)S 4924(for)S 4572 V 720(reliability,)S 1166(and)S 1342(many)S 1596(modern)S 1934(editors)S 2239(automatically)S 2816(save)S 3026(a)S 3103(back-up)S 3457(copy)S 3684(for)S 3833(every)S 4087(\256le)S 4248(touched.)S 4652(This)S 4863(stra-)S 4752 V 720(tegy)S 928(is)S 1031(valuable)S 1405(for)S 1557(short-term)S 2009(back-ups,)S 2430(but)S 2593(not)S 2756(suitable)S 3102(for)S 3253(long-term)S 3682(version)S 4011(control,)S 4354(since)S 4594(an)S 4723(existing)S 4932 V 720(back-up)S 1071(copy)S 1295(is)S 1392(overwritten)S 1882(whenever)S 2299(the)S 2451(corresponding)S 3052(\256le)S 3210(is)S 3307(edited.)S 5148 V 970(Tape)S 1217(archives)S 1597(are)S 1766(suitable)S 2125(for)S 2289(long-term,)S 2756(o)S 2806 H (f)show 10 -.5 mul h (\257)show 10 R 2890(ine)S 3060(storage.)S 3451(If)S 3565(all)S 3713(changed)S 4093(\256les)S 4308(are)S 4477(dumped)S 4847(on)S 4996(a)S 5328 V 720(back-up)S 1073(tape)S 1271(once)S 1491(per)S 1650(day,)S 1851(old)S 2010(revisions)S 2402(remain)S 2710(accessible.)S 3200(However,)S 3621(tape)S 3818(archives)S 4181(are)S 4333(unsatisfactory)S 4924(for)S 5508 V 720(version)S 1049(control)S 1367(in)S 1480(several)S 1797(ways.)S 2092(First,)S 2337(backing)S 2689(up)S 2825(the)S 2983(\256le)S 3147(system)S 3461(every)S 3718(24)S 3854(hours)S 4112(does)S 4331(not)S 4495(capture)S 4824(inter-)S 5688 V 720(mediate)S 1078(revisions.)S 1536(Secondly,)S 1975(the)S 2139(old)S 2308(revisions)S 2710(are)S 2872(not)S 3041(online,)S 3357(and)S 3542(accessing)S 3965(them)S 4206(is)S 4314(tedious)S 4644(and)S 4829(time-)S 5868 V 720(consuming.)S 1248(In)S 1365(particular,)S 1806(it)S 1896(is)S 1997(impractical)S 2480(to)S 2592(compare)S 2969(several)S 3285(old)S 3447(revisions)S 3843(of)S 3961(a)S 4040(group,)S 4333(because)S 4683(that)S 4868(may)S 6048 V 720(require)S 1037(mounting)S 1456(and)S 1635(searching)S 2052(several)S 2369(tapes.)S 2664(Tape)S 2898(archives)S 3265(are)S 3421(important)S 3845(fail-safe)S 4206(tools)S 4436(in)S 4549(the)S 4706(event)S 4957(of)S 6228 V 720(catastrophic)S 1240(disk)S 1445(failures)S 1782(or)S 1903(accidental)S 2345(deletions,)S 2769(but)S 2935(they)S 3145(are)S 3304(ill-suited)S 3698(for)S 3852(version)S 4184(control.)S 4560(Conversely,)S 6408 V 720(version)S 1044(control)S 1357(tools)S 1582(do)S 1712(not)S 1870(obviate)S 2194(the)S 2346(need)S 2564(for)S 2710(tape)S 2906(archives.)S 6624 V 970(A)S 1076(natural)S 1387(technique)S 1809(for)S 1959(keeping)S 2309(several)S 2625(old)S 2787(revisions)S 3182(online)S 3466(is)S 3567(to)S 3679(never)S 3934(delete)S 4206(a)S 4285(\256le.)S 4503(Editing)S 4833(a)S 4912(\256le)S 6804 V 720(simply)S 1036(creates)S 1355(a)S 1442(new)S 1651(\256le)S 1822(with)S 2043(the)S 2208(same)S 2456(name,)S 2740(but)S 2911(with)S 3132(a)S 3218(di)S 3296 H (f)show 10 -.5 mul h (f)show 10 R 3357(erent)S 3598(sequence)S 4005(number.)S 4407(This)S 4627(technique,)S 6984 V 720(available)S 1119(as)S 1241(an)S 1374(option)S 1669(in)S 1786(DEC's)S 2097(VMS)S 2353(operating)S 2769(system,)S 3111(turns)S 3350(out)S 3518(to)S 3636(be)S 3770(inadequate)S 4242(for)S 4398(version)S 4732(control.)S 7164 V 720(First,)S 970(it)S 1067(is)S 1174(prohibitively)S 1731(expensive)S 2170(in)S 2288(terms)S 2550(of)S 2673(storage)S 3001(costs,)S 3266(especially)S 3705(since)S 3950(no)S 4090(data)S 4296(compression)S 4841(tech-)S 7344 V 720(niques)S 1016(are)S 1172(employed.)S 1656(Secondly,)S 2088(indiscriminately)S 2773(storing)S 3086(every)S 3342(change)S 3659(produces)S 4054(too)S 4217(many)S 4474(revisions,)S 4896(and)S 7920 V EP %%Page: 16 17 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2767(- 16 -)S 900 V 720(programmers)S 1289(have)S 1514(di)S 1592 H (f)show 10 -.5 mul h (\256)show 10 R 1676(culties)S 1974(distinguishing)S 2579(them.)S 2871(The)S 3063(proliferation)S 3599(of)S 3718(revisions)S 4115(forces)S 4394(programmers)S 4962(to)S 1080 V 720(spend)S 989(much)S 1247(time)S 1461(on)S 1597(\256nding)S 1917(and)S 2097(deleting)S 2455(useless)S 2774(\256les.)S 3032(Thirdly,)S 3393(most)S 3624(of)S 3743(the)S 3902(support)S 4239(functions)S 4648(like)S 4835(lock-)S 1260 V 720(ing,)S 903(logging,)S 1264(revision)S 1616(selection,)S 2026(and)S 2200(identi\256cation)S 2758(described)S 3170(in)S 3278(this)S 3453(paper)S 3704(are)S 3855(not)S 4013(available.)S 1476 V 970(An)S 1122(alternative)S 1573(approach)S 1968(is)S 2065(to)S 2173(separate)S 2529(editing)S 2837(from)S 3061(revision)S 3414(control.)S 3783(The)S 3969(user)S 4166(may)S 4369(repeatedly)S 4815(edit)S 4996(a)S 1656 V 720(given)S 985(revision,)S 1374(until)S 1600(freezing)S 1968(it)S 2066(with)S 2286(an)S 2422(explicit)S 2764(command.)S 3255(Once)S 3507(a)S 3593(revision)S 3957(is)S 4066(frozen,)S 4387(it)S 4485(is)S 4594(stored)S 4880(per-)S 1836 V 720(manently)S 1122(and)S 1296(can)S 1464(no)S 1594(longer)S 1879(be)S 2003(modi\256ed.)S 2445(\(In)S 2592(RCS,)S 2838(freezing)S 3195(a)S 3270(revisions)S 3662(is)S 3760(done)S 3985(with)S 10 I 4194(ci)S 10 R 4266(.\))S 4385(Editing)S 4711(a)S 4786(frozen)S 2016 V 720(revision)S 1073(implicitly)S 1494(creates)S 1801(a)S 1876(new)S 2073(one,)S 2273(which)S 2548(can)S 2717(again)S 2964(be)S 3089(changed)S 3451(repeatedly)S 3896(until)S 4110(it)S 4196(is)S 4293(frozen)S 4577(itself.)S 4862(This)S 2196 V 720(approach)S 1123(saves)S 1377(exactly)S 1703(those)S 1952(revisions)S 2352(that)S 2541(the)S 2702(user)S 2907(considers)S 3323(important,)S 3776(and)S 3959(keeps)S 4225(the)S 4386(number)S 4730(of)S 4852(revi-)S 2376 V 720(sions)S 969(manageable.)S 1543(IBM's)S 1847(CLEAR/CASTER)S 2326 V 2587(7)S 2376 V 2637(,)S 2705(AT&T's)S 3092(SCCS)S 2326 V 3338(3)S 2376 V 3388(,)S 3456(CMU's)S 3799(SDC)S 2326 V 3994(8)S 2376 V 4087(and)S 4274(DEC's)S 4589(CMS)S 2326 V 4801(9)S 2376 V 4851(,)S 4919(are)S 2556 V 720(examples)S 1142(of)S 1270(version)S 1609(control)S 1937(systems)S 2299(using)S 2561(this)S 2751(approach.)S 3216(CLEAR/CASTER)S 4001(maintains)S 4435(a)S 4524(data)S 4735(base)S 4957(of)S 2736 V 720(programs,)S 1163(speci\256cations,)S 1773(documentation)S 2407(and)S 2591(messages,)S 3033(using)S 3290(deltas.)S 3618(Its)S 3758(goal)S 3970(is)S 4077(to)S 4195(provide)S 4540(control)S 4863(over)S 2916 V 720(the)S 873(development)S 1420(process)S 1750(from)S 1975(a)S 2050(management)S 2591(viewpoint.)S 3077(SCCS)S 3354(stores)S 3618(multiple)S 3983(revisions)S 4375(of)S 4489(source)S 4780(text)S 4962(in)S 3096 V 720(an)S 861(ancestral)S 1262(tree,)S 1483(records)S 1823(a)S 1913(log)S 2087(entry)S 2338(for)S 2500(each)S 2728(revision,)S 3121(provides)S 3511(access)S 3811(control,)S 4165(and)S 4355(has)S 4534(facilities)S 4924(for)S 3276 V 720(uniquely)S 1100(identifying)S 1569(each)S 1781(revision.)S 2188(An)S 2340(e)S 2384 H (f)show 10 -.5 mul h (\256)show 10 R 2468(cient)S 2692(delta)S 2916(technique)S 3334(reduces)S 3668(the)S 3820(space)S 4072(consumed)S 4508(by)S 4639(each)S 4852(revi-)S 3456 V 720(sion)S 919(group.)S 1239(SDC)S 1466(is)S 1565(much)S 1819(simpler)S 2151(than)S 2355(SCCS)S 2633(because)S 2980(it)S 3068(stores)S 3333(not)S 3493(more)S 3730(than)S 3934(two)S 4116(revisions.)S 4563(However,)S 4984(it)S 3636 V 720(maintains)S 1140(a)S 1215(complete)S 1612(log)S 1771(for)S 1918(all)S 2049(old)S 2208(revisions,)S 2625(some)S 2867(of)S 2981(which)S 3256(may)S 3459(be)S 3584(on)S 3715(back-up)S 4067(tape.)S 4319(CMS,)S 4587(like)S 4769(SCCS,)S 3816 V 720(manages)S 1099(tree-structured)S 1710(revision)S 2062(groups,)S 2389(but)S 2547(o)S 2597 H (f)show 10 -.5 mul h (f)show 10 R 2658(ers)S 2804(no)S 2934(identi\256cation)S 3492(mechanism.)S 4032 V 970(Tools)S 1228(for)S 1374(dealing)S 1698(with)S 1906(con\256gurations)S 2508(are)S 2659(still)S 2841(in)S 2950(a)S 3025(state)S 3239(of)S 3353(\257ux.)S 3595(SCCS,)S 3897(SDC)S 4123(and)S 4298(CMS)S 4541(can)S 4710(be)S 4835(com-)S 4212 V 720(bined)S 988(with)S 1211(MAKE)S 1550(or)S 1678(MAKE-like)S 2200(programs.)S 2677(Since)S 2944(\257exible)S 3289(selection)S 3689(rules)S 3928(are)S 4094(missing)S 4451(from)S 4690(all)S 4835(these)S 4392 V 720(tools,)S 986(it)S 1088(is)S 1201(sometimes)S 1675(di)S 1753 H (f)show 10 -.5 mul h (\256)show 10 R 1837(cult)S 2033(to)S 2157(specify)S 2491(precisely)S 2897(which)S 3187(revision)S 3555(of)S 3685(each)S 3914(group)S 4194(should)S 4508(be)S 4649(passed)S 4962(to)S 4572 V 720(MAKE)S 1055(for)S 1211(building)S 1585(a)S 1669(desired)S 1997(con\256guration.)S 2625(The)S 2820(Xerox)S 3109(Cedar)S 3387(system)S 4522 V 3665(10)S 4572 V 3805(provides)S 4189(a)S 4273(`System)S 4641(Modeller')S 4752 V 720(that)S 903(can)S 1074(rebuild)S 1390(a)S 1467(con\256guration)S 2033(from)S 2260(an)S 2387(arbitrary)S 2763(set)S 2907(of)S 3023(module)S 3356(revisions.)S 3806(The)S 3995(revisions)S 4390(of)S 4507(a)S 4585(module)S 4919(are)S 4932 V 720(only)S 935(distinguished)S 1506(by)S 1643(creation)S 2001(time,)S 2241(and)S 2422(there)S 2658(is)S 2762(no)S 2899(tool)S 3092(for)S 3245(managing)S 3676(groups.)S 4039(Since)S 4297(the)S 4455(selection)S 4846(rules)S 5112 V 720(are)S 871(primitive,)S 1293(the)S 1445(System)S 1770(Modeller)S 2166(appears)S 2500(to)S 2608(be)S 2732(somewhat)S 3167(tedious)S 3486(to)S 3594(use.)S 3812(Apollo's)S 4192(DSEE)S 5062 V 4442(5)S 5112 V 4522(is)S 4620(a)S 4695(sophisti-)S 5292 V 720(cated)S 961(software)S 1335(engineering)S 1837(environment.)S 2428(It)S 2520(manages)S 2900(revision)S 3253(groups)S 3556(in)S 3665(a)S 3740(way)S 3937(similar)S 4245(to)S 4353(SCCS)S 4629(and)S 4803(CMS.)S 5472 V 720(Con\256gurations)S 1359(are)S 1524(built)S 1752(using)S 2013(`con\256guration)S 2624(threads'.)S 3045(A)S 3162(con\256guration)S 3740(thread)S 4034(states)S 4301(which)S 4590(revision)S 4957(of)S 5652 V 720(each)S 947(group)S 1225(named)S 1536(in)S 1659(a)S 1748(con\256guration)S 2326(should)S 2638(be)S 2777(chosen.)S 3154(A)S 3271(con\256guration)S 3849(thread)S 4142(may)S 4358(contain)S 4696(dynamic)S 5832 V 720(speci\256ers)S 1141(\(e.g.,)S 1387(`choose)S 1741(the)S 1908(revisions)S 2314(I)S 2392(am)S 2559(currently)S 2964(working)S 3342(on,)S 3512(and)S 3701(the)S 3868(most)S 4108(recent)S 4396(revisions)S 4802(other-)S 6012 V 720(wise'\),)S 1030(which)S 1310(are)S 1467(bound)S 1753(automatically)S 2332(at)S 2439(build)S 2680(time.)S 2948(It)S 3044(also)S 3240(provides)S 3619(a)S 3698(noti\256cation)S 4189(mechanism)S 4679(for)S 4830(alert-)S 6192 V 720(ing)S 878(maintainers)S 1374(about)S 1626(the)S 1778(need)S 1996(to)S 2104(rebuild)S 2417(a)S 2491(system)S 2799(after)S 3011(a)S 3085(change.)S 6408 V 970(RCS)S 1195(is)S 1298(based)S 1561(on)S 1697(a)S 1777(general)S 2106(model)S 2392(for)S 2544(describing)S 2996(multi-version/multi-con\256guration)S 4377(systems)S 6358 V 4694(11)S 6408 V 4794(.)S 4885(The)S 6588 V 720(model)S 1017(describes)S 1435(systems)S 1798(using)S 2061(AND/OR)S 2490(graphs,)S 2827(where)S 3116(AND)S 3378(nodes)S 3657(represent)S 4068(con\256gurations,)S 4711(and)S 4901(OR)S 6768 V 720(nodes)S 1012(represent)S 1436(version)S 1789(groups.)S 2175(The)S 2389(model)S 2698(gives)S 2968(rise)S 3171(to)S 3308(a)S 3411(suit)S 3615(of)S 3757(selection)S 4171(rules)S 4425(for)S 4601(composing)S 6948 V 720(con\256gurations,)S 1354(almost)S 1658(all)S 1795(of)S 1915(which)S 2196(are)S 2354(implemented)S 2913(in)S 3028(RCS.)S 3310(The)S 3501(revisions)S 3898(selected)S 4255(by)S 4391(RCS)S 4617(are)S 4774(passed)S 7128 V 720(to)S 831(MAKE)S 1158(for)S 1307(con\256guration)S 1873(building.)S 2295(Revision)S 2684(group)S 2950(management)S 3493(is)S 3593(modelled)S 3999(after)S 4215(SCCS.)S 4550(RCS)S 4774(retains)S 7308 V 720(SCCS's)S 1080(best)S 1283(features,)S 1665(but)S 1835(o)S 1885 H (f)show 10 -.5 mul h (f)show 10 R 1946(ers)S 2104(a)S 2190(signi\256cantly)S 2727(simpler)S 3068(user)S 3275(interface,)S 3689(\257exible)S 4030(selection)S 4426(rules,)S 4686(adequate)S 7920 V EP %%Page: 17 18 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 580 V 2767(- 17 -)S 900 V 720(integration)S 1190(with)S 1405(MAKE)S 1736(and)S 1917(improved)S 2337(identi\256cation.)S 2957(A)S 3066(detailed)S 3419(comparison)S 3922(of)S 4042(RCS)S 4270(and)S 4452(SCCS)S 4736(appears)S 1080 V 720(in)S 828(Reference)S 1261(4.)S 1296 V 970(An)S 1126(important)S 1549(component)S 2027(of)S 2144(all)S 2278(revision)S 2634(control)S 2951(systems)S 3303(is)S 3405(a)S 3484(program)S 3857(for)S 4008(computing)S 4471(deltas.)S 4794(SCCS)S 1476 V 720(and)S 896(RCS)S 1118(use)S 1283(the)S 1437(program)S 10 I 1807(diff)S 1426 V 10 R 1941(2)S 1476 V 1991(,)S 2048(which)S 2324(\256rst)S 2512(computes)S 2927(the)S 3081(longest)S 3402(common)S 3784(substring)S 4183(of)S 4298(two)S 4479(revisions,)S 4896(and)S 1656 V 720(then)S 927(produces)S 1322(the)S 1479(delta)S 1708(from)S 1937(that)S 2122(substring.)S 2579(The)S 2769(delta)S 2998(is)S 3100(simply)S 3408(an)S 3537(edit)S 3722(script)S 3979(consisting)S 4420(of)S 4538(deletion)S 4896(and)S 1836 V 720(insertion)S 1100(commands)S 1563(that)S 1743(generate)S 2110(one)S 2284(revision)S 2636(from)S 2860(the)S 3012(other.)S 2052 V 970(A)S 1078(delta)S 1308(based)S 1571(on)S 1707(a)S 1787(longest)S 2112(common)S 2498(substring)S 2901(is)S 3004(not)S 3168(necessarily)S 3648(minimal,)S 4044(because)S 4396(it)S 4489(does)S 4709(not)S 4874(take)S 2232 V 720(advantage)S 1156(of)S 1271(crossing)S 1636(block)S 1890(moves.)S 2238(Crossing)S 2626(block)S 2880(moves)S 3173(arise)S 3392(if)S 3484(two)S 3665(or)S 3779(more)S 4015(blocks)S 4307(of)S 4421(lines)S 4641(\(e.g.,)S 4874(pro-)S 2412 V 720(cedures\))S 1090(appear)S 1388(in)S 1499(a)S 1576(di)S 1654 H (f)show 10 -.5 mul h (f)show 10 R 1715(erent)S 1947(order)S 2190(in)S 2301(two)S 2484(revisions.)S 2933(An)S 3088(edit)S 3271(script)S 3526(derived)S 3858(from)S 4085(a)S 4162(longest)S 4484(common)S 4868(sub-)S 2592 V 720(string)S 987(\256rst)S 1182(deletes)S 1498(the)S 1659(shorter)S 1975(of)S 2097(the)S 2258(two)S 2447(blocks,)S 2772(and)S 2955(then)S 3166(reinserts)S 3543(it.)S 3693(Heckel)S 2542 V 3975(12)S 2592 V 4114(proposed)S 4519(an)S 4651(algorithm)S 2772 V 720(for)S 884(detecting)S 1298(block)S 1568(moves,)S 1902(but)S 2078(since)S 2331(the)S 2501(algorithm)S 2938(is)S 3053(based)S 3328(on)S 3476(heuristics,)S 3932(there)S 4179(are)S 4348(conditions)S 4813(under)S 2952 V 720(which)S 997(the)S 1152(generated)S 1572(delta)S 1799(is)S 1899(far)S 2042(from)S 2269(minimal.)S 2691(DSEE)S 2974(uses)S 3179(this)S 3357(algorithm)S 3779(combined)S 4205(with)S 4415(blank)S 4669(compres-)S 3132 V 720(sion,)S 965(apparently)S 1439(with)S 1670(satisfactory)S 2183(overall)S 2514(results.)S 2884(A)S 3010(new)S 3230(algorithm)S 3673(that)S 3877(is)S 3998(guaranteed)S 4489(to)S 4621(produce)S 4996(a)S 3312 V 720(minimal)S 1085(delta)S 1310(based)S 1568(on)S 1699(block)S 1951(moves)S 2242(appears)S 2576(in)S 2684(Reference)S 3117(13.)S 3302(A)S 3404(future)S 3672(release)S 3978(of)S 4091(RCS)S 4311(will)S 4497(use)S 4660(this)S 4835(algo-)S 3492 V 720(rithm.)S 3708 V 10 I 970(Acknowledgements)S 10 R 1735(:)S 1818(Many)S 2106(people)S 2427(have)S 2670(helped)S 2991(make)S 3262(RCS)S 3507(a)S 3606(success)S 3960(by)S 4115(contributed)S 4626(criticisms,)S 3888 V 720(suggestions,)S 1246(corrections,)S 1748(and)S 1926(even)S 2148(whole)S 2426(new)S 2626(commands)S 3093(\(including)S 3538(manual)S 3866(pages\).)S 4214(The)S 4402(list)S 4558(of)S 4674(people)S 4973(is)S 4068 V 720(too)S 878(long)S 1086(to)S 1194(be)S 1318(reproduced)S 1796(here,)S 2022(but)S 2180(my)S 2338(sincere)S 2650(thanks)S 2941(for)S 3087(their)S 3300(help)S 3502(and)S 3676(goodwill)S 4062(goes)S 4275(to)S 4383(all)S 4513(of)S 4626(them.)S 4488 V 10 B 720(Appendix:)S 1201(Synopsis)S 1605(of)S 1718(RCS)S 1948(Operations)S 4680 V 10 I 720(ci)S 10 B 822(\261)S 902(check)S 1176(in)S 1290(revisions)S 4800 V 10 I 970(Ci)S 10 R 1102(stores)S 1372(the)S 1531(contents)S 1901(of)S 2021(a)S 2102(working)S 2472(\256le)S 2637(into)S 2830(the)S 2989(corresponding)S 3598(RCS)S 3826(\256le)S 3992(as)S 4113(a)S 4195(new)S 4399(revision.)S 4814(If)S 4918(the)S 4920 V 970(RCS)S 1191(\256le)S 1350(doesn't)S 1675(exist,)S 10 I 1920(ci)S 10 R 2023(creates)S 2330(it.)S 10 I 2472(Ci)S 10 R 2598(removes)S 2967(the)S 3120(working)S 3484(\256le,)S 3668(unless)S 3949(one)S 4124(of)S 4238(the)S 4391(options)S 10 I 4717(\261u)S 10 R 4848(or)S 10 I 4962(\261l)S 5040 V 10 R 970(is)S 1071(present.)S 1448(For)S 1621(each)S 1837(check-in,)S 10 I 2239(ci)S 10 R 2345(asks)S 2551(for)S 2701(a)S 2779(commentary)S 3312(describing)S 3763(the)S 3920(changes)S 4276(relative)S 4610(to)S 4723(the)S 4880(pre-)S 5160 V 970(vious)S 1217(revision.)S 5400 V 10 I 970(Ci)S 10 R 1111(assigns)S 1446(the)S 1614(revision)S 1982(number)S 2333(given)S 2601(by)S 2747(the)S 10 I 2915(\261r)S 10 R 3050(option;)S 3380(if)S 3487(that)S 3683(option)S 3985(is)S 4098(missing,)S 4481(it)S 4583(derives)S 4918(the)S 5520 V 970(number)S 1313(from)S 1545(the)S 1705(lock)S 1915(held)S 2125(by)S 2263(the)S 2423(user;)S 2655(if)S 2754(there)S 2991(is)S 3096(no)S 3234(lock)S 3444(and)S 3625(locking)S 3962(is)S 4066(not)S 4231(strict,)S 10 I 4493(ci)S 10 R 4602(increments)S 5640 V 970(the)S 1136(number)S 1485(of)S 1612(the)S 1778(latest)S 2033(revision)S 2399(on)S 2544(the)S 2711(trunk.)S 3022(A)S 3139(side)S 3345(branch)S 3661(can)S 3844(only)S 4067(be)S 4206(started)S 4517(by)S 4662(explicitly)S 5760 V 970(specifying)S 1416(its)S 1541(number)S 1876(with)S 2084(the)S 10 I 2236(\261r)S 10 R 2355(option)S 2641(during)S 2932(check-in.)S 6000 V 10 I 970(Ci)S 10 R 1106(also)S 1308(determines)S 1787(whether)S 2149(the)S 2312(revision)S 2675(to)S 2794(be)S 2929(checked)S 3296(in)S 3415(is)S 3523(di)S 3601 H (f)show 10 -.5 mul h (f)show 10 R 3662(erent)S 3902(from)S 4137(the)S 4300(previous)S 4685(one,)S 4896(and)S 6120 V 970(asks)S 1194(whether)S 1567(to)S 1697(proceed)S 2064(if)S 2177(not.)S 2412(This)S 2642(facility)S 2977(simpli\256es)S 3419(check-in)S 3814(operations)S 4281(for)S 4448(large)S 4698(systems,)S 6240 V 970(because)S 1315(one)S 1489(need)S 1707(not)S 1865(remember)S 2299(which)S 2573(\256les)S 2770(were)S 2993(changed.)S 6480 V 970(The)S 1161(option)S 10 I 1453(\261k)S 10 R 1583(searches)S 1956(the)S 2114(checked)S 2476(in)S 2590(\256le)S 2754(for)S 2906(identi\256cation)S 3470(markers)S 3827(containing)S 4285(the)S 4443(attributes)S 4852(revi-)S 6600 V 970(sion)S 1169(number,)S 1530(check-in)S 1904(date,)S 2126(author)S 2412(and)S 2587(state,)S 2826(and)S 3001(assigns)S 3321(these)S 3557(to)S 3666(the)S 3819(new)S 4016(revision)S 4369(rather)S 4632(than)S 4835(com-)S 6720 V 970(puting)S 1275(them.)S 1579(This)S 1806(option)S 2111(is)S 2227(useful)S 2520(for)S 2685(software)S 3077(distribution:)S 3616(Recipients)S 4087(of)S 4219(distributed)S 4697(software)S 6840 V 970(using)S 1227(RCS)S 1457(should)S 1764(check)S 2036(in)S 2154(updates)S 2499(with)S 2717(the)S 10 I 2879(\261k)S 10 R 3013(option.)S 3364(This)S 3581(convention)S 4064(guarantees)S 4529(that)S 4718(revision)S 6960 V 970(numbers,)S 1369(check-in)S 1742(dates,)S 2002(etc.,)S 2198(are)S 2349(the)S 2501(same)S 2736(at)S 2838(all)S 2968(sites.)S 7116 V 10 I 720(co)S 10 B 844(\261)S 924(check)S 1198(out)S 1367(revisions)S 7236 V 10 I 970(Co)S 10 R 1136(retrieves)S 1528(revisions)S 1938(according)S 2380(to)S 2507(revision)S 2878(number,)S 3257(date,)S 3497(author)S 3801(and)S 3994(state)S 4226(attributes.)S 4702(It)S 4813(either)S 7920 V EP %%Page: 18 19 BP /slant 0 def /height 1.000000 def 10 R 10 R 40 V 0(-)S 520 V 2767(- 18 -)S 840 V 970(places)S 1251(the)S 1405(revision)S 1759(into)S 1947(the)S 2101(working)S 2465(\256le,)S 2649(or)S 2763(prints)S 3022(it)S 3109(on)S 3240(the)S 3393(standard)S 3762(output.)S 10 I 4104(Co)S 10 R 4252(always)S 4560(expands)S 4918(the)S 960 V 970(identi\256cation)S 1528(markers.)S 1116 V 10 I 720(ident)S 10 B 950(\261)S 1030(extract)S 1358(identi\256cation)S 1950(markers)S 1236 V 10 I 970(Ident)S 10 R 1205(extracts)S 1545(the)S 1697(identi\256cation)S 2255(markers)S 2606(expanded)S 3018(by)S 10 I 3148(co)S 10 R 3272(from)S 3496(any)S 3670(\256le)S 3828(and)S 4002(prints)S 4260(them.)S 1392 V 10 I 720(rcs)S 10 B 872(\261)S 952(change)S 1282(RCS)S 1512(\256le)S 1670(attributes)S 1512 V 10 I 970(Rcs)S 10 R 1144(is)S 1241(an)S 1365(administrative)S 1967(operation)S 2374(that)S 2554(changes)S 2905(access)S 3189(lists,)S 3406(locks,)S 3673(unlocks,)S 4040(breaks)S 4331(locks,)S 4598(toggles)S 4918(the)S 1632 V 970(strict-locking)S 1541(feature,)S 1880(sets)S 2068(state)S 2289(attributes)S 2699(and)S 2881(symbolic)S 3286(revision)S 3646(numbers,)S 4053(changes)S 4412(the)S 4571(description,)S 1752 V 970(and)S 1144(deletes)S 1451(revisions.)S 1897(A)S 1999(revision)S 2351(can)S 2519(only)S 2727(be)S 2851(deleted)S 3169(if)S 3260(it)S 3346(is)S 3443(not)S 3601(the)S 3753(fork)S 3949(of)S 4062(a)S 4136(side)S 4327(branch.)S 1908 V 10 I 720(rcsclean)S 10 B 1088(\261)S 1168(clean)S 1420(working)S 1806(directory)S 2028 V 10 I 970(Rcsclean)S 10 R 1360(removes)S 1728(working)S 2091(\256les)S 2288(that)S 2468(were)S 2691(checked)S 3047(out)S 3205(but)S 3363(never)S 3614(changed.*)S 2184 V 10 I 720(rcsdiff)S 10 B 1006(\261)S 1086(compare)S 1487(revisions)S 2304 V 10 I 970(Rcsdiff)S 10 R 1289(compares)S 1712(two)S 1903(revisions)S 2305(and)S 2490(prints)S 2759(their)S 2983(di)S 3061 H (f)show 10 -.5 mul h (f)show 10 R 3122(erence,)S 3447(using)S 3705(the)S 3868(UNIX)S 4158(tool)S 10 I 4355(diff)S 10 R 4489(.)S 4585(One)S 4793(of)S 4918(the)S 2424 V 970(revisions)S 1361(compared)S 1784(may)S 1986(be)S 2110(checked)S 2466(out.)S 2679(This)S 2887(command)S 3311(is)S 3408(useful)S 3682(for)S 3828(\256nding)S 4142(out)S 4300(about)S 4552(changes.)S 2580 V 10 I 720(rcsfreeze)S 10 B 1110(\261)S 1190(freeze)S 1473(a)S 1553(con\256guration)S 2700 V 10 I 970(Rcsfreeze)S 10 R 1394(assigns)S 1726(the)S 1891(same)S 2139(symbolic)S 2549(revision)S 2914(number)S 3262(to)S 3383(a)S 3470(given)S 3735(revision)S 4100(in)S 4221(all)S 4364(RCS)S 4597(\256les.)S 4862(This)S 2820 V 970(command)S 1394(is)S 1491(useful)S 1765(for)S 1911(accurately)S 2350(recording)S 2762(a)S 2836(con\256guration.*)S 2976 V 10 I 720(rcsmerge)S 10 B 1121(\261)S 1201(merge)S 1496(revisions)S 3096 V 10 I 970(Rcsmerge)S 10 R 1400(merges)S 1725(two)S 1912(revisions,)S 10 I 2335(rev1)S 10 R 2549(and)S 10 I 2730(rev2)S 10 R 2907(,)S 2969(with)S 3184(respect)S 3504(to)S 3620(a)S 3702(common)S 4090(ancestor.)S 4515(A)S 4625(3-way)S 4912(\256le)S 3216 V 970(comparison)S 1472(determines)S 1946(the)S 2104(segments)S 2512(of)S 2631(lines)S 2856(that)S 3042(are)S 3199(\(a\))S 3345(the)S 3503(same)S 3744(in)S 3858(all)S 3994(three)S 4228(revisions,)S 4649(or)S 4767(\(b\))S 4918(the)S 3336 V 970(same)S 1216(in)S 1336(2)S 1428(revisions,)S 1856(or)S 1981(\(c\))S 2133(di)S 2211 H (f)show 10 -.5 mul h (f)show 10 R 2272(erent)S 2513(in)S 2633(all)S 2775(three.)S 3071(For)S 3252(all)S 3394(segments)S 3808(of)S 3933(type)S 4147(\(b\))S 4305(where)S 10 I 4590(rev1)S 10 R 4809(is)S 4918(the)S 3456 V 970(di)S 1048 H (f)show 10 -.5 mul h (f)show 10 R 1109(ering)S 1350(revision,)S 1733(the)S 1891(segment)S 2260(in)S 10 I 2374(rev1)S 10 R 2587(replaces)S 2949(the)S 3107(corresponding)S 3713(segment)S 4081(of)S 10 I 4199(rev2)S 10 R 4376(.)S 4466(Type)S 4706(\(c\))S 4851(indi-)S 3576 V 970(cates)S 1215(an)S 1355(overlapping)S 1878(change,)S 2231(is)S 2344(\257agged)S 2684(as)S 2813(an)S 2953(error,)S 3217(and)S 3408(requires)S 3776(user)S 3989(intervention)S 4519(to)S 4644(select)S 4918(the)S 3696 V 970(correct)S 1276(alternative.)S 3852 V 10 I 720(rlog)S 10 B 917(\261)S 997(read)S 1221(log)S 1379(messages)S 3972 V 10 I 970(Rlog)S 10 R 1189(prints)S 1447(the)S 1599(log)S 1757(messages)S 2164(and)S 2338(other)S 2573(information)S 3075(in)S 3183(an)S 3307(RCS)S 3527(\256le.)S 6962 V 8 Y1 720(333333333333333333)S 7080 V 8 R 820(*)S 900(The)S 8 I 1048(rcsclean)S 8 R 1341(and)S 8 I 1480(rcsfreeze)S 8 R 1790(commands)S 2159(are)S 2279(optional)S 2564(and)S 2703(are)S 2823(not)S 2949(always)S 3194(installed.)S 7920 V EP %%Page: 19 20 BP /slant 0 def /height 1.000000 def 8 R 8 R 40 V 10 R 0(-)S 520 V 2767(- 19 -)S 840 V 10 B 720(References)S 1032 V 10 R 720(1.)S 970(Feldman,)S 1378(Stuart)S 1650(I.,)S 1766(``Make\320A)S 2264(Program)S 2642(for)S 2792(Maintaining)S 3315(Computer)S 3749(Programs,'')S 10 I 4257(Software\320Practice)S 1152 V 970(&)S 1078(Experience)S 10 R 1526(,)S 1581(vol.)S 1764(9,)S 1869(no.)S 2024(3,)S 2129(pp.)S 2284(255-265,)S 2672(March)S 2962(1979.)S 1308 V 720(2.)S 970(Hunt,)S 1229(James)S 1507(W.)S 1660(and)S 1838(McIlroy,)S 2224(M.)S 2372(D.,)S 2528(``An)S 2750(Algorithm)S 3201(for)S 3351(Di)S 3451 H (f)show 10 -.5 mul h (f)show 10 R 3512(erential)S 3846(File)S 4037(Comparison,'')S 4652(41,)S 4812(Com-)S 1428 V 970(puting)S 1256(Science)S 1596(Technical)S 2019(Report,)S 2346(Bell)S 2543(Laboratories,)S 3102(June)S 3315(1976.)S 1584 V 720(3.)S 970(Rochkind,)S 1414(Marc)S 1654(J.,)S 1773(``The)S 2024(Source)S 2331(Code)S 2572(Control)S 2908(System,'')S 10 I 3324(IEEE)S 3570(Transactions)S 4123(on)S 4254(Software)S 4641(Engineer-)S 1704 V 970(ing)S 10 R 1098(,)S 1153(vol.)S 1336(SE-1,)S 1591(no.)S 1746(4,)S 1851(pp.)S 2006(364-370,)S 2394(Dec.)S 2609(1975.)S 1860 V 720(4.)S 970(Tichy,)S 1275(Walter)S 1593(F.,)S 1746(``Design,)S 2168(Implementation,)S 2874(and)S 3066(Evaluation)S 3547(of)S 3678(a)S 3770(Revision)S 4174(Control)S 4528(System,'')S 4962(in)S 1980 V 10 I 970(Proceedings)S 1503(of)S 1615(the)S 1771(6th)S 1933(International)S 2495(Conference)S 2989(on)S 3123(Software)S 3512(Engineering)S 10 R 4006(,)S 4064(pp.)S 4222(58-67,)S 4513(ACM,)S 4799(IEEE,)S 2100 V 970(IPS,)S 1170(NBS,)S 1420(September)S 1877(1982.)S 2256 V 720(5.)S 970(Leblang,)S 1357(David)S 1636(B.)S 1763(and)S 1942(Chase,)S 2247(Robert)S 2555(P.,)S 2697(``Computer-Aided)S 3476(Software)S 3872(Engineering)S 4396(in)S 4510(a)S 4590(Distributed)S 2376 V 970(Workstation)S 1505(Environment,'')S 10 I 2159(SIGPLAN)S 2600(Notices)S 10 R 2900(,)S 2966(vol.)S 3160(19,)S 3325(no.)S 3490(5,)S 3605(pp.)S 3770(104-112,)S 4168(May)S 4391(1984.)S 4686(Proceed-)S 2496 V 970(ings)S 1184(of)S 1314(the)S 1484(ACM)S 1760(SIGSOFT/SIGPLAN)S 2664(Software)S 3072(Engineering)S 3608(Symposium)S 4135(on)S 4283(Practical)S 4680(Software)S 2616 V 970(Development)S 1538(Environments.)S 2772 V 720(6.)S 970(Glasser,)S 1325(Alan)S 1551(L.,)S 1694(``The)S 1947(Evolution)S 2374(of)S 2489(a)S 2565(Source)S 2874(Code)S 3117(Control)S 3455(System,'')S 10 I 3873(Software)S 4261(Engineering)S 4787(Notes)S 10 R 5015(,)S 2892 V 970(vol.)S 1180(3,)S 1312(no.)S 1494(5,)S 1626(pp.)S 1808(122-125,)S 2223(Nov.)S 2477(1978.)S 2789(Proceedings)S 3334(of)S 3474(the)S 3653(Software)S 4069(Quality)S 4425(and)S 4625(Assurance)S 3012 V 970(Workshop.)S 3168 V 720(7.)S 970(Brown,)S 1297(H.B.,)S 1541(``The)S 1792(Clear/Caster)S 2321(System,'')S 10 I 2737(Nato)S 2962(Conference)S 3452(on)S 3582(Software)S 3968(Engineering,)S 4517(Rome)S 10 R 4744(,)S 4799(1970.)S 3324 V 720(8.)S 970(Habermann,)S 1493(A.)S 1623(Nico,)S 10 I 1875(A)S 1969(Software)S 2358(Development)S 2918(Control)S 3264(System,)S 10 R 3600(Technical)S 4027(Report,)S 4358(Carnegie-Mellon)S 3444 V 970(University,)S 1447(Department)S 1948(of)S 2061(Computer)S 2491(Science,)S 2856(Jan.)S 3044(1979.)S 3600 V 720(9.)S 970(DEC,)S 10 I 1258(Code)S 1532(Management)S 2116(System,)S 10 R 2481(Digital)S 2823(Equipment)S 3326(Corporation,)S 3898(1982.)S 4217(Document)S 4697(No. EA-)S 3720 V 970(23134-82)S 3876 V 720(10.)S 970(Lampson,)S 1437(Butler)S 1757(W.)S 1946(and)S 2160(Schmidt,)S 2589(Eric)S 2825(E.,)S 3006(``Practical)S 3491(Use)S 3717(of)S 3871(a)S 3986(Polymorphic)S 4574(Applicative)S 3996 V 970(Language,'')S 1491(in)S 10 I 1606(Proceedings)S 2142(of)S 2257(the)S 2416(10th)S 2630(Symposium)S 3121(on)S 3257(Principles)S 3704(of)S 3818(Programming)S 4415(Languages)S 10 R 4854(,)S 4915(pp.)S 4116 V 970(237-255,)S 1358(ACM,)S 1641(January)S 1981(1983.)S 4272 V 720(11.)S 970(Tichy,)S 1260(Walter)S 1563(F.,)S 1701(``A)S 1871(Data)S 2091(Model)S 2385(for)S 2534(Programming)S 3117(Support)S 3467(Environments)S 4061(and)S 4238(its)S 4366(Application,'')S 4962(in)S 4392 V 10 I 970(Automated)S 1438(Tools)S 1696(for)S 1848(Information)S 2361(System)S 2673(Design)S 2991(and)S 3176(Development)S 10 R 3702(,)S 3761(ed.)S 3914(Hans-Jochen)S 4463(Schneider)S 4896(and)S 4512 V 970(Anthony)S 1350(I.)S 1438(Wasserman,)S 1958(North-Holland)S 2576(Publishing)S 3035(Company,)S 3479(Amsterdam,)S 4000(1982.)S 4668 V 720(12.)S 970(Heckel,)S 1328(Paul,)S 1582(``A)S 1771(Technique)S 2243(for)S 2410(Isolating)S 2811(Di)S 2911 H (f)show 10 -.5 mul h (f)show 10 R 2972(erences)S 3321(Between)S 3721(Files,'')S 10 I 4058(Communications)S 4788(of)S 4918(the)S 4788 V 970(ACM)S 10 R 1181(,)S 1236(vol.)S 1419(21,)S 1574(no.)S 1729(4,)S 1834(pp.)S 1989(264-268,)S 2377(April)S 2618(1978.)S 4944 V 720(13.)S 970(Tichy,)S 1270(Walter)S 1583(F.,)S 1731(``The)S 1994(String-to-String)S 2670(Correction)S 3139(Problem)S 3520(with)S 3740(Block)S 4021(Moves,'')S 10 I 4426(ACM)S 4679(Transac-)S 5064 V 970(tions)S 1195(on)S 1325(Computer)S 1755(Systems)S 10 R 2071(,)S 2126(vol.)S 2309(2,)S 2414(no.)S 2569(4,)S 2674(pp.)S 2829(309-321,)S 3217(Nov.)S 3444(1984.)S 7950 V 0(-)S 7950 V EP %%Trailer %%DocumentFonts: Courier Times-Roman Times-Bold Times-Italic Symbol Troff %%Pages: 20