CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion

CSC/Sun CCS Subversion tutorial Tim Howe

Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow

May 28, 2008

Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

What is Subversion?

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

version control system

I

“new and improved” CVS (not vastly different)

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Generic SCM benefits to development

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion

SCM Software Configuration Management

Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

track changes between versions

I

audit ownership of code (can relate to Sarbanes-Oxley requirements)

I

when performed correctly: track test results, supported systems, etc.

I

repeatability, shared development

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Subversion-specific benefits to development

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

cheap branching

I

based on HTTP, WebDAV

I

local mirror

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Collaboration benefits

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

everyone has working copy

I

cross-platform

I

easy Web access to files

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Quirks of Subversion

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

“branches” and “tags” are arbitrary

I

locking discouraged

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Subversion workflow overview

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion

1. import initial version (can be skeleton) into repository 2. check out working copy 3. make all changes in working copy 4. update working copy with all changes from others, ensure everything still works 5. commit working copy to repository 6. rinse and repeat from step #2 (can be done concurrently and asynchronously by many developers)

Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Subversion commands

CSC/Sun CCS Subversion tutorial Tim Howe

svn import import a file/directory tree into repository svn checkout check out a tree from the repository svn update get changes from repository svn status show any local changes since last commit svn diff get diff of local changes since last commit svn add schedule a new file to be entered into the repository at commit svn mkdir create a directory in the working copy svn mv rename a file or move it in the working copy svn rm delete a file from the working copy svn commit commit all changes from working copy

Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Server

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

Hosted on rattrap.sfbay

I

Canonical hostname is csc-ccs-svn.sfbay

I

Access control in /mnt/web/svn/{htpasswd,access}

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Custom Tools

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion

TaskMaster Java app to manage active projects http://csc-ccs-svn.sfbay/ I manages a local mirror of all active projects I project creation I codebase creation I branch management I create dependency of project on codebase

Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Repository access

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion

http://csc-ccs-svn.sfbay.sun.com/svn/ I I

HTTP authentication required access via: I I I I I

Web browser ViewSVN Web interface command-line svn client TortoiseSVN for Windows TaskMaster

Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Repository layout

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

util Utilities for interacting with this repository codebase Storage of all branches of each codebase (e.g., firefox, thunderbird, nct) work Individual projects (SR1234567 )

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Repository layout example

CSC/Sun CCS Subversion tutorial Tim Howe

codebase/ nct/ trunk/ branches/ tags/ 1.1/ 1.2/ 1.3/ work/ SR162210/ codebase/ nct/ thunderbird/ wificonfig/ project/

Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Integration with other tools

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

I

Tracker

I

atombomb repositories

I

deantool

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Actions → Update work area

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Repository → New codebase. . .

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Enter name of codebase

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Repository → New work. . .

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Enter name of work

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Repository → Import codebase. . .

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Commit changes

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

1. svn commit 2. enter log message

Server Tools Repository Integration

Workflow

I

new files must be svn added first

Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Releasing a new codebase version

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

1. commit all changes to the project branch 2. merge changes into the codebase trunk

Server Tools Repository Integration

Workflow

3. tag codebase from trunk

Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Releasing a milestone of a project

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

1. commit all changes to the project 2. create project tag from project trunk

Server Tools Repository Integration

Workflow

3. generate Tracker artifact

Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down

Closing down

CSC/Sun CCS Subversion tutorial Tim Howe Overview of Subversion Development benefits Collaboration benefits Quirks Working with Subversion

Our Setup

1. delete project root directory I

deleted projects, like any file, can be restored

I

codebase tags are not deleted

Server Tools Repository Integration

Workflow Keeping up to date Creating codebase Creating project Committing changes Creating a release Closing down