CVS Workshop I Arthur Chan. This workshop CVS overview (10%) Basic CVS commands (40%) Practical Issues in using CVS (50%) My experience in real-life For.

Slides:



Advertisements
Similar presentations
1 IST 410/420 Software Version Control 2 DevelopmentIntegration Test System Test User Acceptance Testing ProductionArchive DEVELOPMENTUSERS - Developers.
Advertisements

Intro to Version Control Have you ever …? Had an application crash and lose ALL of your work Made changes to a file for the worse and wished you could.
1. What is Subversion? Why do we need CM? Basic concepts Repositories Options Setup Clients Options Setup Operation Troubleshooting Slide 2.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999 Concurrent Versions System Overview of CVS architecture. Repository structure.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999 Concurrent Versions System Overview of CVS architecture. Repository structure.
Version Control System Sui Huang, McMaster University Version Control SystemSui Huang, McMaster University Version Control System -- base on Subversion.
Concepts of Version Control A Technology-Independent View.
2/6/2008Prof. Hilfinger CS164 Lecture 71 Version Control Lecture 7.
Using subversion COMP 2400 Prof. Chris GauthierDickey.
CVS Selim Çıracı Ahmet Kara Metin Tekkalmaz. CVS – Open Source Version Control System Outline What are Version Control Systems? And why do we need them?
CVS II: Parallelizing Software Development Author: Brian Berliner John Tully.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
6/27/20151 Doris Lee Concurrent Version System (CVS)
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
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.
By Steven Campbell and Erik Boone.  Sharing projects by putting them into a central repository.  Checking out copies of projects from the repository.
Prof. Aiken CS 169 Lecture 71 Version Control CS169 Lecture 7.
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.
With Mercurial and Progress.   Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?
1 Lecture 19 Configuration Management Software Engineering.
CVS 簡介 數位芝麻網路公司蔡志展 2001/8/18 大綱 • CVS 簡介 • CVS 安裝 • CVS 設定 (Linux/Windows) • CVS 指令簡介 • CVS 多人環境的應用.
Prepared by: Steve Teo Contributors: Tong Huu Khiem.
Version control Using Git Version control, using Git1.
…using Git/Tortoise Git
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Chris Onions Getting started with CVS in ATLAS 11 Getting started with CVS in ATLAS Chris Onions (Tutorial based on that of Raúl Ramos Pollán CERN / IT.
An Intro to Concurrent Versions System (CVS) ECE 417/617: Elements of Software Engineering Stan Birchfield Clemson University.
Subversion (SVN) A Revision Control System Successor to CVS Carlos Armas Hervey Allen.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Progress with migration to SVN Part3: How to work with g4svn and geant4tags tools. Geant4.
SENG 403 Tutorial 1 1SENG 403 – Winter Agenda Version Control Basics Subversion Basic actions in Subversion Some examples 2SENG 403 – Winter 2012.
DireXions – Your Tool Box just got Bigger PxPlus Version Control System Using TortoiseSVN Presented by: Jane Raymond.
CVS – concurrent versions system Network Management Workshop intERlab at AIT Thailand March 11-15, 2008.
CSE 219 Computer Science III CVS
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
CVS – concurrent versions system AROC Guatemala July 19-23, 2010 Guatemala City, Guatemala.
CSE 436—Requirements and Version Control Systems Ron K. Cytron 26 September 2005.
1 CSE306 Operating Systems Projects CVS/SSH tutorial.
CVS: Concurrent Version System Lecturer: Prof. Andrzej (AJ) Bieszczad Phone: “UNIX for Programmers and Users” Third.
Intro to Git presented by Brian K. Vagnini Hosted by.
Developer Best Practices R.SANTHANA GOPALAN. Developer Best Practices What is Workspace ? The directory where the developer edit the source files, compile,
12 CVS Mauro Jaskelioff (originally by Gail Hopkins)
Version Control System
Version Control and SVN ECE 297. Why Do We Need Version Control?
WinCVS Training è Basic Concepts è Download & Setup è Importing a new module into CVS Repository è Getting new module from CVS è Getting Latest version.
Recitation 2: Abhijit Warkhedi2/25/20161 Today’s Agenda u CVS u GDB.
1 CSE 303 Lecture 19 Version control and Subversion ( svn ) slides created by Marty Stepp
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999 Revised by David Svoboda 2003 Concurrent Versions System Overview of CVS architecture.
© CGI Group Inc. User Guide Subversion client TortoiseSVN.
CS520 Web Programming Version Control with Subversion Chengyu Sun California State University, Los Angeles.
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
Git workflows: using multiple branches for parallel development SE-2800 Dr. Mark L. Hornick 1.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
Concurrent Versions System User guide for CS408
Version Control with Subversion
CVS – concurrent versions system
CVS – concurrent versions system
A Simple Introduction to Git: a distributed version-control system
SVN intro (review).
An Intro to Concurrent Versions System (CVS)
Revision Control Daniel Daugherty
User Guide Subversion client TortoiseSVN
Concurrent Version System (CVS)
CVS Concurrent Versioning System
Amandeep Jawa Worker Bee Software
Concurrent Versions System
Presentation transcript:

CVS Workshop I Arthur Chan

This workshop CVS overview (10%) Basic CVS commands (40%) Practical Issues in using CVS (50%) My experience in real-life For developers, not for maintainer

What is CVS?

Concurrent Version Systems Two Major Purposes of using CVS Keeping track of document history Allow concurrent development by multiple developers

CVS is not RCS It used many components of RCS. It doesn’t do file locking A project manager You still need to manage your project. The best in version control Many issues. We will see some of those. There are better, like subversion or bitkeeper Change Logger You need to write your own log Bug tracker You need to use other bug tracking software

So why do we use it? Many people used it. You could write it on your resume if you knew it well Their web site is active So there are documentation and places to ask questions. It captured the spirit of concurrent version control software.

Basic CVS Walk-through

Life of a Project (in Practice) First initialization of a project (import) Development “Download” the code (checkout) Know the status of the project diff status, log history Synchronize the code (update) Reverse the time flow (tag) Add and remove files (add and delete)

Cvs command general structure General Syntax of cvs cvs [main options] commands [command options] E.g. cvs –z3 checkout –D

Download the code (checkout) Synonym : co CVSROOT : the variable name for the repository syntax: cvs co option –d –d: Access method local (default) ext (use rsh or ssh) pserver (if cvs server is installed, not secured. Should not be used. requires “cvs login”)

Checkout (cont.) Practical problem 1 cvs DOES NOT version directories Some directories can be empty Solution: cvs checkout –P NOT check out empty directory

Check out in fife.speech.cs.cmu.edu Detail instruction Install ssh and cvs setenv CVS_RSH ssh Check out: cvs co = mrcp.devel.v2, CorpusTraining

Synchronize the code (update) After you change the code, you want to synchronize with other people change. If not conflict. M filename If there is a conflict C filename If you got new update U filename P filename if –z3 is specified.

Simple example of conflict <<<<<<< falign.csh #hell no ======= #hell yes >>>>>>> 1.2 Demonstration

Options of update -d, get new directory -l, only update things in local directory -C, get clean copies from the repository Tricks : global command –n, will not do anything in your repository. It is always good to have your own copy!

Modules By default, top level directories of the code Special module : CVSROOT Also controlled by CVSROOT/modules

Check in the code cvs commit Specified you message using –m Or by default the editing will pop up If there is conflict, cvs forbid you to check-in the code.

Add new code cvs add for text file cvs –kb add for binary files. Everything will SOMETIMES be screwed up.

Remove code rm file ; cvs delete file or cvs remove What if I want to recursively delete everything? for i in `find. –name “*” –print |grep –e CVS` ; do rm $i; cvs delete $i ; done

Check out code at a particular time. Cvs co –D “ ” Remember, time is not synchronized in practice!

Stickiness Stickiness for code With previous time stamp With a specific tag Sticky code cannot be committed to the latest trunk! Cvs doesn’t allow change of history Solution: Cvs update –A Remove stickiness.

Tagging Similar to cvs co –d Syntax cvs tag Just give a symbolic meaning to a particular time-stamp. Sticky operation. Remember to use –A!

Getting Information cvs status Knowing the version stickiness of the files File: falign.csh Status: Up-to-date Working revision: 1.5 Thu Jun 10 16:56: Repository revision: 1.5 /net/elroy/usr1/archan/repository/res/test_ script/falign.csh,v Sticky Tag: (none) Sticky Date: (none) Sticky Options: (none)

Cvs log Know the history So you know who to blame revision 1.5 date: 2004/06/10 16:56:45; author: archan; state: Exp; lines: HAHA revision 1.4 date: 2004/06/10 16:42:41; author: archan; state: Exp; lines: hey hey revision 1.3 date: 2004/06/10 16:20:55; author: archan; state: Exp; lines: test change

cvs diff cvs diff file (Compare the local copy with the remote copy) cvs diff –r 1.2 (Compare the local copy with the version 1.2) cvs diff –r 1.2 –r 1.3 (Compare version 1.2 and 1.3)

Good for detectives…… Who do what ? Cvs history Detail line-by-line report Cvs annotate

What we didn’t cover. Advanced features What if we have external source of code? What if we have multiple repositories? Administration In “CVS Workshop II”

Real-life tasks From a programmer point of view, you will want to, Check out the code, change it and check it in back to the source base. Check out the code at a certain time moment or with a certain tag. Merge n people source code (n>1) The hell of a programmer Maintenance A lot of issues

How to reduce the burden of merging? Modularize the code Each module has its own maintainer.

When should we check-in? When you feel that it is “stable” Check List Does your changes work? Does what you check-in affect other people’s development? Changing function prototypes?

When should the code be stable? Stable period Can be as short as 1 hour To as long as Infinity Too short Programmers not able to sleep Too long No one want to use CVS at all

How do we made everyone know the progress of the code? CVS way (not recommended) cvs edit and watch Loginfo Use syncmail

Two purposes of CVS revisited Do you want to have the history? Stop the development and check-in the code and merge the code. Do you want to keep multiple people to work? Let them work separately, do merging later.

Programmers in Real Life What you will learn in technical management. Supervisor: Problems : sometimes they have an MBA and think Java means coffee beans Solutions : crystallize (or simplify) the concept of the project and explain to him. Project Manager: Good one are valuable asset. Problems : too few of them are good.

Programmers in Real Life (cont.) Beginner: Problems: know nothing Solutions: teach them Hero/Star : save the day most of the time Problems : always solo, so his knowledge doesn’t belong to the team. Solutions: request/hope him to write more documents.

Programmers in Real Life (cont.) Hackers (Type H) : “hack the way out”-type Problems : Revert some changes which is important in long-term. Hackers (Type C) : “checker”-type, make sure everything is correct/perfect Problems : No one can wait for them. Hackers (Type T) : hacker who thinks Very valuable asset of a company Problems : There are not many of them in the world. If they existed, they were undermined.

Programmers in Real Life (cont.) Theorist (Talker) : people who know/talk a lot Problems : don’t do real work Solutions : kick him intelligently Researchers : A type of theorist, always appear in high-tech company Problems : code are sloppy, doesn’t generalize. It is not their main concern. They are quite slow from a normal developer point of view. Solutions : Sometimes, they are fixable, that’s why we need developers.

All these people can work with you! In CVS Hero/Star: massive check-in, you need to take time to follow their footsteps Hacker (Type H) and Researcher: monitor their changes. Hacker (Type T) and Project Manager: he must have reasons, talk to him Hacker (Type C) and Researcher: you need to wait for them.

Conclusion CVS is just a tool You still need to manage a project. Question: Why CVS can always make a team better? Not because of the software Because of the change of mind-set.