Version Control. Luka Milovanov lmilovan@abo.fi



Similar documents
Revision control systems (RCS) and

Introduction to Subversion

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

CSE 374 Programming Concepts & Tools. Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn

Version Control with Subversion

Using SVN to Manage Source RTL

Subversion Integration for Visual Studio

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

Introduction to Source Control Management in OO 10

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Continuous Integration. CSC 440: Software Engineering Slide #1

Version Control with Subversion

Subversion. Nadir SOUALEM. Linux Users subversion client svn or higher. Windows users subversion client Tortoise 1.6.

Version Control Systems

SVN Starter s Guide Compiled by Pearl Guterman June 2005

CSCB07 Software Design Version Control

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Beginning with SubclipseSVN

Using SVN to Manage Source RTL

Introduction to Git. Markus Kötter Notes. Leinelab Workshop July 28, 2015

SOE. managing change in system development projects: configuration management

[PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14]

Configuration & Build Management

Software Configuration Management. Context. Learning Objectives

Software Configuration Management. Addendum zu Kapitel 13

OFBiz Addons goals, howto use, howto manage. Nicolas Malin, Nov. 2012

Subversion workflow guide

Theme 1 Software Processes. Software Configuration Management

Source Control Systems

Version control tracks multiple versions. Configuration Management. Version Control. V Software Engineering Lecture 12, Spring 2008

Version Control Using Subversion. Version Control Using Subversion 1 / 27

Using Subversion in Computer Science

SVN Setup and Configuration Management

Modulo II Software Configuration Management - SCM

using version control in system administration

Version Control with Subversion and Xcode

Managing Source Code With Subversion

Source Code Management/Version Control

Introduction to the Git Version Control System

Jazz Source Control Best Practices

Ingeniørh. Version Control also known as Configuration Management

Version Control Tools

TIME. Programming in the large. Lecture 22: Configuration Management. Agenda for today. About your Future. CM: The short version. CM: The long version

Software Configuration Management.

Source code management systems

SOFTWARE DEVELOPMENT BASICS SED

Version control with Subversion

Introduction to Programming Tools. Anjana & Shankar September,2010

Xcode Source Management Guide. (Legacy)

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Work. MATLAB Source Control Using Git

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

Git, GitHub & Web Hosting Workshop

Application Lifecycle Management White Paper. Source Code Management Best Practice: Applying Economic Logic to Migration ALM

Surround SCM Best Practices

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

PxPlus Version Control System Using TortoiseSVN. Jane Raymond

Software configuration management

Version Control! Scenarios, Working with Git!

UOFL SHAREPOINT ADMINISTRATORS GUIDE

Version Control with Git. Dylan Nugent

Mercurial. Why version control (Single users)

Syncro SVN Client 4.2 User Manual. SyncRO Soft Ltd.

Software Configuration Management (SCM)

Version Control with Git

Software Configuration Management and Change Management

Continuous Integration (CI) and Testing - Configuring Bamboo, Hudson, and TestMaker

Introduc)on to Version Control with Git. Pradeep Sivakumar, PhD Sr. Computa5onal Specialist Research Compu5ng, NUIT

Version Control Tutorial using TortoiseSVN and. TortoiseGit

Git. A Distributed Version Control System. Carlos García Campos carlosgc@gsyc.es

Module 11 Setting up Customization Environment

Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat

Content. Development Tools 2(63)

Advanced Computing Tools for Applied Research Chapter 4. Version control

Version Uncontrolled! : How to Manage Your Version Control

PKI, Git and SVN. Adam Young. Presented by. Senior Software Engineer, Red Hat. License Licensed under

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger

BlueJ Teamwork Tutorial

ultimo theme Update Guide Copyright Infortis All rights reserved

enterprise IBM Rational Team Concert 2 Essentials

Developing Software in a Private workspace PM PMS

EAE-MS SCCAPI based Version Control System

Software Delivery Integration and Source Code Management. for Suppliers

MapGuide Open Source Repository Management Back up, restore, and recover your resource repository.

How to set up SQL Source Control. The short guide for evaluators

Transcription:

Version Control Luka Milovanov lmilovan@abo.fi

Configuration Management Configuration management is the management of system change to software products Version management: consistent scheme of version identification System building (assembling components into a system) Change management: configuration data base records information about changes and change requests System releases include executable code, data, configuration files and documentation CASE tools are available to support all CM activities (stand-alone and integrated systems)

