Revision Control for Sysadmins

Slides:



Advertisements
Similar presentations
Integrated Development Environments, Source Control Repositories, Automated Testing Tools, Bug Tracking, Code Analysis Tools, Build Tools, Project Hosting.
Advertisements

Let Use SVN(Subversion) Interaction Lab. Hyo-Geun Ahn
om om GIT - Tips & Tricks / git.dvcs git-tips.com
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
Version Control System Sui Huang, McMaster University Version Control SystemSui Huang, McMaster University Version Control System -- base on Subversion.
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.
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?
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
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.
Source Code Revision Control Software CVS and Subversion (svn)
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
Version control Using Git 1Version control, using Git.
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.
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Introduction to Version Control
Version Control with Subversion Quick Reference of Subversion.
1 Lecture 19 Configuration Management Software Engineering.
Version control Using Git Version control, using Git1.
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
CVS – concurrent versions system Network Management Workshop intERlab at AIT Thailand March 11-15, 2008.
1 Software Configuration Management (SCM) and Software Reuse Presented By: Edmund Leng (HT052446J) Choo Zhi Min (HT052430X)
CVS – concurrent versions system AROC Guatemala July 19-23, 2010 Guatemala City, Guatemala.
Version Control CSC 517 John Slankas. Version Control Managing files and directories, and the changes made to them over time. - Adapted from “Version.
1 MSTE Visual SourceSafe For more information, see:
Version Control System
Visual Source Safe –A Quick Tour. CONTENTS What is VSS ? How to install VSS ? How does VSS track versions? VSS Concepts & Features Utilities available.
An Introduction to Git David Johndrow COMP 490 – Senior Design & Development 2/11/16.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
NALINI S. NAUTIYAL SYSTEM SOFTWARE DIVISION Subversion.
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 A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
CS491A Software Design Lab Version Control with CVS and Subversion Chengyu Sun California State University, Los Angeles.
Version Control Jose Caraballo. What is version Control?
Anjana & Shankar September,2010 Introduction to Programming Tools.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
Dr. Tanusri Bhattacharya
CompSci 230 Software Construction
CS5220 Advanced Topics in Web Programming Version Control with Git
Source Control Systems
4 Version control (part 1)
Software Configuration Management CSC-532
Version Control and Source Code Control Systems
Version Control with Subversion
CVS – concurrent versions system
CVS – concurrent versions system
SVN intro (review).
Source Control Dr. Scott Schaefer.
Version Control with Subversion (SVN)
Version control, using Git
Introduction to Configuration Management With RCS
CS5220 Advanced Topics in Web Programming Version Control with Git
Version Control System using Git
Development and Deployment
Using Source Code Control Effectively
Concurrent Version Control
Version Control System
CIT 470: Advanced Network and System Administration
Version Control with git
Presented by: Anusha Kolla
Design and Programming
Source Code Control Systems
Introduction to Version Control with Git
Systems Analysis and Design I
Presentation transcript:

Revision Control for Sysadmins Presented at the MUUG General Meeting on 2011-Sep-12 Adam Thompson, athompso@athompso.net

Who Designed for developers: Version control, which led to Software configuration management, which led to Build management System administrators can also use: Version control (almost anywhere) SCM (complex situations) Build management (large-scale deployment)7

What – Version Control Designed to keep track of changes to a file Most allow multiple people to simultaneously work on multiple versions of a file, then merge their changes later For sysadmins, allows you to track changes to config files Can be used to back up and synchronize files, too

What – Software Config. Mgmt. More complex than revision control Manages entire filesets at a single time Includes path information Includes metadata Includes build-environment information Usually client-server, designed for teams

What – Build Management Evolution of SCM Includes intelligence about building the project Deploys the product, e.g. to a J2EE app server Now includes "Application Lifecycle Management" Team-oriented Covers workflow for sign-offs, approval, testing, etc. Usually complex Supports "Continuous Integration"

Scope of presentation I'm only going to talk about Revision Control software Everyone can find a use for it Easy (easier, anyway) to understand, set up and use

Where ASCII configuration files Unicode and National Character Set files are also generally supported Binary files are typically unsuitable, but are generally supported without diff(1) capability /etc/* ~/.bashrc, et al. ~/Music Yes, really: use CVS/SVN/git for synchronization!

When Manually, before and after each edit Manually, after testing Automated, from cron(8) Daily snapshots Automated, from startup scripts "Last-known-good" snapshots

Why What changed yesterday? What changed on 2010-Feb-06? Who changed it? This is more complicated to set up Easy rollback of changes Easier to test new changes and apply them selectively

How - Origins SCCS – Source Code Control System First shipped with AT&T System III PWD in 1972, can still sometimes be found in SVR4-derived OSes. File format still used in other products today RCS – Revision Control System Developed for BSD UNIX® in 1982, can be found almost everywhere. Part of the base system for many OSes. Command invocation syntax is still used by many systems today

How – Evolution & Revolution CVS – Concurrent Version System Client-server version of RCS SVN – Subversion "CVS done right" git – completely New & Different! Written by Linux Torvalds to manage the Linux kernel source

How - Others There are many other version control systems Many are commercial, many are cross-platform Some prominent systems: Mercurial Bazaar BitKeeper Visual SourceSafe Rational ClearCase

RCS The only one I'm going to explain is RCS Trivial to set up Easy to use Provides concepts necessary for understanding CVS, SVN, etc. (but not git)

RCS - Repository RCS tracks one file at a time. Period. RCS creates a "revision group", contained in a file named "filename,v". If a subdirectory called "RCS" exists, the ",v" files will be placed inside it. Each ",v" file stores the latest version of the file and all the reverse-deltas. Easy to recover some of the file even with a damaged repository

RCS - Initialization Strongly recommend using an RCS/ directory The first rcs(1) command you run on a file will initialize the revision group. Manually do so with "rcs -i" Avoids being prompted for the file description during checkin/checkout

RCS – Basic Concept Check In / Check Out: kind of like a Coat Check at a restaurant or concert Checked In: You don't have it You don't see it You have to check it back out to use it Checked Out: You're responsible for it

RCS - Locking A checked-out file can be locked or unlocked Locked (for modification): read/write Unlocked (for other use): read-only Leave files unlocked normally Only lock them when you need to make changes Prevents accidental, untracked changes

RCS – Basic commands "ci -u <filename>" Checks IN a new version of the file, then immediately checks OUT an unlocked copy. "co -l <filename>" Checks OUT a locked copy for modification That's all you need to know!

RCS - differences OK, there's another command you need to know... Shows the differences between any two revisions of the file With no options, diff(1)s the current working file against the last-checked-in-version. (i.e. "What have I changed so far this time?")

RCS - Tags If you put the magic string "$Id$" and "$Log$" into your file, RCS will automatically fill them in with useful information See co(1), under KEYWORD SUBSTITUTION for more details

Typical uses /etc/httpd/httpd.conf /etc/openldap/slapd.conf /etc/postfix/main.cf /etc/*, really... /usr/local/bin/my-custom-script.pl

Limitations RCS only handles one file at a time No notion of "projects" Revision history is (deliberately) vulnerable to tampering Poor scalability I/O scales as O(N) with file size, # of revisions, size of reverse-diffs I/O scales as O(N^2) with # of active branches Single-user-writable model

Demo Maybe this will work...

Q&A I have to leave quickly tonight Several of our audience members are familiar with version control systems (mostly CVS and SVN, though)