Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.

Slides:



Advertisements
Similar presentations
Intro to Version Control Have you ever …? Had an application crash and lose ALL of your work Made changes to a file for the worse and wished you could.
Advertisements

Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
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.
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
2/6/2008Prof. Hilfinger CS164 Lecture 71 Version Control Lecture 7.
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 Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
SubVersioN – the new Central Service at DESY by Marian Gawron.
Version Control. What is Version Control? Manages file sharing for Concurrent Development Keeps track of changes with Version Control SubVersion (SVN)
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.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
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.
Subversion. What is Subversion? A Version Control System A successor to CVS and SourceSafe Essentially gives you a tracked, shared file system.
Introduction to Version Control
Source Control Repositories for Team Collaboration: SVN, TFS, Git.
Version Control with Subversion Quick Reference of Subversion.
1 Lecture 19 Configuration Management Software Engineering.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Object-Oriented Software Engineering Using UNIX groups and Subversion Estimated Time: minutes “Unix is user-friendly. It's just very selective about.
Object-Oriented Software Engineering Using UNIX groups and CVS Estimated Time: minutes.
Branching. Version Control - Branching A way to write code without affecting the rest of your team Merge branches to integrate your changes.
Version control Using Git Version control, using Git1.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
ITEC 370 Lecture 16 Implementation. Review Questions? Design document on F, feedback tomorrow Midterm on F Implementation –Management (MMM) –Team roles.
…using Git/Tortoise Git
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
An Intro to Concurrent Versions System (CVS) ECE 417/617: Elements of Software Engineering Stan Birchfield Clemson University.
Version Control Systems with Subversion (SVN) and Tortoise.
(Sub)Version Control. 2 Keep large teams working on the same code Back up your work so you don't lose it all Compare changes to previous versions Revert.
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?
CVS – concurrent versions system Network Management Workshop intERlab at AIT Thailand March 11-15, 2008.
CSE 436—Requirements and Version Control Systems Ron K. Cytron 26 September 2005.
1 CSE306 Operating Systems Projects CVS/SSH tutorial.
CPSC 871 John D. McGregor Change management Module 2 Session 3.
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)
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
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.
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
(1) Introduction to Subversion (SVN) and Google Project Hosting Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
NALINI S. NAUTIYAL SYSTEM SOFTWARE DIVISION Subversion.
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
Git workflows: using multiple branches for parallel development SE-2800 Dr. Mark L. Hornick 1.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
SWIM Project Meeting, Bloomington, IN September 2006 Working with the SWIM Code Repository David E. Bernholdt Oak Ridge National Laboratory
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
Information Systems and Network Engineering Laboratory II
Version Control with Subversion
LECTURE 2: Software Configuration Management
Source Control Dr. Scott Schaefer.
An Intro to Concurrent Versions System (CVS)
CVS revisions UML diagram
Concurrent Version Control
Version Control System
Source Code Management
LECTURE 3: Software Configuration Management
Design and Programming
Concurrent Versions System
Systems Analysis and Design I
Presentation transcript:

Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and allow access Can work across networks  Key Idea: Repository The place where the originals and all the modifications to them are kept. Each person “checkout”s their own, private copy Changes are “commit”ed by each person Everyone else’s changes are “update”d into your own copy. Subversion: Source Code Control

Computer Science and Engineering The Ohio State University Motivation  Team-based development Developers share and extend common code base Team members comply with standards (coding conventions, comment templates,…) Bug fixes applied to deployed version 1.0 while development continues, in parallel on version 2.0  Especially important for Agile methods Popular for open source development But every team project needs some kind of code management and versioning system

Computer Science and Engineering The Ohio State University Key Idea: The Repository  Repository holds master copy of all files Never edited directly Stores history too  Developers have local copy in their own workspace All work occurs here  Update: Bring local copies up to date with repository  Commit: Send local edits to repository Ayesha Fred repository commit update

Computer Science and Engineering The Ohio State University Conflicts and Merging Fred Ayesha repository update commit  Optimistic team model Anyone can modify any file any time (no locking) Most edits can be safely merged automatically Assumption: real conflicts are rare Error: working version out-of-date Conflict: requires attention Merge

Computer Science and Engineering The Ohio State University Tagging, Branching, and Merging  Repository is a tree of versions Development of main product occurs as a series of revisions along trunk  A tag names a particular revision Once tagged, a version is immutable  Branches off of trunk or other branches Bug fixes of a particular release Exploring different development paths  Branches can be merged back to trunk Speculative direction pans out

Computer Science and Engineering The Ohio State University A History of Revisions trunk branch maintenance branch tag release merge 2.1

Computer Science and Engineering The Ohio State University Overview of Workflow  Create and initialize the repository Once, by 1 person (done for this class for you)  Check out the repository to your local directory Once (or many times), by each team member  Create your files and add them to the repository: Once, by 1 person: Two members attempting to add the same file can cause problems. Follow workflow below.  Synchronizing with the repository Repeated frequently by everyone  Update local files from repository  Run all unit tests  Make changes in local project files  Run all unit tests (make sure they pass!)  Update local files from repository and fix any conflicts  Add and Commit local files to repository

Computer Science and Engineering The Ohio State University  Commit when confident that your work will not break anything and commit often. Do not wait until perfection! Do make sure your new version compiles!  Update before committing Integrates everyone else’s changes  Update when you are ready for someone else’s work Availability of new modules that may affect your code When to Update/Commit

Computer Science and Engineering The Ohio State University Best Practices: Golden Rule  Never break the build Applies (primarily) to trunk, although breaking a multi-developer branch is almost as bad Frequent commits are a good thing, but partial code should not prevent another developer from building and testing their modifications  (Almost) Never break a test case Other developers may think their (local) changes are responsible for new errors when they next update

Computer Science and Engineering The Ohio State University Best Practice  Place in the Repository All source code written by the team. All resources needed by the team  It is wise to place these in a separate top-level directory. These resources can be large and slow down the update process.  Do not place in the Repository Generated code (.obj,.exe) Compile and Visual Studio files (.suo,.ncb). Other dependencies (not a strict rule, but use sense and treat these as resources above.)

Computer Science and Engineering The Ohio State University Best Practices: Process  Daily build schedule The “heartbeat” of the project  Release means: tag + create branch for maintenance

Computer Science and Engineering The Ohio State University Pitfalls  Incomplete commits Common problem: forgetting to add a new file Professional shops will have an automated build process before committing. You can use the export command to test.  System clock synchronization UTC, so no time zone issues

Computer Science and Engineering The Ohio State University Shortcomings  Binary files have no meaningful diffs.pdf,.doc,.jpg  Slow for large binaries large binaries/executables can be provided outside the repository

Computer Science and Engineering The Ohio State University Subversion tools  Tortoise SVN Tutorial video  Additional tips and advice Additional tips and advice  Short list of steps to set up your copy of the project Short list of steps to set up your copy of the project For step 2, you’ll need the address for your team’s project (will be sent via )