"Code management in multi programmer environments."



Similar documents
Beginning with SubclipseSVN

Version Control with Subversion and Xcode

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

Using Subversion in Computer Science

Revision control systems (RCS) and

Promotion Model. CVS SUITE QUICK GUIDE 2009 Build 3701 February March Hare Software Ltd

Software Configuration Management (SCM)

Software configuration management

Version Control Systems

Source Code Management/Version Control

Version Uncontrolled! : How to Manage Your Version Control

Content. Development Tools 2(63)

Source Control Systems

Continuous Integration. CSC 440: Software Engineering Slide #1

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

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

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

CSCB07 Software Design Version Control

How To Manage A Computer System

Ingeniørh. Version Control also known as Configuration Management

Software Configuration Management. Context. Learning Objectives

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Pragmatic Version Control

Subversion Integration for Visual Studio

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

The OpenFOAM-extend project on SourceForge: current status. Bernhard Gschaider, ICE Strömungforschung GmbH

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Continuous Integration

The Essentials of File Management with LabVIEW

Working with a Version Control System

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.

Version Control. Luka Milovanov

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

Continuous Integration and Delivery at NSIDC

Taking the Complexity Out of Release Management

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

Jazz Source Control Best Practices

Developing Software in a Private workspace PM PMS

Software Delivery Integration and Source Code Management. for Suppliers

Page 1. Outline of the Lecture. What is Software Configuration Management? Why Software Configuration Management?

Source Control Guide: Git

SOFTWARE DEVELOPMENT BASICS SED

Manual. CollabNet Subversion Connector to HP Quality Center. Version 1.2

Setting up a local working copy with SVN, MAMP and rsync. Agentic

BlueJ Teamwork Tutorial

MATLAB & Git Versioning: The Very Basics

Software Configuration Management and Continuous Integration

Introducing Xcode Source Control

Lab Exercise Part II: Git: A distributed version control system

Implementing Continuous Integration Testing Prepared by:

RANCID and CVS. PacNOG 6 Nadi, Fiji

Introduction to Programming Tools. Anjana & Shankar September,2010

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

Work. MATLAB Source Control Using Git

Version Control. Version Control

NEESit Software Configuration Management Process

Software Engineering I (02161)

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

Using RSMACC version control system with AB Industrial programming Controllers and files.

Distributed Version Control with Mercurial and git

Ensure Merge Accuracy in Continuous Integration Development Environments

SVN Setup and Configuration Management

Version Control with Git

Annoyances with our current source control Can it get more comfortable? Git Appendix. Git vs Subversion. Andrey Kotlarski 13.XII.

Surround SCM Best Practices

Putting It All Together. Vagrant Drush Version Control

Advanced Computing Tools for Applied Research Chapter 4. Version control

Introduction to Software Configuration Management. CprE 556 Electrical and Computer Engineering Department Iowa State University

Version Control Tutorial using TortoiseSVN and. TortoiseGit

Word 2010: Mail Merge to with Attachments

The Real Challenges of Configuration Management

CS108, Stanford Handout #33. CVS in Eclipse

Large Projects & Software Engineering

Impact of Source Code Availability on the Economics of Using Third Party Components A White Paper

Version Control for Computational Economists: An Introduction

MDSplus Automated Build and Distribution System

ATLAS.ti 7 Project Backup

using version control in system administration

An introduction to the benefits of Application Lifecycle Management

Zoom Plug-ins for Adobe

Transcription:

Another installment in the 'Computing in high energy physics' series (16 02 2004). "Code management in multi programmer environments." Author: D. Hatton (DESY/Hamburg) Table of Contents: 1. Overview 2. Version control. What is it and why? 3. CVS (Concurrent Versions System.) 4. Seperate development paths. Branching and merging... 5. Some communication issues... About source conflicts. Automatic notifications. 6. cvsweb... A tour of the CVS web interface.

1. Overview. Software project version control. Without some reliable mechanism, the job of maintaining and tracking the source versions underlying a release becomes unnecessarily error prone and convoluted, even on a small one person project. Version tracking on a project involving several developers becomes practically impossible. What version control tools are out there? Microsoft Visual Source Safe and PVCS both of which, both of which are commercial. For this discussion, version management issues will be looked at in terms of CVS (Concurrent Versions System). It's certainly 'good enough' for most purposes and almost ubiquitous. As well as being free. Issues of multi programmer source management using CVS. Some additional tools for source navigation, bug tracking and automatic build maintainance.

