Version Control Systems (VCS)

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

Version control system (VCS)

Version Control with Git ME 461 Fall 2018

A BASIC UNDERSTANDING OF VERSION CONTROL

Revision Control and GIT

Tools for software development:

Computer Science Design I Version Control with Git

Version control CSE 403

Version Control Systems (Part 1)

Distributed Version Control

Version Control Systems: Overview

Project Management. Overview

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

Version Control. CSC207 Fall 2014

Version Control System - Git. zswu

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

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

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

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

CS 320 Introduction to Software Engineering Spring February 06, 2017

Version Control. Version Control

Software Development I

Version Control Systems

Git for Subversion users

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

AIS Grid School 2015

Version Control Systems

CSC 2700: Scientific Computing

Revision control. INF5750/ Lecture 2 (Part I)

Version Control. Version Control

A Practical Introduction to Version Control Systems

Revision Control. An Introduction Using Git 1/15

Git tutorial. Katie Osterried C2SM. October 22, 2015

TDDC88 Lab 4 Software Configuration Management


Bazaar VCS. Concepts and Workflows

Version control CSE 403

Revision control systems (RCS) and. Subversion

Introduction to Revision Control

Visualizing Git Workflows. A visual guide to 539 workflows

VSO. Configuration Management

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

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

Laboratorio di Programmazione. Prof. Marco Bertini

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

Git. A Distributed Version Control System. Carlos García Campos

Introduction to Git and Github

Department of Computer Science College of Engineering Boise State University

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

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

February 2 nd Jean Parpaillon

Revision Control. Software Engineering SS 2007

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

Version Control with Git

Version control CSE 403

Using Git to Manage Source RTL

Version Control System. -- base on Subversion 1.4

Warmup. A programmer s wife tells him, Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.

GUIDE TO MAKE A REAL CONTRIBUTION TO AN OPEN SOURCE PROJECT 1. 1

Common Git Commands. Git Crash Course. Teon Banek April 7, Teon Banek (TakeLab) Common Git Commands TakeLab 1 / 18

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

CSE 374 Programming Concepts & Tools. Hal Perkins Winter 2012 Lecture 16 Version control and svn

Introduction to Version Control

Version Control with GIT: an introduction

GIT VERSION CONTROL TUTORIAL. William Wu 2014 October 7

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

Submitting your Work using GIT

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

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

Version Control Systems

Git. Presenter: Haotao (Eric) Lai Contact:

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

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

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

Version Control System GIT

Git for Version Control

Git Guide. Meher Krishna Patel. Created on : Octorber, 2017 Last updated : October, More documents are freely available at PythonDSP

COSC345 Software Engineering. Version Control

Hg Tutorial. For : COP Object oriented Programming (Using C++) Biswas Parajuli

CS2720 Practical Software Development

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b

Part I Part 1 Version Control Systems (VCSs)

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

Part I Part 1 Version Control Systems (VCSs)

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

git and the virtue of version control ECE /2/2015

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

Fundamentals of Git 1

Tizen/Artik IoT Practice Part 4 Open Source Development

Subversion Repository Layout

FEEG Applied Programming 3 - Version Control and Git II

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes

Git Introduction CS 400. February 11, 2018

Programming with Haiku

Git, the magical version control

How to be a git. Dominic Mitchell

Source Code Management wih git

INET

Version Control for Fun and Profit

Software Architecture

Transcription:

Version Control Systems (VCS) Xianyi Zeng xzeng@utep.edu Department of Mathematical Sciences The University of Texas at El Paso. September 13, 2016.

Version Control Systems Let s get the textbook! Online textbook: Victor Eijkhout, Introduction to High- Performance Scientific Computing. http://pages.tacc.utexas.edu/~eijkhout/istc/ istc.html Get both the pdf version and source files. https://bitbucket.org/victoreijkhout/ hpc-book-and-course Fetch all the resources! hg clone https://bitbucket.org/victor Eijkhout/hpc-book-and-course mycopy

