Distributed Version Control

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

Version control CSE 403

Version control CSE 403

Version Control with Git ME 461 Fall 2018

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

Version Control Systems (VCS)

Version control CSE 403

INET

Version Control Systems: Overview

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

Version Control Systems (Part 1)

CS314 Software Engineering Configuration Management

CSC 2700: Scientific Computing

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

Revision Control. An Introduction Using Git 1/15

Version Control: Gitting Started

FEEG Applied Programming 3 - Version Control and Git II

Revision Control and GIT

COSC345 Software Engineering. Version Control

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

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


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

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

The Old World. Have you ever had to collaborate on a project by

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

AIS Grid School 2015

Fundamentals of Git 1

Introduction to Git and Github

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

Using git to download and update BOUT++

Git for Version Control

Git. Presenter: Haotao (Eric) Lai Contact:

Laboratorio di Programmazione. Prof. Marco Bertini

Visualizing Git Workflows. A visual guide to 539 workflows

Tizen/Artik IoT Practice Part 4 Open Source Development

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

Overview. 1. Install git and create a Github account 2. What is git? 3. How does git work? 4. What is GitHub? 5. Quick example using git and GitHub

Software Development I

Git: Distributed Version Control

Revision control. INF5750/ Lecture 2 (Part I)

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

Version control with Git.

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.

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

CS 320 Introduction to Software Engineering Spring February 06, 2017

Managing Network Configurations with Git and GitLab

EGit in Eclipse. Distributed Verzion Control Systems

Lab 08. Command Line and Git

Version Control with Git

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

Git for Subversion users

Version Control May 26 talk starts at 3:10. Davide Del Vento

Human Version Control

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

A quick (and maybe practical) guide to Git and version control. By Jay Johnson

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week

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

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

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

Git: Distributed Version Control

Code Repository. P Blanchfield

Github/Git Primer. Tyler Hague

Version Control System - Git. zswu

Using GitHub and SourceTree to work with DITA TC repositories

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

sainsmart Documentation

b. Developing multiple versions of a software project in parallel

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

Computer Science Design I Version Control with Git

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

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

Project Management. Overview

Python Project Example Documentation

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

Subversion Repository Layout

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

Review Version Control Concepts

Git tutorial. Katie Osterried C2SM. October 22, 2015

Version control system (VCS)

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

CS 390 Software Engineering Lecture 5 More Git

Bazaar VCS. Concepts and Workflows

Introduction to Version Control

Online Remote Repositories

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

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

Git, the magical version control

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Version Control. CSC207 Fall 2014

Source Code Management wih git

Git Introduction CS 400. February 11, 2018

CS 520: VCS and Git. Intermediate Topics Ben Kushigian

Git better. Collaborative project management using Git and GitHub. Matteo Sostero March 13, Sant Anna School of Advanced Studies

chatterbot-weather Documentation

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Call for Discussion: Project Skara Investigating source code management options for the JDK sources

Introduction to Git and Github Repositories

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Software Development. Hack, hack, hack, hack, hack. Sorta works. Main.c. COMP s1

Transcription:

Distributed Version Control David Grellscheid 2014-03-17 Workshop on Advanced Techniques for Scientific Programming and Management of Open Source Software Packages 10 21 March 2014

Version management In any project, there are tedious bookkeeping tasks that need to be done: Backup of consistent project snapshots Documentation of changes Sharing of changes Distributed development by multiple people and/or in multiple locations Bug tracing through development history

Task automation The bookkeeping can be done by hand: copy things into renamed files locally: keep versions in a DB of some form centrally: a server keeps the DB, clients do the work distributed: each client holds a full copy of the DB

Tool history Only showing commonly used free/oss tools: local: RCS (1982) central: CVS (1990), SVN (2000) distributed: Darcs (2002), Bazaar, Git, Mercurial (all 2005)

Frontends and visualization Mercurial has built-in hg serve Many other GUI frontends available, try a few to find something you like Github / Bitbucket additionally give full project management tools, but keep a second repo elsewhere!

Terminology Working copy Repository (local, remote) checkout, checkin update, commit pull, push branch, merge