2. Version control. What is it and why? What is it? Version control, essentially this is about having some means of being able to reproduce a set of source files that satisfied some set of conditions in the past. e.g. Conditions such as, an executable could be built from them which passed certain test conditions... or perhaps they exhibit some problem feature and they can be used to reproduce it. Of course we could apply this to other contexts such as document control, the principal is the same. Why use a tool for version control? Why use it? This is should be clear, but very often source versions are maintained in a manual way often in an ad hoc manner e.g. Someone develops some library, each week starting a new directory in order to 'backup' the last changes from the previous week... lrwxrwxrwx 1 fred users 9 Feb 16 13:12 current > lib week3 drwxr xr x 2 fred users 4096 Feb 16 13:11 lib week1 drwxr xr x 2 fred users 4096 Feb 16 13:12 lib week2 drwxr xr x 2 fred users 4096 Feb 16 13:12 lib week3 For large project, this can waste a lot of disk space for one thing, this is really is nothing more than a manual backup mechanism. User fred will have to create a directory for each build that he is satified with. There will be unecessary trouble in tracking changes in case of a problem later. If indeed, it is possible to track the changes at all... the backups are mostly arbitrarily based on some date. If several developers are invloved and there are several modules, it would be hard if not

impossible to avoid frequent errors... Another approach is often to keep executable versions, these tend to become dissociated from the source code meaning that if there's a problem, very often the source code simply cannot be determined. So clearly even at the most basic level, some automated version control tool will save a great deal of unecessary effort and trouble.

3. CVS (Concurrent Versions System.) What is CVS? CVS is an open source version control tool with several features that we'll be exploring. It stores project files as a set of sub directories beneath the repository root. Basic features: Maintains a central repository holding file revision changes. Allowing symbolic tags to be associated with any collection of file revisions. Parallel development using branches. Applying cvs... We'll introduce it's basic deployment by running through the steps necessary, to get the previous 'weekly backup' example under cvs... Creating the repository. CVS relies on a central directory where it stores it's administrative files as well as the target revision file information, this is known as the repository. The user fred would create say, /home/fred/project/cvs, setting the environment variable CVSROOT=/home/fred/project/CVS, this then tells CVS where the repository is for all subsequent operations. Next, the command 'cvs init' sets up the repository control files and it is ready for use. Importing files. In the directory containing the files, running : cvs import PROJECT vendor tag initial_release_tag; This stores the initial revisions in the repository. The files can then be checked out using cvs checkout PROJECT, cvs creates a working directory PROJECT/ containing the source files. These source files can be worked on without affecting the anybody else or the central repository. A set of changes can be 'commit'ed to the repository as follows : cvs commit files... Tracking versions using tags. In cvs there is the facility to give symbolic names to sets of files with possibly several different revision numbers. It's called tagging... It's used to tie together a set of file revisions that constitute some meaningful release or condition... In order to issue such a tag 'cvs tag SYMBOLIC_TAG module' is used. Where SYMBOLIC_TAG is an arbitrary name, and module is the target repository directory.

4. Seperate development paths. Branching An important feature that CVS has is the ability to allow parallel development paths on the same module directory. Very often a user will want to do some develpmental work on a module that will introduce significant changes, while needing to maintain some earlier stable release. The user creates a 'branch' at the point in question... cvs tag b BRANCH_TAG SYMBOLIC_TAG module_name. The user can then maintain the changes on the branch by 'cvs checkout rbranch_tag'. At a later stage a branch may be merged back on to the main trunk by 'cvs update jbranch_tag' from the working directory containing the latest revisions of the main trunk. However a branch may be maintained without merging permanently if required.

5. Some communication issues. Conflicts Source conflicts occur when two or more users attempt to change the same line of code. Conflicts can also occur as the result of a single users work. How does CVS handle this? An example... Automatic notifications Support for receiving notifications based on cvs operations such as tagging...

6. CVSWEB. Introduction to the cvsweb interface... cvsweb

table of contents 7. Summary and concluding remarks. Closing remarks. Bug tracking, source navigation.