11 Version Control Systems Mauro Jaskelioff (originally by Gail Hopkins)

Slides:



Advertisements
Similar presentations
MOSS 2007 Document Management Adam McCarthy 1 st April 2009.
Advertisements

Unit 1, Lesson 4 Software Development Cycle AOIT Introduction to Programming Copyright © 2009–2012 National Academy Foundation. All rights reserved.
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Software Delivery. Software Delivery Management  Managing Requirements and Changes  Managing Resources  Managing Configuration  Managing Defects 
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
Concepts of Version Control A Technology-Independent View.
2/6/2008Prof. Hilfinger CS164 Lecture 71 Version Control Lecture 7.
Status – Week 247 Victor Moya. Summary Streamer. Streamer. TraceDriver. TraceDriver. bGPU bGPU Signal Traffic Analyzer. Signal Traffic Analyzer.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Microsoft Visual Source Safe 6.01 Microsoft Visual Source Safe (MVSS) Presented By: Rachel Espinoza.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
Software Configuration Management
1 CMPT 275 Software Engineering Revision Control.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Approaches to ---Testing Software Some of us “hope” that our software works as opposed to “ensuring” that our software works? Why? Just foolish Lazy Believe.
Prof. Aiken CS 169 Lecture 71 Version Control CS169 Lecture 7.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
Software Configuration Management (SCM)
CSC 395 – Software Engineering Lecture 34: Post-delivery Maintenance -or- What’s Worse than Being a Code Monkey?
1 Topics for this Lecture Software maintenance in general Source control systems (intro to svn)
Introduction to Version Control
The Design Workshop Introduction to Version Control 1.
Feb 7, 2001CSCI {4,6}900: Ubiquitous Computing1 Announcements Tomorrow’s class is officially cancelled. If you need someone to go over the reference implementation.
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
1 Lecture 19 Configuration Management Software Engineering.
1 Software Development Configuration management. \ 2 Software Configuration  Items that comprise all information produced as part of the software development.
The Program Development Cycle
Git – versioning and managing your software L. Grewe.
Branching. Version Control - Branching A way to write code without affecting the rest of your team Merge branches to integrate your changes.
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Version control Using Git Version control, using Git1.
2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Version Control.
Subversion in the Sur lab A tool for organizing and sharing analysis code.
Introduction to Version Control SE-2030 Dr. Rob Hasker 1 Based on material at and slides written.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
CSE 219 Computer Science III CVS
Introduction to Version Control with Git CSC/ECE 517, Fall 2014 A joint project of the CSC/ECE 517 staff, including Titus Barik, Gaurav Tungatkar, Govind.
Program Development Cycle Modern software developers base many of their techniques on traditional approaches to mathematical problem solving. One such.
1 Brief Introduction to Revision Control Ric Holt.
Version Control with SVN Images from TortoiseSVN documentation
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
Configuration Management CSCI 5801: Software Engineering.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
P51UST: Unix and SoftwareTools Unix and Software Tools (P51UST) Version Control Systems Ruibin Bai (Room AB326) Division of Computer Science The University.
12 CVS Mauro Jaskelioff (originally by Gail Hopkins)
Version Control System
Version Control and SVN ECE 297. Why Do We Need Version Control?
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
Version Control How and why to control changes in a software artifact.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
CompSci 230 Software Construction
LECTURE 2: Software Configuration Management
Source Control Dr. Scott Schaefer.
Version control, using Git
Maintaining software solutions
LECTURE 3: Software Configuration Management
Revision Control Daniel Daugherty
© University of Liverpool
Subversion Basics Guide
CSE 303 Concepts and Tools for Software Development
Version Control CS169 Lecture 7 Prof. Aiken CS 169 Lecture 7.
Systems Analysis and Design I
Software Configuration Management
Presentation transcript:

11 Version Control Systems Mauro Jaskelioff (originally by Gail Hopkins)

Introduction  Version control systems  Principles  Problems they face  Copy-Modify-Merge cycle  Locking and Version Tracking  How they avoid conflicts  Benefits of each technique

Version Control  Things change …  New requirements lead to  New or changed designs that lead to  New or changed source code, etc.  Or bugs are discovered and must be fixed  … software engineers need to keep track of all these changes

Version Control Systems Support  The quality of maintainability and visibility and the principle of incrementality  Synchronisation  Manages the changes made by different programmers so they don’t need to continually code between each other  Rollback  Changes are not always an improvement. Often you need to return to a prior version

Version Control Systems Support (2)  Experimentation  Lets software engineers explore “what if” scenarios  Internationalisation (I18N)  Different versions for different languages  Historical Record  A customer reports a bug on version 1.1 but you are at version 2.3. You need a way to recreate version 1.1 to check out the bug

Tracking Changes First draft of code, buggy Fix some bugs, release version 1.0 Begin adding spellcheck feature Spellcheck feature complete, may have bugs Changes merged, more bugs fixed, release as version Another bug fix, release as version 1.1

Version Graphs  All changes to a single file are tracked via a graph  Nodes are distinct versions  Edges denote that the target node was derived from the source code

Version Graphs (2) There are three possible configurations:  Extension  A single version derived from a single version  Split  Multiple versions derived from a single version  Merge  A single version derived from multiple versions; most systems have support for this but major differences have to be resolved by hand

Version Control Files  Graphs are stored (centrally) in version control files  Space saving techniques may be used:  Forward deltas  The original version is stored, all subsequent versions are stored as sets of changes or “deltas”  Backward deltas  The most recent version is stored, all previous versions are stored as sets of changes

What does a Version Control System do?  A Version Control System lets you “check out” versions of a version control file  E.g. if I ask for version 2.2, and we are using a forward delta system, it starts with the original file and applies all of the deltas that lead to version 2.2 in the version graph

Checking Out  Alice and Charlie have checked out all files  Bob has just checked out File 2

Copy-Modify-Merge 1.A developer copies the version of the system in which they are interested into their own filespace 2.They then make any changes they want to the system 3.This is then merged back into the central version (which may have been modified by other developers in the meantime)

Copy-Modify-Merge (Alice Modifies a File)

Alice Modifies a File followed by Bob

Alice, Bob, Alice

Conflicts  Suppose Alice and Bob both copy the same file, make some changes and then try to merge them?  What happens?

A Conflict

Locking or Version Tracking  Version Control Systems vary in how they cope with conflicts  Some systems implement locking so it is impossible for two people to both have a file checked out at the same time  Other systems may keep track of the versions of a file each user has and require them to update their version before they can merge it

File Locking in Action

Version Tracking in Action

Conflict Resolution  Many version control systems support conflict resolution, making guesses about an appropriate way to merge the two versions of the file  In the end, though, they will give up and leave it to the user to do this by hand

Locking Vs. Version Tracking  Locking  prevents complicated conflict resolution problems arising  also prevents duplication of effort (two programmers both doing the same thing at the same time)

Locking Vs. Version Tracking (2)  Version tracking  prevents one person’s work being held up because someone else is using the file they want - or worse still, has forgotten to check the file back in  allows two developers to work on different sections of the same file at once

Summary  Version Control Systems are a way of tracking and recording changes to a software project  They help teams of people coordinate their work  They are not psychic!  Unless they are a central part of a project methodology they are more trouble than they’re worth!