LECTURE 2: Software Configuration Management

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

Configuration Management
Version Control Systems Phil Pratt-Szeliga Fall 2010.
1 Copyright © 2014 Tata Consultancy Services Limited Source Code Management using Rational Team Concert IBM Rational, Alliance & Technology Unit 2 July.
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.
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 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.
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
With Mercurial and Progress.   Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?
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.
Version control Using Git Version control, using Git1.
Drexel University Software Engineering Research Group Git for SE101 1.
Version Control. How do you share code? Discussion.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
…using Git/Tortoise Git
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
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.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Team 708 – Hardwired Fusion Created by Nam Tran 2014.
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.
Introduction to GitHub Alex Bigazzi Dec. 4, 2013 ITS Lab GitHub Introduction1.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
Version Control Systems. Version Control Manage changes to software code – Preserve history – Facilitate multiple users / versions.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
Page 1 TBD 12/08/2014 Formation GIT Laurent Kappel Groupe SII 65, rue de Bercy Paris Tél : Fax :
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Introduction to Git - Chirag Dani. Objectives Basics of Git Understanding different “Mindset of Git” Demo - Git with Visual Studio.
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.
KIT – University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association STEINBUCH CENTRE FOR COMPUTING - SCC
Basics of GIT for developers and system administrators
CS5220 Advanced Topics in Web Programming Version Control with Git
Introduction to GitHub
Introduction to Version Control with Git
4 Version control (part 1)
Information Systems and Network Engineering Laboratory II
Source Control Systems
Git and GitHub primer.
11 Version control (part 2)
Version Control.
CS4961 Software Design Laboratory I Collaboration using Git and GitHub
Version control, using Git
CS5220 Advanced Topics in Web Programming Version Control with Git
Software Engineering for Data Scientists
Concurrent Version Control
Version Control with Git accelerated tutorial for busy academics
Distributed Version Control with git
Akshay Narayan git up to speed with RCS Akshay Narayan
Source Code Management
Version Control with git
LECTURE 3: Software Configuration Management
Part 1: Editing and Publishing Files
Git CS Fall 2018.
Version Control System - Git
Introduction to Version Control with Git
Version Control with Git
GitHub and Git.
Patrick Cozzi University of Pennsylvania CIS Fall 2012
Version Control with Git and GitHub
Git Fundamentals.
Git Introduction.
Git GitHub.
Introduction to The Git Version Control System
Presentation transcript:

LECTURE 2: Software Configuration Management http://en.wikipedia.org/wiki/Software_configuration_management http://en.wikipedia.org/wiki/Distributed_revision_control Ivan Marsic Rutgers University

Topics Definitions Working Scenarios Revision Control Functions Git and GitHub

Why Software Config Mgmt? Software configuration management (SCM) is the process of controlling the evolution of a software system Simplifies sharing code and other documents The ability to revert to an older version (“undo”) Coherently integrate contributions from team members (“merge”) Notify interested parties about new modifications (“reporting”) Track software issues (e.g., bugs) Create an auditing trail (“archiving”) SCM system allows us to answer questions: When was this software module last changed? Who made changes in this line of code? What is the difference between the current version and last week’s? How many lines of code did we change in this release? Which files are changed most frequently?

Why Software Config Mgmt? SCM simplifies collaboration and increases productivity But it all can be done with old-fashioned email, file system, etc. Naming convention? How to reconcile your version #1 with my version#1?

Definitions A software configuration is a collection of work products (“artifacts”) created during a project lifetime Software configuration item (SCI) is any piece of knowledge (a.k.a. “work product” or “artifact”) created by a person (developer or customer) A snapshot of a software configuration or a configuration item represents the version of that item at a specific time A commit (or “check-in”) refers to submitting a software configuration to the project database (“repository”) A build is a version of a program code (part of a software configuration), and a process by which program code is converted into a stand-alone form that can be run on a computer (“executable code”)

Repository vs. Workspace Project database (“repository”) Committed configurations (at discrete points during project life) retrieve (or, pull or, check-out) commit (or, push or check-in) Working copies (piecewise continuous development) Developer’s workspace (“working directory”) Project database is usually on a remote server, or “mirrored” on several servers SCM provides a set of tools to interact with project database

