Version Control, Revision Control Software Configuration Management.

Slides:



Advertisements
Similar presentations
Week 2 DUE This Week: Safety Form and Model Release DUE Next Week: Project Timelines and Website Notebooks Lab Access SharePoint Usage Subversion Software.
Advertisements

Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Software engineering tools for web development Jim Briggs 1CASE.
1. What is Subversion? Why do we need CM? Basic concepts Repositories Options Setup Clients Options Setup Operation Troubleshooting Slide 2.
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
Revision Control Systems Amin Tootoonchian Kian Mirjalali.
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.
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?
Version Control Systems Phil Pratt-Szeliga Fall 2010.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
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 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
Git: Part 1 Overview & Object Model These slides were largely cut-and-pasted from tutorial/, with some additions.
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 Using Git 1Version control, using Git.
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.
Source Control Repositories for Team Collaboration: SVN, TFS, Git Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
© 2012 IBM Corporation Rational Insight | Back to Basis Series SCM introduction Chu Shu June 2012.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
Source Control Repositories for Team Collaboration: SVN, TFS, Git.
The new version control system. Kiril Karaatanasov, July 2006 What is Subversion Subversion is a newly developed open source version control system Subversion.
1 Lecture 19 Configuration Management Software Engineering.
Git – versioning and managing your software L. Grewe.
GIT An introduction to GIT Source Control. What is GIT (1 of 2) ▪ “Git is a free and open source distributed version control system designed to handle.
1 Introductory Notes on the Git Source Control Management Ric Holt, 8 Oct 2009.
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.
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
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
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.
SENG 403 Tutorial 1 1SENG 403 – Winter Agenda Version Control Basics Subversion Basic actions in Subversion Some examples 2SENG 403 – Winter 2012.
ClearCase Concepts and Terminology
By: Anuj Sharma. Topics covered:  GIT Introduction  GIT Benefits over different tools  GIT workflow  GIT server creation  How to use GIT for first.
Sofia Event Center May 2014 Martin Kulov Git For TFS Developers.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
Part 4: FCM and the UM University of Reading, December 2015.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
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
GitHub A web-based Git repository hosting service.
CS5220 Advanced Topics in Web Programming Version Control with Git
Information Systems and Network Engineering Laboratory II
11 Version control (part 2)
LECTURE 2: Software Configuration Management
Version Control with Subversion (SVN)
Version control, using Git
CS5220 Advanced Topics in Web Programming Version Control with Git
Subversion.
Concurrent Version Control
Version Control System
SU Development Forum Introduction to Git - Save your projects!
Akshay Narayan git up to speed with RCS Akshay Narayan
Source Code Management
LECTURE 3: Software Configuration Management
Version Control System - Git
GitHub and Git.
Concurrent Versions System
Introduction to The Git Version Control System
Presentation transcript:

Version Control, Revision Control Software Configuration Management

Version Control During software development it is inevitable To be able to recreate any earlier internally or externally released version of the software product Giving the possibility to turn back in case of development dead-end Control changes of software source code continuously Identify faults and problematic code parts more easily

SCM Version Control is part of Software Configuration Management (SCM), which activity keeps coherent software versions together. Internal release: coherent software build for verification (testing) External release: coherent software build for external, customer use SCM usually refers more than VC, also means product component registration, 3PP related activities, may be supply activities as well. It depends on the actual project (company) setup.

Traditional vs. Distributed Traditional server oriented clients works online or make snapshots locally Distributed Peer to peer approach All local machines have the whole (complete) repository Local repos sync amongst each other Only working copies exist (every cloned repo is a working copy) No canonical, reference copy of the codebase exists by default; only working copies. = No special authority for any repository Common operations (such as commits, viewing history, and reverting changes) are fast, because there is no need to communicate with a central server. Communication is only necessary when sharing changes among other peers. Each working copy effectively functions as a remote backup of the codebase and of its change- history, protecting against data loss. Disadvantages initial cloning can be terribly long missing reserved checkout is a problem in case non-mergable binary files