Working directory one version of the project, visible to be edited manual.tex sunshine.py README clouds.py rain.py is based on one version in the repository, usually the last one 3 4 5

Working directory one version of the project, visible to be edited manual.tex sunshine.py README clouds.py rain.py 5 is based on one version in the repository, usually the last one 3 4 5

Working directory one version of the project, visible to be edited manual.tex sunshine.py README clouds.py rain.py 5 is based on one version in the repository, usually the last one 3 4 5 each WD has its own copy of the full repository!

Changes working copy can be changed as usual manual.tex sunshine.py README clouds.py rain.py 5 changes are then checked in / committed as a new version 3 4 5

Changes working copy can be changed as usual manual.tex sunshine.py README clouds.py rain.py 6 changes are then checked in / committed as a new version 3 4 5 6 changeset

Backtracking older versions can be looked at at any time clouds.py rain.py 3

Remote work clone repositories to other locations / devices / people clone

Remote work clone repositories to other locations / devices / people clone each clone has all features, not distinguishable

Remote work development can happen anywhere 7 8

Remote work development can happen anywhere 7 8 push 7 8

Remote work development can happen anywhere 7 8 7 8

Remote work development can happen anywhere update 7 8 7 8

Remote work development can happen anywhere 7 8 7 8

Branches unlike in SVN, branches are a natural feature

Branches unlike in SVN, branches are a natural feature $ & ~

Branches unlike in SVN, branches are a natural feature # @ $ & ~

Branches unlike in SVN, branches are a natural feature # @ each distinct changeset has a unique ID! $ & ~

Branches unlike in SVN, branches are a natural feature # @ push each distinct changeset has a unique ID! $ & ~

Branches unlike in SVN, branches are a natural feature # @ $ & ~ $ & ~

Merging merging is automatic as far as possible # @ $ & ~ $ & ~

Merging merging is automatic as far as possible # @ $ & ~ merge $ & ~

Merging only need to fix some conflicts by hand # @ $ & ~ m $ & ~

Merging only need to fix some conflicts by hand # @ $ & ~ m push $ & ~

Merging consistent state after push # @ $ & ~ m # @ $ & ~ m

Merging consistent state after push # @ $ & ~ m # @ $ & ~ m

Merging consistent state after push # @ $ & ~ m # @ $ & ~ m

Typical usage patterns Technically, every repo is the same By agreement, designate one repo as central Tarballs or other distributions are built only from there Interaction with central repo: only push/pull from developers, no direct commits Can pipeline even more: put code-review, tester, build manager repos in between

Typical usage patterns Think about release lifetime Typically, separate release and feature branches Carefully put checkins in the right place! 2.1 2.1.1 2.2

Typical usage patterns Think about release lifetime Typically, separate release and feature branches Carefully put checkins in the right place! 2.1 2.1.1 2.2

Which branch for which checkin? Pick the innermost appropriate branch Release branch 2.1.x Main development for 2.2.0

Which branch for which checkin? Pick the innermost appropriate branch Release branch 2.1.x Main development for 2.2.0 Experimental new feature

Which branch for which checkin? Pick the innermost appropriate branch Release branch 2.1.x Main development for 2.2.0 Experimental new feature merge

Which branch for which checkin? Pick the innermost appropriate branch Release branch 2.1.x Main development for 2.2.0

Typical usage patterns If a bugfix is localizable, fix it there! 2.1 2.1.1 2.2

Typical usage patterns If a bugfix is localizable, fix it there!! 2.1 2.1.1 2.2

Typical usage patterns If a bugfix is localizable, fix it there!! 2.1 2.1.1 2.2

Typical usage patterns If a bugfix is localizable, fix it there!! 2.1 2.1.1 2.1.2 2.2

Typical usage patterns If a bugfix is localizable, fix it there!! 2.1 2.1.1 2.1.2 2.2

Summary Distributed VCS are so easy to use that there s no reason not to do so!

Summary Distributed VCS are so easy to use that there s no reason not to do so!

Summary Distributed VCS are so easy to use that there s no reason not to do so! Don t even think of writing outside version control!