Version Graph and Branching Hotfix branch — to fix bugs in the master Master branch (“trunk” or “mainline”) — in production (“fork”) (“merge”) (“fork”) root Time Topic branch — new features development Each “commit” represents a different “version” of the software configuration at a different time Think of branches as separate folders, each with its own content and history The project snapshot at the tip of a branch represents the latest version

Example Working Scenarios Undoing mistakes in new work Supporting multi-pronged product evolution Parallel versions coexist at times, but will eventually merge (single trunk—“Master”) Developing product lines Coexisting parallel versions (same product for different markets) that will never merge (multiple trunks) but they still need synchronization so that versions for different markets are at the same “level” Working with a small team of peers All developers can write to the project database Working with a managed team Only configuration manager can write to the project database

Undoing Mistakes Time master “Pointer” or identifier for a commit C0 C1 C2 C3 root master Undo a commit: C0 C1 C2 C3 root We can undo a commit; undo a merge; or undo a checkout (See later how undo can be done without deleting the history)

Multi-pronged Product Evolution Hotfix branch C4 Master branch C0 C1 C5 C8 Develop branch C2 C3 C7 C9 Chacon & Straub: “Pro Git”, page 101 Topic branch C6 Parallel versions coexist at times, but will eventually merge (to a single trunk—Master branch)

Working with Peers: Centralized Workflow Check-out Central repository Developer A Developer B Make change Allow write access to whole team Check-in Accept Reject & request merge Merge Time () Chacon & Straub: “Pro Git”, page 152 () Assuming no other commits in the meantime; otherwise need to merge Example scenario: Two developers clone from the hub and both make changes The first developer to push his changes back up can do so with no problems The second developer must merge in the first one’s work before pushing changes up, so as not to overwrite the first developer’s changes

Working with a Managed Team Configuration Manager Developer Revise Push to Project repository Project repository Developer’s public Make change Pull Push to Developer’s repository Pull request [change accepted] [change rejected] Merge with Developer’s repository Notify or request revise & resubmit [accepted] [rejected] Time Chacon & Straub: “Pro Git”, page 152 Example scenario: 1. The configuration manager pushes the current version to the main project repository 2. A contributor clones that repository and makes changes 3. The contributor pushes the changed version to his own public repository 4. The contributor notifies the configuration manager requesting to pull changes 5. The configuration manager adds the contributor’s repository as a remote and merges locally 6. The configuration manager pushes merged changes to the main project repository

Git: States of Software Configuration Items Tracked add the file (git add) Untracked Unmodified Modified Staged edit the file stage the file remove the file commit git add is a multipurpose command (to begin tracking new files, to stage files, etc., e.g., marking merge-conflicted files as resolved Using git add we signal to Git that we wish to “add this content to the next commit” (place it to the “staging area”) Next time we execute git commit, Git will “add this file to the project” http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository

Undo: Reverting vs. Resetting HEAD HEAD C0 C1 C2 C0 C1 C2 Undo C2 commit: C2 undone but not removed from project history Undo C2 commit: HEAD HEAD C2 removed from project history C0 C1 C2 C1′ C0 C1 C2 C2 Chacon & Straub: “Pro Git”, page 324 <--> http://schacon.github.io/gitbook/4_undoing_in_git_-_reset,_checkout_and_revert.html https://www.atlassian.com/git/tutorials/undoing-changes git revert undoes a committed snapshot C2 by undoing the changes and appending a new commit C1′ (instead of removing the commit C2 from the project history)  “safe” Historic record of abandoned versions exists git reset works backwards from the current commit by removing all of the commits after the target commit  “unsafe” No historic record of abandoned versions

Merge on Large/Important Projects (b) master develop master develop C0 C1 C2 C0 C1 C2 C5 C3 C4 C3 C4 topic topic (c) master develop C0 C1 C2 C5 This is as opposed to what? C3 C4 topic (a) Before a topic branch merge (b) After a topic branch merge (c) After a project release