CASE Tools for Configuration Management Versioning RCS (Revision Control System) CVS (Concurrent Version Control) Subversion Build Shell scripts, make, ant Change Management Bug database, change tracking Release Management Feature tracking, rpm (build packages) Configuration management = Version + Change + Build +Release Rational ClearCase SourceForge

Version Control Discipline of managing the evolution of software Key element for moving from initial (undefined process) to repeatable (project management) stages in software systems development Keep track of the evolution of software When was a change made? Why was it made? What exactly was changed? Make it possible (easier) to try out new parts and revert bad changes A collaboration tool for multiple developers

How? Usually by having special software that aids in version control The software keeps different versions in a repository The developer checks out the program onto his computer This workspace acts as the place where changes to the program can be made Finally, the changes are committed to the repository

Repository A shared database for engineered artifacts Avoids: Overwriting one developer's changes by someone else Forgetting what changes were made in an earlier version Advantages: Freeing developer's creativity since it's easy to revert back to any change if something went wrong Tracking and remembering any change Quite transparent in the development process

Repository, cont. Additional features Bug-tracking systems, patch managers, mailing lists Allows queries about configurations to be answered Who has a particular system version? What platform is required for a particular version? What versions are affected by a change to component X? How many reported faults in version T? Operations Check out (import) Obtain an existing version of an item from the database Check in (commit) Add new version of an item into the database It is not possible to modify existing items in the database. You need to create a new version

Version Derivation Structure The repository The repository's filesystem Imagine an array of revision numbers, starting at 0, stretching from left to right Each revision number has a filesystem tree hanging below it Each tree is a snapshot of the way the repository looked after each commit.

Basic Operations Checkout Add a file (or directory, symlink etc..) Remove a file Rename a file Committing changes Retaining previous versions

Subversion A better CVS Centralized server Supports file renaming (unlike CVS) Changes are in fact atomic (unlike CVS) Supports arbitrary tagging of files using named properties Example: the svn:ignore property of a directory tells which files to ignore (e.g. temporary object files)

SVN Revision Numbers Subversion's revision numbers apply to entire trees, not individual files Each revision number selects an entire tree, a particular state of the repository after some committed change Another way to think about it is that revision N represents the state of the repository filesystem after the Nth commit When a Subversion user talks about revision 5 of foo.c, they really mean foo.c as it appears in revision 5. Notice that in general, revisions N and M of a file do not necessarily differ!

Checkout svn checkout http://hera.cs.abo.fi:8080/lab1_2005/luka_course_project checks out the Luka s course assignment Every directory has a special.svn directory containing metadata about the project

Basic Work Cycle 1. Update your working copy svn update 2. Make changes svn add svn delete svn copy svn move 3. Examine your changes svn status svn diff svn revert 4. Merge others'changes svn merge svn resolved 5. Commit your changes svn commit! If you are not adding new files, but only modifying the existing ones, you only need 2 commands: svn update and svn commit Examining History svn log Shows you broad information: log messages attached to revisions, and which paths changed in each revision svn diff Shows you the specific details of how a file changed over time svn cat This is used to retrieve any file as it existed in a particular revision number and display it on your screen svn list Displays the files in a directory for any given revision Other Useful Commands svn cleanup If Subversion ever tells you that some part of your working copy is locked, then this is the command that you should run svn import a quick way to copy an unversioned tree of files into a repository, creating intermediate directories as necessary

When to Commit Preferably: One idea One commit When substantial work has been made (your own computer's harddisk might not be backuped) Checkpointing the current code so you can try different additions Don't mix several different changes Harder to understand what parts of the change are connected Individual parts in a change are harder to revert

Tags Tags are explicitely named snapshots of the project. Useful for making an external release so that you remember exactly what you have shipped Tag your solutions (next slide) In general: bug reports from customers are then analyzed by checking out the specific tag In subversion, this is done by copying, e.g. svn cp myproject tags/0.1

Directories myproject Your Repository Layout In Subversion myproject/trunk for files and unit tests myproject/solutionn for the solutions Solutions: tag when done svn copy http://[your_repository]/myproject/trunk \ http://[your_repository]/myproject/solution1 \ -m Assignment 1 completed

Subclipse

Adding a project to version control

Subclipse, checkout from repository 2 1

Subclipse, cont. 3 4 6 6