Traditional vs. Modern Traditional items (files) are version controlled and every file can be checked in separately it does not guarantee that system is continuously coherent Consider changes together all modified files are checked in as one step and one identifier (generally a hash) identifies the whole system actual state cherry-picking is possible but not a proposed way Traditional prevent parallel development by file locking (reserved checkout) or by parallel development tracks and integrate at the end Modern ones reserved checkout is not usual frequent merges are common and forced by the tool

Version Control Implementations (IBM Rational) Clearcase Git CVS, Subversion Mercurial Fossil Internal Wiki pages Google Docs Microsoft Office

Clearcase Naming Conventions and Branching This is a visual representation of versions of one item, “above” this, there is a file and folder view as in any normal file structure The root is “main” branch Versions are numbered and Branches are named Labels indicating releases (see next slide) Red arrows are merges “Config spec” tells what you see from the system

Clearcase Complex Branching

Branching in general (DVCS) This is a visual representation of versions of items or the whole repo (in case of distributed systems), “under” this, there is a file and folder view as in any normal file structure The root is usually called “trunk” Red arrows are merges

Fossil and branching Hashes vs. incremental numbers Fig. 1: an ideal world Directed acyclic graphs (DAGs) but everyday usage tree is enough “directed acyclic graph (DAG), is a directed graph with no directed cycles.” LinkLink Forks (fossil tries to prevent forks) Warns to do fossil update to fetch the other already committed version Git supports forks quite much Fig. 2-3 Branches Deliberate forking for example because of two teams using different version of the SW Fig. 4 Merge back to “main” – dashed arrows

Fossil and branching A tag is a name that is attached to a check-in. A property is a name/value pair. The branch tag tells (by its value) what branch the check-in is a member of. The default branch is called "trunk.“ Link to read in details. Link

Fossil and branching Branch A branch is a set of check-ins with the same value for their "branch" property. Leaf A leaf is a check-in with no children in the same branch. Closed Leaf A closed leaf is any leaf with the closed tag. These leaves are intended to never be extended with descendants and hence are omitted from lists of leaves in the command- line and web interface. Open Leaf A open leaf is a leaf that is not closed. Fork A fork is when a check-in has two or more direct (non-merge) children in the same branch. Branch Point (branching out) A branch point occurs when a check-in has two or more direct (non-merge) children in different branches. A branch point is similar to a fork, except that the children are in different branches.

Concepts Atomic operations File locking Version merging Baselines, labels and tags

Concepts and Branching Strategies Concepts Store everything under version control which you want to keep Not only source code files, but configuration files install scripts documentation released packages Nothing to delete, add a new version if an item is not needed remove from version control but it means you have all earlier version in repository Branching strategies in a SW Development Project one track one main, one development feature branches private branches fossil branching Terms need to know and understand repository check out reserved unreserved check in merge

CEA 2/EEA 15 Planned RELEASE BRANCHING 2.0 PRA Final build R1A 2.0 ICP1 Preship 2.0 EP1 R1A/1 2.0 ICP1 R1B P1B : R1B P1A : R1A R1A : R1B R1B : R1A 15.0 ICP1 R2B 15.1 PRA Final build R3A 15.0 PRA Final build R2A 15.0 Preship #1 / # ICP2 R2C ICP2 R1C 15.1 ICP1 R3B 15.1 ICP2 R3C Corrected product’s R-State Faulty product’s R-State on this specific branch < < < < > > > New product number created for EEA 15 CXP 902 …/3 CXP 902 …/2 CXP 902 …/3

Fossil commands new/init clone open add rm checkout (quite different than usual, do not use at first) changes revert diff gdiff commit/checkin pull/push/sync update (your local tree) merge undo server ui close extras Autosync scm.org/fossil/doc/trunk/www/quickst art.wiki scm.org/fossil/doc/trunk/www/quickst art.wiki