Version Control Systems Source control at a glance The preceding command to get a repository. hg clone source target VCS tool. Action. Repository. Local copy. Some common VCS tools: cvs: Concurrent version system. svn: Subversion. git: The stupid content tracker. hg: Mercurial. What do they do? Keep track the development history of a project. Maintain different versions of the project. Facilitate collaborations on the same project. Is NOT worry free! Mostly reliable on tracking text files.

Version Control Systems Source control at a glance The preceding command to get a repository. hg clone source target VCS tool. Action. Repository. Local copy. Some common VCS actions: clone: Get the source from a repository. add/rm/mv/cp: File management of the source under control. checkout: Switch to a certain revision of a certain branch. commit: Save the changes and create a check point (reversion). diff: Compare different reversions. merge: Combine different branches.

A Simple Git Project Get started: Record keeping Let s start a project on fluid-solid interaction. What do we do? Create a directory fsi.git and cd it. mkdir fsi.git; cd fsi.git Initiate a git repository git init This will create.git/ Create and add some files to the repository using: git add. Commit all the changes git commit -m "Some development message" This will create the first check point (revision) of the project. Continue to do so and create several revisions when appropriate.

A Simple Git Project Get started: Record keeping Let s start a project on fluid-solid interaction. What can we do? Make a copy of the project: git clone fsi.git loc.copy Look at the development history: git log Switch back to a previous revision: git checkout <rev.no> Discussion: How about git reset or git revert? Compare two different revisions: git diff <rev.1> <rev.2> [something]

A Simple Git Project Create a new branch Two people join and work on the fluid and solid, respectively. Create a new branch called fluid. Make a clone of the repository. git clone fsi.git fluid.git Create the new branch. git branch fluid git checkout fluid

A Simple Git Project Create a new branch Two people join and work on the fluid and solid, respectively. Keep both the origin and current repositories updated. Push the new branch/any changes to the origin. git push origin fluid:fluid Gather the new information from the origin. git fetch origin Pull the updates from the origin. git pull origin fluid:fluid

A Simple Git Project Merge branches and resolve conflicts Let s say we make some progress on master, and want to get anything new from fluid. When we are on the branch master: Attempt to merge the branch fluid. git merge fluid An automatic algorithm is called to merge the two branches. Upon success, both the sources and the logs are merged. Upon success, a new commit is created.

A Simple Git Project Merge branches and resolve conflicts Let s say we make some progress on master, and want to get anything new from fluid. When automatic merge fails, we need to resolve the conflicts: Option 1: choose which version to keep. Option 2: manually modify the conflicted files. Once finished, mark the conflict as resolved and commit. Won t be able to commit if there are unresolved conflicts.

Other VCS Systems and Resources Repository models and concurrency models Repository model. Client-server model: Developers access a master repository via a client (local working copy). Any changes must be committed to the master repository. The server maintains a full development history. Examples: cvs, svn. Distributed model: Repositories act as peers. Any peer can talk to any other peer/peers. Each repository maintain its version history. Examples: git, hg.

Other VCS Systems and Resources Repository models and concurrency models Concurrency model. Lock model: Only allow one user to modify one file at the a time. A user must lock a file before making changes to it. Usually only possible in a client-server model. Example: svn. Merge model: Many developers are allowed to edit the same file simutaneously. Users are informed of possible conflicts upon merging. Distributed system almost always implies a merge model. Examples: cvs, svn, git, hg. Do not bet everything on the lock-unlock model, or the automatic merge. Developers should talk to each other whenever necessary!

Other VCS Systems and Resources Further reading A very good tutorial on git: https://www.atlassian.com/git/tutorials/ learn-git-with-bitbucket-cloud A graphical guide to mercurial: https://www.mercurial-scm.org/wiki/ UnderstandingMercurial Eclipse: A GUI for various version control systems. http://www.eclipse.org Bitbucket: A web-based hosting service that we will use for submitting lab assignment for this course. https://bitbucket.org