Version Control How and why to control changes in a software artifact.

Slides:



Advertisements
Similar presentations
Configuration Management
Advertisements

Branching, Switching and tagging Francesco Furfari CNR-ISTI Italy.
Version Control System (Sub)Version Control (SVN).
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
Version Control System Sui Huang, McMaster University Version Control SystemSui Huang, McMaster University Version Control System -- base on Subversion.
Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
2/6/2008Prof. Hilfinger CS164 Lecture 71 Version Control Lecture 7.
Software Configuration Management
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Software Engineering Modern Approaches
Introduction to Version Control
Software Configuration Management (SCM)
Warmup A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.” The programmer.
Branching. Version Control - Branching A way to write code without affecting the rest of your team Merge branches to integrate your changes.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Version Control.
Software Quality Assurance
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Jump to first page (C) 1998, Arun Lakhotia 1 Software Configuration Management: Version Control Arun Lakhotia University of Southwestern Louisiana Po Box.
1 Brief Introduction to Revision Control Ric Holt.
Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa Configuration management.
11 Version Control Systems Mauro Jaskelioff (originally by Gail Hopkins)
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
Version Control Systems. Version Control Manage changes to software code – Preserve history – Facilitate multiple users / versions.
Software Configuration Management (SCM). Product Developer Disciplines One view of the world is that there are three types of activities are required.
CPSC 871 John D. McGregor Change management Module 2 Session 3.
P51UST: Unix and SoftwareTools Unix and Software Tools (P51UST) Version Control Systems Ruibin Bai (Room AB326) Division of Computer Science The University.
Software Configuration Management (SCM) Source: Pressman, R., Software Engineering: A Practitioner ’ s Approach. Boston: McGraw Hill, Inc., 2005; Ghezzi,
Source Control What technical communicators need to know.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
Configuration & Build Management. Why Software Configuration Management ? The problem: Multiple people have to work on software that is changing More.
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Developers Users Committers How do I configure this now? Just one more fix and I am done! CVS Download/Use Software Submit problems/ request features Store.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
ITIL: Service Transition
Managing Software in Higher Education
Software Configuration Management (SCM)
4 Version control (part 1)
Configuration Management
Configuration Management
Software Project Configuration Management
Chapter 10, Software Configuration Management
Version Control Systems
Version Control CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Sample Wiki Comments?.
Code Management Releases
Source Control Dr. Scott Schaefer.
Version Control CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Version Control with Subversion (SVN)
OpenSAF Developer Days 2008 OpenSAF Release Management Session 15-07
Configuration Management
Version Control System using Git
Concurrent Version Control
Configuration Management (managing change)
Revision Control Daniel Daugherty
Design and Programming
Git Best Practices Jay Patel Git Best Practices.
Dynamic Process for Source Control
TDL Open Source Project (TOP) Input to MTS#70,
Version Control CS169 Lecture 7 Prof. Aiken CS 169 Lecture 7 1.
Users Developers Committers Bug & Feature List CVS Checkout Latest
Prof. Hilfinger CS164 Lecture 4
Systems Analysis and Design I
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Proposal on TSC policy for ONAP release Maintenance
Software Configuration Management
Presentation transcript:

Version Control How and why to control changes in a software artifact

Software changes... While we build it... – Multiple people are building and improving the software at the same time Even after we deliver it... – Every successful software system continues to be improved and adapted over time Uncontrolled parallel change can be chaos

Two sides to change control Policy side: – How do we choose, plan, and manage change Mechanism side: – How do we keep track of changes and avoid danger – inconsistent changes, lost changes, inability to recreate a previously working version – Mechanism side is called “version control”

Change Control Policy: Small Development Projects Access policy Do developers “own” their part of the code? Can every developer change any part of the code? Change planning and communication Everyone should know what is currently stable and what is currently undergoing change (by whom) Coordinating change A typical plan might be to work independently Monday- Wednesday, then integrate Thursday and Friday. Policies vary (e.g., integration could be daily or continuous); the worst policy is not having a policy.

Change Control Policy: Larger Projects Typically multiple current versions – e.g.: Production, Beta, Development versions Much more complex – for example: Should a bug fix in the production version be applied also to the development version? Who decides? A change control board may be in charge of approving changes in a large project

Technical Side: Version Control Each developer works on a personal copy of the system Version control system (VCS) manages changes Check out a current copy; make changes; get changes from others; check for conflicts; apply changes to baseline version Many examples: RCS, CVS, Subversion, Mercurial, GIT,...

Using a Version Control System* Someone sets up a shared repository Each developer – Checks out a working copy to their own workspace – Makes changes to their personal copy – Updates with changes from others – Tests for consistency – Commits changes to shared repository Important! VCS can only check for overlapping changes, not consistency *This is for a VCS with a shared repository (like SVN). Some VCS (e.g., GIT) have no single repository, but accomplish the same thing by combining changes from each developer’s working copy.

Policy + VCS You need policies in how VCS is used Examples: – Should code be reviewed before it is committed to the shared repository? – How often should changes be committed? Is there a regular schedule, or a plan? – When do we save a copy of the most recent code? – How do we identify versions?

A typical numbering scheme Production versions are named 77.88v9 – 77 is “major version number”, also known as “release number”, e.g., Windows 7 – 88 is “minor version number”; minor versions are updates to the release, made occasionally – v9 is “patch level”. Patches are small changes made quickly to solve an urgent problem (e.g., a security hole). or “v” might be “a” for alpha release, “b” for beta release while preparing a new minor or major version This is an example. There are many variations in numbering schemes.

Summary: Change Management Policy + Tools (VCS): Both are needed Policy for managing change. – May be simple for small projects. May be quite complex for large projects. Version control system for coordinating – Allows developers to work on personal copies, then check consistency before applying changes to the shared system