CVS II: Parallelizing Software Development Author: Brian Berliner John Tully.

Slides:



Advertisements
Similar presentations
1 IST 410/420 Software Version Control 2 DevelopmentIntegration Test System Test User Acceptance Testing ProductionArchive DEVELOPMENTUSERS - Developers.
Advertisements

1. What is Subversion? Why do we need CM? Basic concepts Repositories Options Setup Clients Options Setup Operation Troubleshooting Slide 2.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999 Concurrent Versions System Overview of CVS architecture. Repository structure.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999 Concurrent Versions System Overview of CVS architecture. Repository structure.
Version Control System Sui Huang, McMaster University Version Control SystemSui Huang, McMaster University Version Control System -- base on Subversion.
2/6/2008Prof. Hilfinger CS164 Lecture 71 Version Control Lecture 7.
CVS Selim Çıracı Ahmet Kara Metin Tekkalmaz. CVS – Open Source Version Control System Outline What are Version Control Systems? And why do we need them?
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.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
CVS & Version Control Presenter: Eric Seidel ‘03, Math Major Brought to you by your LU CS Club Part of the mini-course series: “The Liberal CS Major.”
Version Control. What is Version Control? Manages file sharing for Concurrent Development Keeps track of changes with Version Control SubVersion (SVN)
Source Code Revision Control Software CVS and Subversion (svn)
Prof. Aiken CS 169 Lecture 71 Version Control CS169 Lecture 7.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
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.
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
Article: Source Code Review Systems Author: Jason Remillard Presenter: Joe Borosky Class: Principles and Applications of Software Design Date: 11/2/2005.
Introduction to Version Control
Version Control with Subversion Quick Reference of Subversion.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 8-Oct-15.
Version control Using Git Version control, using Git1.
…using Git/Tortoise Git
Chris Onions Getting started with CVS in ATLAS 11 Getting started with CVS in ATLAS Chris Onions (Tutorial based on that of Raúl Ramos Pollán CERN / IT.
An Intro to Concurrent Versions System (CVS) ECE 417/617: Elements of Software Engineering Stan Birchfield Clemson University.
Subversion (SVN) A Revision Control System Successor to CVS Carlos Armas Hervey Allen.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Progress with migration to SVN Part3: How to work with g4svn and geant4tags tools. Geant4.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
CVS – concurrent versions system Network Management Workshop intERlab at AIT Thailand March 11-15, 2008.
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.
1 Brief Introduction to Revision Control Ric Holt.
Version Control with SVN Images from TortoiseSVN documentation
CVS – concurrent versions system AROC Guatemala July 19-23, 2010 Guatemala City, Guatemala.
CSE 436—Requirements and Version Control Systems Ron K. Cytron 26 September 2005.
1 CSE306 Operating Systems Projects CVS/SSH tutorial.
WinCvs. WinCVS WinCvs is a window based version control system. Use WinCvs when  You want to save every version of your file you have ever created. CVS.
CVS: Concurrent Version System Lecturer: Prof. Andrzej (AJ) Bieszczad Phone: “UNIX for Programmers and Users” Third.
GIT.
Sabriansyah R.A Version Control. The Repository Subversion adalah sistem tersentralisasi untuk informasi sharing Repository adalah pusat penyimpanan data.
12 CVS Mauro Jaskelioff (originally by Gail Hopkins)
Version Control System
Version Control and SVN ECE 297. Why Do We Need Version Control?
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
WinCVS Training è Basic Concepts è Download & Setup è Importing a new module into CVS Repository è Getting new module from CVS è Getting Latest version.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
It’s not just an insult from Harry Potter!. What is Git? Distributed Version Control System (DVCS) – Compared to a Centralized Version Control System.
1 Week 9 Software Engineering Fall Term 2015 Marymount University School of Business Administration Professor Suydam.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999 Revised by David Svoboda 2003 Concurrent Versions System Overview of CVS architecture.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
1 Subversion Kate Hedstrom April Version Control Software System for managing source files –For groups of people working on the same code –When.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
Configuration Management
Concurrent Versions System User guide for CS408
SVN intro (review).
Source Control Dr. Scott Schaefer.
Concurrent Version Control
Software Version System Part1: Subversion at CERN
Design and Programming
Chapter 2: The Linux System Part 1
Prof. Hilfinger CS164 Lecture 4
Concurrent Versions System
Presentation transcript:

CVS II: Parallelizing Software Development Author: Brian Berliner John Tully

Motivation Typical scenario in software development: Typical scenario in software development: John is in charge of kernel’s execution threads; Geoff is in charge of kernel’s debugger thread; John is in charge of kernel’s execution threads; Geoff is in charge of kernel’s debugger thread; Brice is in charge of kernel’s file I/O thread. All three have very different tasks, but each must work on different parts of the same files. All three have very different tasks, but each must work on different parts of the same files. Deadlines must be met; each needs to make and test changes independently. Deadlines must be met; each needs to make and test changes independently.

What can we do? No revision control – a disaster No revision control – a disaster Changes just overwritten; very disorganized (no separate versions/releases) Changes just overwritten; very disorganized (no separate versions/releases) Lock files for exclusive use until all changes are made Lock files for exclusive use until all changes are made All three programmers need to continually update and test their software, or deadlines can’t be met All three programmers need to continually update and test their software, or deadlines can’t be met

Problem Addressed Obvious limitations with sharing files (with no revision control) and locking files for one user at a time Obvious limitations with sharing files (with no revision control) and locking files for one user at a time The specific need: a freely available tool to manage software revision and release control in an environment that is: The specific need: a freely available tool to manage software revision and release control in an environment that is: Multi-developer Multi-developer Multi-directory Multi-directory Multi-group Multi-group

“Current” Solutions SCCS (Source Code Control System) – Early 1980s; old even for this paper (Bell 1981) SCCS (Source Code Control System) – Early 1980s; old even for this paper (Bell 1981) OK for small projects; only one developer may have writable file at a time OK for small projects; only one developer may have writable file at a time RCS (Revision Control System) – Improvement upon SCCS, but nothing really significant (Tichy 1982) RCS (Revision Control System) – Improvement upon SCCS, but nothing really significant (Tichy 1982) Better user interface/organization; same limitations Better user interface/organization; same limitations

“Current” Solutions (cont.) Many “environment-specific” tools – examples: Many “environment-specific” tools – examples: Use file-sharing through links when common in specific applications Use file-sharing through links when common in specific applications Automatically produce objects for multiple architectures Automatically produce objects for multiple architectures In all cases, assumptions were made about the sources being controlled (this adds complexity) In all cases, assumptions were made about the sources being controlled (this adds complexity) Discussion : any experience with environment- specific tools? Discussion : any experience with environment- specific tools?

What is CVS? Concurrent Versions System: basically, RCS with conflict resolution Concurrent Versions System: basically, RCS with conflict resolution RCS: storage of source code, revision numbers Source Code CVS: Front-end to RCS Conflict Resolution Algorithms Module database Flexible Logging Options Release tracking by tags and/or dates

Software Conflict Resolution CVS commands CVS commands “checkout” – get the current “head” revision “checkout” – get the current “head” revision “update” – perform an RCS merge with current file and head revision “update” – perform an RCS merge with current file and head revision “commit” – make permanent change, only if checked out file is current with the head revision “commit” – make permanent change, only if checked out file is current with the head revision “Copy-Modify-Merge” Paradigm “Copy-Modify-Merge” Paradigm No locks – development proceeds in parallel No locks – development proceeds in parallel Conflicts not very common, so this paradigm is useful Conflicts not very common, so this paradigm is useful Discussion : Does this paradigm work for real-world situations? Discussion : Does this paradigm work for real-world situations?

Storage Methods Uses RCS Principle: most of the text will remain unchanged from 1 revision to the next Uses RCS Principle: most of the text will remain unchanged from 1 revision to the next RCS (and CVS) files composed of deltas, or listings of: RCS (and CVS) files composed of deltas, or listings of: Lines that have appeared Lines that have appeared Lines that have disappeared Lines that have disappeared Changed Lines Changed Lines In repository, store full text of newest revision, and deltas which work backwards to old revision In repository, store full text of newest revision, and deltas which work backwards to old revision For branches, forward deltas are stored For branches, forward deltas are stored Discussion: Real-world situations where branches are applicable? Discussion: Real-world situations where branches are applicable?

Merging Methods Merging changes into working copy similar to program that generates deltas for revisions Merging changes into working copy similar to program that generates deltas for revisions More RCS Principles: How to merge separate revision branches back together? More RCS Principles: How to merge separate revision branches back together? Compare two revisions to closest ancestor, determine which lines are: Compare two revisions to closest ancestor, determine which lines are: Identical in all three revisions Identical in all three revisions Identical in two out of three revisions Identical in two out of three revisions Different in all three revisions Different in all three revisions

Module Database Efficient ndbm database Efficient ndbm database Modules used to conveniently check out smaller pieces of large distributions Modules used to conveniently check out smaller pieces of large distributions Very convenient aspect: actual physical location within the distribution is hidden Very convenient aspect: actual physical location within the distribution is hidden Prisma: entire UNIX distribution broken down into modules Prisma: entire UNIX distribution broken down into modules example% cvs checkout diff example% cvs checkout diff example% cd diff; make

Configurable Logging, Tags When files committed, log message can be created by arbitrary program When files committed, log message can be created by arbitrary program Text Editor Text Editor News Database News Database Mail Program Mail Program Tags or dates can be used to get exact copies of releases Tags or dates can be used to get exact copies of releases

Our Example : using CVS John, Geoff, Brice: checkout the kernel module John, Geoff, Brice: checkout the kernel module John: modifies kernel.c and checks in changes John: modifies kernel.c and checks in changes Repository Kernel 1.1 John Repository Kernel 1.0 John Geoff Brice

Our Example : using CVS Geoff: checks in kernel.c a day later, but version no longer current with head revision Geoff: checks in kernel.c a day later, but version no longer current with head revision Assuming RCS merge will not have conflicts, what does Geoff need to do? Assuming RCS merge will not have conflicts, what does Geoff need to do? Repository Kernel 1.1 Geoff Kernel 1.1 Merge

Our Example : using CVS Brice: checks in kernel.c 2 days later, but version no longer current with head revision Brice: checks in kernel.c 2 days later, but version no longer current with head revision Assuming RCS merge does have conflicts for Brice’s changes, what does Brice need to do? Assuming RCS merge does have conflicts for Brice’s changes, what does Brice need to do? Repository Kernel 1.2 Brice Kernel 1.1 Conflict

Performance Tests at Prisma – relevance? Tests at Prisma – relevance? 17,000 Files (~4 million lines of code) 17,000 Files (~4 million lines of code) 14 Software Developers 14 Software Developers ~100 files changed/added per month ~100 files changed/added per month Performance results quite reasonable given above parameters (especially given proc. speed) Performance results quite reasonable given above parameters (especially given proc. speed) Check out a bit slow (~16 minutes for 1000 files) Check out a bit slow (~16 minutes for 1000 files) Update (much more common case) about 10x faster Update (much more common case) about 10x faster

Performance Real “stress” test: SunOS Merge Real “stress” test: SunOS Merge 94 conflicts in test out of conflicts in test out of 233 Sounds bad… but only took 2 days to fix all conflicts Sounds bad… but only took 2 days to fix all conflicts True justification of validity of “Copy-Modify- Merge” paradigm True justification of validity of “Copy-Modify- Merge” paradigm

Conclusions / Limitations CVS very simple, efficient, source code- independent; extremely popular CVS very simple, efficient, source code- independent; extremely popular A few minor enhancements: A few minor enhancements: Extra database to “remember” who has a checked out copy of a module Extra database to “remember” who has a checked out copy of a module Easier recovery if administrative files are removed Easier recovery if administrative files are removed

Future Research Directions Interesting research problem (not handled at all by CVS): modifying file names / directory structures quickly Interesting research problem (not handled at all by CVS): modifying file names / directory structures quickly (See subversion principles…..) (See subversion principles…..) Support for producing objects for multiple architectures another research topic Support for producing objects for multiple architectures another research topic Caution here – shouldn’t harm efficiency of CVS Caution here – shouldn’t harm efficiency of CVS

Discussion Anything brought up before... Anything brought up before... Tools other than CVS (language/environment specific) Tools other than CVS (language/environment specific) Copy-Modify-Merge Paradigm Copy-Modify-Merge Paradigm Experience with branches? Experience with branches? Experience with huge amounts of code? Experience with huge amounts of code?