Ingegneria del Software Corso di Laurea in Informatica per il Management (D)VCS. Davide Rossi Dipartimento di Informatica Università di Bologna

Similar documents
Version control CSE 403

Version control CSE 403

Version control CSE 403

Topics covered. Introduction to Git Git workflows Git key concepts Hands on session Branching models. Git 2

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

CSCI 2132: Software Development. Norbert Zeh. Faculty of Computer Science Dalhousie University. Subversion (and Git) Winter 2019

Version Control: Gitting Started

Distributed Version Control

CPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management

CSC 2700: Scientific Computing

Version Control Systems

INET

GIT TUTORIAL. Creative Software Architectures for Collaborative Projects CS 130 Donald J. Patterson

Fundamentals of Git 1

Beyond git add/commit/push

Version Control Systems (Part 1)

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

Review Version Control Concepts

[Software Development] Development Tools. Davide Balzarotti. Eurecom Sophia Antipolis, France

Source Code Management wih git

FAQ Q: Where/in which branch do I create new code/modify existing code? A: Q: How do I commit new changes? A:

Project Management. Overview

git the SCM system Jan-Simon Möller training.linuxfoundation.org

Git for Subversion users

Version Control. So#ware Quality Quality Audit and Cer2fica2on. Master in Computer Engineering. Roberto García

Revision control. INF5750/ Lecture 2 (Part I)

February 2 nd Jean Parpaillon

Version Control Systems: Overview

Software Architecture

Source Code Control & Bug Tracking

2/8/18. Overview. Project Management. The First Law. What is Project Management? What Are These Changes? Software Configuration Management (SCM)

A BASIC UNDERSTANDING OF VERSION CONTROL

Laboratorio di Programmazione. Prof. Marco Bertini

EGit in Eclipse. Distributed Verzion Control Systems

Versioning Systems. Tolu Oguntusin(too06u) 12th November, University of Nottingham

Version Control System - Git. zswu

Decentralized Version Control Systems

M E R C U R I A L (The Source Control Management)

Subversion Repository Layout

Source Code Control. Quiz with Explainations. Hans-Petter Halvorsen, M.Sc.

Software configuration management

Welcome! Virtual tutorial will start at 15:00 GMT. Please leave feedback afterwards at:

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Version Control Systems (VCS)

Prof. Dr. Marko Boger. Prof. Dr. Christian Johner. Version Management

Tools for software development:

Revision control systems (RCS) and. Subversion

Visualizing Git Workflows. A visual guide to 539 workflows

Git for Newbies. ComMouse Dongyue Studio

Version Control Systems

Part I Part 1 Version Control Systems (VCSs)

The Rock branching strategy is based on the Git Branching Model documented by Vincent Driessen.

Part I Part 1 Version Control Systems (VCSs)

Version Control Systems

Version Control for the 2- Pizza Team: Merge Conflicts (ELLS 9.5) Armando Fox

AIS Grid School 2015

Source Code Management

Version Control Systems. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

Introduction, Instructions and Conventions

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018


Version Control Systems

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group

Configuration Management

Version Control with Git ME 461 Fall 2018

