FunctionsofRCS(RevisionControlSystem) RCSmanagessoftwarelibraries.Itgreatlyincreasesprogrammerproductivitybyproviding thefollowingfunctions. 1.RCSstoresandretrievesmultiplerevisionsofprogramandothertext.Thus,onecanmaintainoneormorereleaseswhiledevelopingthenextrelease,withaminimumofspaceoverhead.Changesnolongerdestroytheoriginal--previousrevisionsremainaccessible. a.Maintainseachmoduleasatreeofrevisions. b.Projectlibrariescanbeorganizedcentrally,decentralized,oranywayyoulike. c.RCSworksforanytypeoftext:programs,documentation,memos,papers,graphics, VLSIlayouts,formletters,etc. 2.RCSmaintainsacompletehistoryofchanges.Thus,onecanfindoutwhathappenedtoa moduleeasilyandquickly,withouthavingtocomparesourcelistingsorhavingtotrack downcolleagues. a.RCSperformsautomaticrecordkeeping. b.RCSlogsallchangesautomatically. c.RCSguaranteesprojectcontinuity. 3.RCSmanagesmultiplelinesofdevelopment. 4.RCScanmergemultiplelinesofdevelopment.Thus,whenseveralparallellinesofdevelopmentmustbeconsolidatedintooneline,themergingofchangesisautomatic. 5.RCSflagscodingconflicts.Iftwoormorelinesofdevelopmentmodifythesamesectionof code,RCScanalertprogrammersaboutoverlappingchanges. 6.RCSresolvesaccessconflicts.Whentwoormoreprogrammerswishtomodifythesame revision,RCSalertstheprogrammersandmakessurethatonemodificationwon’twipeout theotherone. 7.RCSprovideshigh-levelretrievalfunctions.Revisionscanberetrievedaccordingtoranges ofrevisionnumbers,symbolicnames,dates,authors,andstates. 8.RCSprovidesreleaseandconfigurationcontrol.Revisionscanbemarkedasreleased,stable, experimental,etc.Configurationsofmodulescanbedescribedsimplyanddirectly. 9.RCSperformsautomaticidentificationofmoduleswithname,revisionnumber,creation time,author,etc.Thus,itisalwayspossibletodeterminewhichrevisionsofwhichmodules makeupagivenconfiguration. 10.Provideshigh-levelmanagementvisibility.Thus,itiseasytotrackthestatusofasoftware project. a.RCSprovidesacompletechangehistory. b.RCSrecordswhodidwhatwhentowhichrevisionofwhichmodule. 11.RCSisfullycompatiblewithexistingsoftwaredevelopmenttools.RCSisunobtrusive--its interfacetothefilesystemissuchthatallyourexistingsoftwaretoolscanbeusedasbefore. 12.RCS’basicuserinterfaceisextremelysimple.Thenoviceneedtolearnonlytwocommands. Itsmoresophisticatedfeatureshavebeentunedtowardsadvancedsoftwaredevelopment environmentsandtheexperiencedsoftwareprofessional. 13.RCSsimplifiessoftwaredistributionifcustomersmaintainsourceswithRCSalso.Thistechniqueassuresproperidentificationofversionsandconfigurations,andtrackingofcustomer modifications.Customermodificationscanbemergedintodistributedversionslocallyorby thedevelopmentgroup. 14.RCSneedslittleextraspacefortherevisions(onlythedifferences).Ifintermediaterevisions aredeleted,thecorrespondingdifferencesarecompressedintotheshortestpossibleform.

-2-15.RCSisimplementedwithreversedeltas.Thismeansthatthelatestrevision,whichisthe onethatisaccessedmostoften,isstoredintact.Allothersareregeneratedfromthelatest onebyapplyingreversedeltas(backwarddifferences).Thisresultsinfastaccesstimeforthe revisionneededmostoften.