Version Control System

Slides:



Advertisements
Similar presentations
Week 2 DUE This Week: Safety Form and Model Release DUE Next Week: Project Timelines and Website Notebooks Lab Access SharePoint Usage Subversion Software.
Advertisements

Version control Michael Tsai 2012/4/10. Reference guide-to-version-control/
Version Control 1.  Version control (or revision control) is the term for the management of source files, and all of the intermediate stages as development.
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
David Notkin Autumn 2009 CSE303 Lecture 22 Subversion is an open source version control system. Social Implications Friday version control system.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Version Control and Subversion Chris Coakley. Outline What is Version Control? Why use it? Using Subversion (SVN)
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Today Rest of the demos (no escape!) Now that you tried group work without version control, making your life easier WITH it. You all got groups for #2?
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
SubVersioN – the new Central Service at DESY by Marian Gawron.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
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 with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Subversion. What is Subversion? A Version Control System A successor to CVS and SourceSafe Essentially gives you a tracked, shared file system.
Introduction to Version Control
The Design Workshop Introduction to Version Control 1.
Revision Control and Issue Tracking Andrew Watkins.
Version Control with Subversion Quick Reference of Subversion.
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.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
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.
Prepared by: Steve Teo Contributors: Tong Huu Khiem.
Version control Using Git Version control, using Git1.
ITEC 370 Lecture 16 Implementation. Review Questions? Design document on F, feedback tomorrow Midterm on F Implementation –Management (MMM) –Team roles.
2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or.
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?
SENG 403 Tutorial 1 1SENG 403 – Winter Agenda Version Control Basics Subversion Basic actions in Subversion Some examples 2SENG 403 – Winter 2012.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
Team 708 – Hardwired Fusion Created by Nam Tran 2014.
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
Prepared by: Steve Teo Contributors: Tong Huu Khiem.
Version Control Reducing risk with version control Jon Austin
Version Control and SVN ECE 297. Why Do We Need Version Control?
1 CSE 303 Lecture 19 Version control and Subversion ( svn ) slides created by Marty Stepp
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
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.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git Girish Git VCS that I have used ClearCase, cvs, svn Happy p4 user.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
4 Version control (part 1)
Information Systems and Network Engineering Laboratory II
Discussion #11 11/21/16.
Version Control CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Version Control with Subversion
11 Version control (part 2)
SVN intro (review).
Source Control Dr. Scott Schaefer.
Discussion 11 Final Project / Git.
Version control, using Git
CISC/CMPE320 - Prof. McLeod
Development and Deployment
LECTURE 3: Software Configuration Management
Introduction to Configuration Management
Subversion Basics Guide
Git CS Fall 2018.
Version Control System - Git
Concurrent Versions System
Systems Analysis and Design I
Presentation transcript:

Version Control System The Basics

Why We Need It Backup and Restore. Synchronization. Short-term undo. Long-term undo. Track Changes. Track Ownership. Sandboxing. Branching and merging.

Terminologies Repository (repo): The database storing the files. Server: The computer storing the repo. Client: The computer connecting to the repo. Working Set/Working Copy: Your local directory of files, where you make changes. Trunk/Main: The primary location for code in the repo. Think of code as a family tree — the trunk is the main line.

Basic Actions Add: Put a file into the repo for the first time, i.e. begin tracking it with Version Control. Revision: What version a file is on (v1, v2, v3, etc.). Head: The latest revision in the repo. Check out: Download a file from the repo. Check in: Upload a file to the repository (if it has changed). The file gets a new revision number, and people can “check out” the latest one. Checkin Message: A short message describing what was changed. Changelog/History: A list of changes made to a file since it was created. Update/Sync: Synchronize your files with the latest from the repository. This lets you grab the latest revisions of all files. Revert: Throw away your local changes and reload the latest version from the repository.

Advance Actions Branch: Create a separate copy of a file/folder for private use (bug fixing, testing, etc). Diff/Change/Delta: Finding the differences between two files. Useful for seeing what changed between revisions. Merge (or patch): Apply the changes from one file to another, to bring it up-to-date. For example, you can merge features from one branch into another. (At Microsoft this was called Reverse Integrate and Forward Integrate) Conflict: When pending changes to a file contradict each other (both changes cannot be applied). Resolve: Fixing the changes that contradict each other and checking in the correct version. Locking: Taking control of a file so nobody else can edit it until you unlock it. Some version control systems use this to avoid conflicts. Breaking the lock: Forcibly unlocking a file so you can edit it. It may be needed if someone locks a file and goes on vacation .

svn add list.txt (modify the file) svn ci list.txt -m "Changed the list"

Resolving conflicts: Re-apply your changes. Sync to the the latest version (r4) and re-apply your changes to this file: Add hot dog to the list that already has cheese. Override their changes with yours. Check out the latest version (r4), copy over your version, and check your version in. In effect, this removes cheese and replaces it with hot dog.

Tags are just branches that you agree not to edit;

We’re at Media Player 10 and IE 6 We’re at Media Player 10 and IE 6. The Media Player team makes version 11 in their own branch. When it’s ready and tested, there’s a patch from 10 – 11 which is applied to Main. This a reverse integration, from the branch to the trunk. The IE team can do the same thing. Later, the Media Player team can pick up the latest code from other teams, like IE. In this case, Media Player forward integrates and gets the latest patches from main into their branch. 

Everyone syncs and checks into the main trunk

Every developer has their own repo Every developer has their own repo. Sue’s changes live in her local repo, which she can share with Joe or Eve

Centralized VS Distributed Centralized version control focuses on synchronizing, tracking, and backing up files. Distributed version control focuses on sharing changes; every change has a guid or unique id. Recording/Downloading and applying a change are separate steps (in a centralized system, they happen together). Distributed systems have no forced structure. You can create “centrally administered” locations or keep everyone as peers

Push VS Pull push: send a change to another repository (may require permission) pull: grab a change from a repository

DVCS Advantages Everyone has a local sandbox. You can make changes and roll back, all on your local machine. It works offline. You only need to be online to share changes. It’s fast. Diffs, commits and reverts are all done locally. It handles changes well. Distributed version control systems were built around sharing changes. Every change has a guid which makes it easy to track. Branching and merging is easy. Because every developer “has their own branch”, every shared change is like reverse integration.

DVCS Disadvantages There’s not really a “latest version”. If there’s no central location, you don’t immediately know where the latest version reside. Again, a central location helps clarify what the latest “stable” release is. There aren’t really revision numbers. Every repo has its own revision numbers depending on the changes.

A working copy. The files you are currently editing. A repository. A directory (.hg in Mercurial) containing all patches and metadata (comments, guids, dates, etc.). There’s no central server so the data stays with you.

Updates or merges happen in several steps: Getting the change into a repo (pushing or pulling) Applying the change to the files (update or merge) Saving the new version (commit) Updates happen when there’s no ambiguity. Merges are needed when we have conflicting changes.