Development in code_aster Using Mercurial. Code_Aster, Salome-Meca course material GNU FDL licence (

Part I Part 1 Version Control Systems (VCSs)

A Practical Introduction to Version Control Systems

Code Versioning. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies

COSC345 Software Engineering. Version Control

CS 320 Introduction to Software Engineering Spring February 06, 2017

CS314 Software Engineering Configuration Management

GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY

Part I Part 1 Version Control Systems (VCSs)

Part I Part 1 Version Control Systems (VCSs)

Git and GitHub. Dan Wysocki. February 12, Dan Wysocki Git and GitHub February 12, / 48

Push up your code next generation version control with (E)Git

... Fisheye Crucible Bamboo

Conduite de Projet Cours 2 Version Control

Revision Control and GIT

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

TDDC88 Lab 4 Software Configuration Management

Human Version Control

Darcs what, why and how. Ganesh Sittampalam London HUG, 24 th April 2013

Git: Distributed Version Control

Θερινό Σχολείο, Ιουλίου git. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

CS 390 Software Engineering Lecture 5 More Git

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

CESSDA Expert Seminar 13 & 14 September 2016 Prague, Czech Republic

Revision Control. An Introduction Using Git 1/15

Version Control System GIT

Do not sketch Finite State Machines on a first date

Ingegneria del Software Corso di Laurea in Informatica per il Management

Computer Science Design I Version Control with Git

Accessing OSIRIS and using OSIRIS through GitHub

Git. Christoph Matthies Software Engineering II WS 2018/19. Enterprise Platform and Integration Concepts group

Version Control. Version Control. Human Version Control. Version Control Systems

Transcription:

Ingegneria del Software Corso di Laurea in Informatica per il Management (D)VCS Davide Rossi Dipartimento di Informatica Università di Bologna

Rationale for version control Control the revisions of artifacts produced and modified during the development process Support team work

Historic perspective Local VCS 1972 SCCS 1982 RCS Client-server VCS 1990 CVS (client-server) 2000 SVN Distributed VCS 1990s TeamWare / 1998 BitKeeper 2003 Monotone / Darcs / 2006 Arch 2005 Bazaar / Mercurial / git

Basic principles The working copy The repository The files in the working copy that are not still in the repo or the files that differ from the last version of the same files in the repo Commit These are the versioned project files The pending changeset These are the project files as stored in the file system used by the development team Commit the pending changeset to the repo Update Align the working copy with the repo

Initial artifact [source: "Version Control by Example" by E. Sink]

Add [source: "Version Control by Example" by E. Sink]

Edit [source: "Version Control by Example" by E. Sink]

Delete [source: "Version Control by Example" by E. Sink]

Rename [source: "Version Control by Example" by E. Sink]

Move [source: "Version Control by Example" by E. Sink]

Status [source: "Version Control by Example" by E. Sink]

Diff [source: "Version Control by Example" by E. Sink]

Revert [source: "Version Control by Example" by E. Sink]

Log [source: "Version Control by Example" by E. Sink]

Tag [source: "Version Control by Example" by E. Sink]

Branch [source: "Version Control by Example" by E. Sink]

Merge [source: "Version Control by Example" by E. Sink]

Resolve [source: "Version Control by Example" by E. Sink]

Lock [source: "Version Control by Example" by E. Sink]

Centralized version control [Image credits: David Vega]

Centralized version control Each user works on a local copy A remote central repository is the single source of truth Working copies get in sync with the remote repo with updates and commits

Simple distributed version control [Image credits: David Vega]

Simple distributed version control Each user has a local repository Working copies are synced with the local repo using commits and updates Local repos are synced with the central repo using push and pull The central repo acts as the source of truth

Fully distributed version control [Image credits: David Vega]

Fully distributed version control Peer-to-peer Central repo could or could not exist No single source of truth

Branches A duplication of an object under source control Branches form hierarchies Child branch Parent (upstream) Trunk (parent less branch) Divergent branches can later be merged (i.e. integrated with an ancestor) A branched not intended to later be merged is usually called a fork

git A VCS designed to be Reliable High-performance Distributed Written in 2 weeks by Linus Torvalds (of course it then took several years for a fast hack to become a manageable application) Keyword: branching

git workflows Centralized Feature branch Gitflow

git centralized workflow [Image credits: atlassian.com]

git centralized workflow

When divergence occurs git pull --rebase origin master

When conflict occurs git add <some-file> git rebase --continue

Synchronization done - publish git push origin master

Feature branch workflow All feature development should take place in a dedicated branch Once the feature is completed the feature branch is pushed and a pull request is open Once the pull request is accepted the feature branch is merged

Gitflow workflow Two main (historical) branches: Master and Develop Feature branches derive from Develop (and are merged with it) When getting close to a release a Release branch is derived from Develop; no new feature are committed to a Release branch; when ready to ship Release is merged with Master

Gitflow workflow Hotfix branches are the only branches derived from Master; they are used for bug-fixing only and soon merged back

Conclusion A (D)VCS is the backbone of a software project All artifacts should be committed there (D)VCS can take some time to be mastered but learning how to use them is well-spent time