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

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

Version Control with Git ME 461 Fall 2018

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

Project Management. Overview

CSC 2700: Scientific Computing

Visualizing Git Workflows. A visual guide to 539 workflows

Version Control System GIT

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

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

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

Configuration Management

February 2 nd Jean Parpaillon

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

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

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

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

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

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

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

COSC345 Software Engineering. Version Control

Review Version Control Concepts

Tizen/Artik IoT Practice Part 4 Open Source Development

TCSS 360: SOFTWARE DEVELOPMENT AND QUALITY ASSURANCE

VSO. Configuration Management

Version control CSE 403

Version Control. Ioannis N. Athanasiadis. with slides from Solution Perspective Media and Software Carpentry

Lab 08. Command Line and Git

Revision Control and GIT

Version Control Systems (Part 1)

Revision Control. An Introduction Using Git 1/15

CS314 Software Engineering Configuration Management

クラウド開発演習 ( 課題解決型学習 ) Project-/Problem-Based Learning on Cloud Computing

Version Control Systems: Overview

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


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

Source Code Control & Bug Tracking

Version Control Systems (VCS)

Introduction to Version Control with Git

Version Control System - Git. zswu

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

Software configuration management

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

Version Control. Version Control

Distributed Version Control

EGit in Eclipse. Distributed Verzion Control Systems

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

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

Introduction to Git and GitHub. Tools for collaboratively managing your source code.

Version Control. Version Control

Version control CSE 403

Subversion Repository Layout

Version Control Systems

Weak Consistency and Disconnected Operation in git. Raymond Cheng

Version (Source Code) Control SWEN-250

Git tutorial. Katie Osterried C2SM. October 22, 2015

Git for Subversion users

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

Do not sketch Finite State Machines on a first date

Introduction to Monte Python

Github/Git Primer. Tyler Hague

Introduction to Git and Github Repositories

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

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

Branching and Merging

Rekayasa Perangkat Lunak

Laboratorio di Programmazione. Prof. Marco Bertini

Revision control. INF5750/ Lecture 2 (Part I)

An Introduction to Subversion

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

A Comparative Study on Different Version Control System

License. Introduction to Version Control with Git. Local Version Control Systems. Why Use Version Control?

CS 520: VCS and Git. Intermediate Topics Ben Kushigian

Construction: version control and system building

CS 390 Software Engineering Lecture 3 Configuration Management

Revision Control. Software Engineering SS 2007

Git for Newbies. ComMouse Dongyue Studio

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

Git Introduction CS 400. February 11, 2018

Introduction to Git and Github

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

Version Control for Fun and Profit

What is Subversion and what does it do?

A BASIC UNDERSTANDING OF VERSION CONTROL

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

Week 5. CS 400 Programming III

INET

Construction: version control and system building

Source Code Management wih git

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

Subversion Branching and Merging. Jan Skalický

Source Code Management

Programming in the large. Lecture 22: Configuration Management. Agenda for today. Bertrand Meyer. Bernd Schoeller

Configuration. Monday, November 30, :28 AM. Configuration

Con$nuous Integra$on Development Environment. Kovács Gábor

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

CS 320 Introduction to Software Engineering Spring February 06, 2017

Department of Computer Science College of Engineering Boise State University

History of the development of Lua

Introduction to Revision Control

Transcription:

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

SCM SOFTWARE CONFIGURATION MANAGEMENT SOURCE CODE MANAGEMENT Generic term for the ability to manage multiple versions of a document a collection of documents

SOFTWARE CONFIGURATION MANAGEMENT BUILT-IN EXAMPLES Microsoft Word backup copies or auto-save MAC OS X Time Machine Revision Management Wikipedia Page History Google Docs Change History

SOFTWARE CONFIGURATION MANAGEMENT

MOTIVATION GENERAL Backups Restore against disaster Robust backups Restore against vandalism Backups for collections Recognizing the dependencies between files Preferences and configuration files also

MOTIVATION SOFTWARE AS A SPECIFIC CASE A version of software refers to a collection of files source code graphics assets project build configuration files libraries These have to all be in sync or the project won t build and run

MOTIVATION SOFTWARE AS A SPECIFIC CASE At the same time multiple versions are in the wild A version that has been released A version that is being worked on by developers for the next release A customized version for a specific client A version that was forked to go in a different conceptual direction

MULTIPLE VERSIONS OF SOFTWARE One could just keep a complete copy of all files for each release However this means many nearly-identical copies are being kept Requires a lot of discipline on the part of an organization to archive and organize Careful permissions need to be managed for access to read versus write versus copy In some cases intellectual property also needs to be tracked

SOFTWARE CONFIGURATION MANAGEMENT STAND-ALONE EXAMPLES Version Control Systems Support check-in and change management of files in general Automate the management of the software Examples subversion (svn) Bit Keeper Mercurial Git Git Hub

SEMANTIC VERSIONING AVOIDS DEPENDENCY HELL Libraries save enormous amounts of space When you want to release a new version of a piece of software that depends on other software that is also constantly releasing new versions. Without a consistent way of understanding how versions change you might have to keep a separate version of every library for every thing that depends on it http://semver.org/

SEMANTIC VERSIONING A NUMBERING SCHEME FOR LINEAR CHANGES Given a version number MAJOR.MINOR.PATCH, increment the: MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwardscompatible manner, and PATCH version when you make backwards-compatible bug fixes. http://semver.org/

MAJOR.MINOR.PATCH 4 5 4.0 4.1 5.0 5.1 4.0.0 4.0.1 4.1.0 4.1.1 4.1.2 5.0.0 5.0.1 5.1.0 5.1.1 5.1.2 This is for releases Less helpful for active developing of a whole collection of files the files

TERMS Repository A location where files and their history are kept Checking Out Obtaining a copy of the file(s) in the repository Working copy The copy of the files that you have checked out Checking in or Committing Returning changed files to a repository

TERMS Branching When files have a common parent but are being changed in parallel Merging Combining branches into one common descendent Conflict When merging can t be done automatically Resolve Fix conflicts

Time Trunk 1 Branch 2 3 Merge 4 Release Branch T1 5 6 7 Merge 9 8 Release T2 10 Fork

REPRESENTATION Over time changes to a source code repository are not a linked list because of branches 1 2 3 are not a tree because of merges T1 4 5 are not a directed graph because time 6 prevents cycles 7 are a directed acyclical graph or DAG 9 8 T2 10

TERMS Clone Copying an entire repository, history and all Delta compression Only keeping information about changes between each branch, commit or merge Tag To label a commit for future reference Push and Pull Sync repositories with each other

HISTORICAL PERSPECTIVE How did we get to where we are today? rcs ci/co (cerca 1980) cvs (cerca 1986) svn (cerca 2004) git (cerca 2005) github (cerca 2009)

TOOLS GUI FOR GIT https://www.atlassian.com/software/sourcetree

TOOLS ACCOUNT ON GITHUB https://github.com/

CODE IN THE WILD Let s look at a project in the wild bitcoin

EXERCISE HOW ARE WE GOING TO USE GIT? We will establish a project All code will be in the same repository Each team can make pull requests that focus on their components

MORE INFORMATION Version Control on Wikipedia https://en.wikipedia.org/wiki/version_control git tutorial on github https://try.github.io/levels/1/challenges/1 git tutorial on codecademy https://www.codecademy.com/learn/learn-git