Revision Control SystemsOutlineWhat is Revision Control?Simple ExamplesBenefitsDefinitionsSlide 7Setting UpBest PracticesDaily Best PracticesVersion Controls SystemsCVS vs. SubversionGUI ClientsReferencesHomework QuestionsRevision Control Revision Control SystemsSystemsCarmen SerranoCarmen Serrano4/8/084/8/08OutlineOutlineWhat is Revision Control?What is Revision Control?Simple ExamplesSimple ExamplesBenefitsBenefitsDefinitionsDefinitionsBest PracticesBest PracticesVersion Control SystemsVersion Control SystemsClientsClientsWhat is Revision Control?What is Revision Control?““A combination of technologies and A combination of technologies and practices for practices for tracking and controlling tracking and controlling changeschanges to a project’s files, in particular to a project’s files, in particular to source code, documentation, and web to source code, documentation, and web pages.” (Fogel)pages.” (Fogel)Simple ExamplesSimple ExamplesManual versioningManual versioningMyAwesomeGame1.java, MyAwesomeGame2.java, MyAwesomeGame1.java, MyAwesomeGame2.java, MyAwesomeGame3.java…MyAwesomeGame3.java…WikipediaWikipediaMultiple contributors per articleMultiple contributors per articleEdits to article become new versionEdits to article become new versionRetain previous versions of articleRetain previous versions of articleBenefitsBenefitsProductivityProductivityInterdeveloper communicationsInterdeveloper communicationsRelease managementRelease managementBug managementBug managementCode stabilityCode stabilityAttribution and authorization of changesAttribution and authorization of changesExperimental developmentExperimental developmentDefinitionsDefinitionsRepository – stores files under version control and Repository – stores files under version control and information on changes. May be centralized or information on changes. May be centralized or decentralized.decentralized.Checkout – obtaining a local copy from the repository.Checkout – obtaining a local copy from the repository.Commit/check-in – a change to a local file is stored in Commit/check-in – a change to a local file is stored in the repositorythe repositoryWorking copy – local copy of project (user’s private Working copy – local copy of project (user’s private copy)copy)Update – incorporates changes in the repository into Update – incorporates changes in the repository into your working copyyour working copyRevision – a particular version of a file or set of files; Revision – a particular version of a file or set of files; also changeset, a set of changes committed as onealso changeset, a set of changes committed as oneDefinitionsDefinitionsTag – label for a set of files; snapshot of projectTag – label for a set of files; snapshot of projectBranch – a copy of the project undergoing separate Branch – a copy of the project undergoing separate development from the main branch or “trunk”development from the main branch or “trunk”Merge – combining two changes in a file into a new Merge – combining two changes in a file into a new revision; also combining branchesrevision; also combining branchesConflict – when a change to the same part of a file is Conflict – when a change to the same part of a file is made by two users; must be resolved manuallymade by two users; must be resolved manuallyLock – prevents other users from changing a fileLock – prevents other users from changing a fileTwo models: lock-modify-unlock, copy-modify-mergeTwo models: lock-modify-unlock, copy-modify-mergeSetting Up Setting Up Install on server (repository location)Install on server (repository location)Install on user machinesInstall on user machinesOptionally install GUI clientOptionally install GUI clientSet up repository and accessSet up repository and accessBest PracticesBest PracticesVersion all editable informationVersion all editable informationSource code, documentation, texturesSource code, documentation, texturesDon’t include generated filesDon’t include generated filesEx: executablesEx: executablesSome exceptions:Some exceptions:Exported textures and modelsExported textures and modelsExecutable of releaseExecutable of releaseDependent on project and developer/manager Dependent on project and developer/manager preferencespreferencesDaily Best PracticesDaily Best PracticesUpdate before startingUpdate before startingCommit before leavingCommit before leavingInclude informative comments in commit Include informative comments in commit log messages (!)log messages (!)Inform other programmers of commits Inform other programmers of commits (when appropriate)(when appropriate)Version Controls SystemsVersion Controls SystemsCVS (Concurrent Versioning System)CVS (Concurrent Versioning System)Created by Dick Grune in 1986Created by Dick Grune in 1986Incredibly popular, especially in open-source worldIncredibly popular, especially in open-source worldSubversionSubversionStarted in 2000; released 1.0 in 2004Started in 2000; released 1.0 in 2004Created to fix shortcomings in CVS (and replace it)Created to fix shortcomings in CVS (and replace it)Visual SourceSafe & Team Foundation ServerVisual SourceSafe & Team Foundation ServerBy MicrosoftBy MicrosoftIntegrates with Visual StudioIntegrates with Visual StudioCVS vs. SubversionCVS vs. SubversionCVSCVSCommonly used, well knownCommonly used, well knownSubversionSubversionSimilar interface to CVSSimilar interface to CVSAtomic commitsAtomic commitsRepository flexibilityRepository flexibilityReduced costs of branching and taggingReduced costs of branching and taggingMore efficient commitsMore efficient commitsGUI ClientsGUI ClientsWinCVSWinCVSVery popularVery popularTortoiseCVSTortoiseCVSWindows shell integrationWindows shell integrationTortoiseSVNTortoiseSVNBased on TortoiseCVSBased on TortoiseCVSExamplesExamplesReferencesReferencesFogel, Karl. Fogel, Karl. Producing Open Source Software: Producing Open Source Software: How to run a successful free software projectHow to run a successful free software projectNagel, William. Nagel, William. Subversion Version Control.Subversion Version Control.Subversion Project Home. Subversion Project Home. http://http://subversion.tigris.orgsubversion.tigris.org//David,
View Full Document