building a subversion server

71
Building A Subversion Server Version Control for Your Robot Software By Hugh Meyer FRC Team 1741 Red Alert Robotics Greenwood Indiana October 29, 2011

Upload: aimee

Post on 19-Jan-2016

21 views

Category:

Documents


0 download

DESCRIPTION

Building A Subversion Server. Version Control for Your Robot Software By Hugh Meyer FRC Team 1741 Red Alert Robotics Greenwood Indiana October 29, 2011. Purpose. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Building A Subversion Server

Building A Subversion Server

Version Control for Your Robot Software

By Hugh MeyerFRC Team 1741Red Alert RoboticsGreenwood Indiana

October 29, 2011

Page 2: Building A Subversion Server

Purpose

The purpose of this session is to provide a comprehensive overview of the process to build and use a subversion server by supplying you enough information to implement your own server and expose sources of additional information for more detailed help.

By Hugh Meyer FRC Team # 1741

Page 3: Building A Subversion Server

Introduction to Subversion

What it is and why we need it The Problem of File Sharing Memory Stick Nightmares Ultimate Backup System Giant edit undo button

Page 4: Building A Subversion Server

What is Subversion and why do we need it

Subversion is software that is designed to help programmers keep track of different changes or versions of code

It allows several people to share and work on the same code at the same time

It simplifies the process of merging code from different developers

Page 5: Building A Subversion Server

The Problem of File Sharing

When two or more people need to modify the same file at the same time on different computers

How to prevent users from over writing each others changes

There are two ways to solve this The Lock-Modify-Unlock Solution The Copy-Modify-Merge Solution

Page 6: Building A Subversion Server

Memory Stick Nightmares

Students tend to share files by memory sticks so it is easy for them to share program code this way.

As they develop code the number of different files, that are really the same file modified over and over increases beyond control very quickly.

Tracking who has the latest version is very difficult and merging changes from different users is very time consuming and error prone.

Page 7: Building A Subversion Server

Ultimate Backup System

Have you ever lost work because your computer crashed?

It is not a matter of if you computer disk crashes but when!

Page 8: Building A Subversion Server

Giant edit undo button

Have you ever lost work because you saved a file that you changed and wished you had the previous file back?

Edit undo is great, but some times it is only good to a point.

Page 9: Building A Subversion Server

Computer Hardware

Get a computer to build your server If you have the funds get the biggest hard

drive you can If you have the funds get the fastest CPU

you can If you have the funds get the most memory

you can If you don’t have funds don’t worry! Just

about anything will do!

Page 10: Building A Subversion Server

Machine Requirements

Generally speaking not very demanding. OS needs about 200 meg of disk space. Memory required is 8 meg. CPU is 386 and up. More is always better…

Page 11: Building A Subversion Server

Ideas for Cheap Machines

Talk to your school network administrator Talk to your sponsors IT department Talk to you church IT administrator Ask parents of students

Page 12: Building A Subversion Server

Load and Configure Operating System NetBSD

Download ISO image and burn boot disk Run the install process Learn basic command for VI text editor (Google is

your friend) Setup IP address, gateway, DNS servers Connect system to the Internet Test connection Install Package System Setup svn user and svn_user group Configure any firewalls you are behind to open svn

port # 3690

Page 13: Building A Subversion Server

Download ISO Image and Burn Boot Disk

Go to the NetBSD website. Click on the download NetBSD link. I like to download the ISO image and burn a

bootable CD. I generally will download from the master site in

California. Use this file and your favorite disk burning software

to make a bootable disk. In Nero the command is “burn image” under the

“recorder” menu item. This process is not the same as burning a data

disk.

Page 14: Building A Subversion Server

Running the Install Process

Be sure your computer will boot from the CDrom drive. You may need to adjust a setting in your cmos.

Follow the wizard prompts. The defaults will nearly always work and are usually the best choices.

Reboot the machine. Review the afterboot man page. It provides a

check list of stuff to complete after a new install.

Page 15: Building A Subversion Server

Learn Some Basic OS Commands

Command cd in this context is change directory

“cd /” puts you at the root level Command “cd etc” is where most files you

need to change will be Command ls gives a listing of files Command pwd prints working directory Command dmesg shows boot messages

that go so fast you miss them

Page 16: Building A Subversion Server

Learn Basic OS Commands

Man pages are built in help apropos searches the man pages The pipe ‘| more’ function is handy The documentation on the NetBSD website

is good How to documents on the NetBSD website

are nice

Page 17: Building A Subversion Server

Learn Basic Commands for VI Text Editor

Initiate the editor with the command “vi filename” of the file you want to edit

Command “vi rc.conf” edits a primary configuration file

J moves down, k moves up, l moves left, h moves right

Command :x exits and saves See resource page for more…

Page 18: Building A Subversion Server

Setup IP address, gateway, DNS servers

Edit /etc/rc.conf file to insert ifconfig line and defaultroute gateway.

Ifconfig ex0 inet xx.xx.xx.xx netmask 255.255.255.xx using the IP address and netmask for your internet connection.

defaultroute=“xx.xx.xx.xx” Edit /etc/resolv.conf to include your ISP

namservers nameserver xx.xx.xx.xx

Page 19: Building A Subversion Server

Connect System to the Internet

Plug in network cable to your network device

Be sure it is 100 mbps or faster if possible Check link lights

Page 20: Building A Subversion Server

Test connection

Ping your router ‘ping ww.xx.yy.zz’ Ping your name servers Do a name lookup to be sure DNS is

working “nslookup google.com” If these three work you can count it good

Page 21: Building A Subversion Server

Install NetBSD Package System

I like to use sup to install the package system. It takes longer to download initially, but after that it only downloads the updates files and will automatically handle deleting old files. The following commands will do the job.

mkdir /etc/supfiles /usr/sup cp

/usr/share/examples/supfiles/sup.netbsd.org /etc/supfiles/coll.list

Page 22: Building A Subversion Server

Install NetBSD Package System

Edit the /etc/supfiles/coll.list, and comment out (add a # to the start) all lines except the block of two lines that start “current release=pkgsrc’

Run sup to update pkgsrc with the command ‘sup –s –v’

Be aware this will take a while. I let it run at night and it is done in the morning.

Page 23: Building A Subversion Server

Setup svn user and svn_user group

‘useradd –m svn’ ‘groupadd svn_user’ ‘usermod –G svn_user svn’ ‘passwd svn’

Page 24: Building A Subversion Server

Define Repository Files Location

Create the directory structure where you want your repository located as root

‘mkdir /usr2’ ‘cd /usr2’ ‘mkdir repos’ Change owner to svn ‘chown svn /usr2’ ‘chown svn /usr2/repos’

Page 25: Building A Subversion Server

Set User and Group

Change group to svn_user ‘chgrp svn_user /usr2 ‘chgrp svn_user /usr2/repos’ Verify that directories are set to correct user

and group with the ‘ll’ command

Page 26: Building A Subversion Server

Configure Any Firewalls You Are Behind to Open SVN Port # 3690

Subversion uses port 3690 This port must be open if you are behind any fire

walls If this is on a school network then you will need

your network administrator to do this If you are on Comcast or AT&T or similar service

then you may need to log into your router, or hopefully the port will be open by default

You MUST have a static IP address

Page 27: Building A Subversion Server

Load and Configure Subversion

Download, build, and install subversion using the package system

Test your new subversion install Setup inetd to launch subversion on incoming

request using svnserve Setup host allow and deny files to control access if

desired Create repository using svnadmin create command Setup passwd and other conf files

Page 28: Building A Subversion Server

Download, Build, and Install Subversion Using the Package System

Be sure you are logged in as root Easiest way to install is to use the NetBSD

package system. Change directory to the package folder for

subversion ‘cd /usr/pkgsrc/devel/subversion’ ‘make fetch-list | sh’ This will download all dependencies

Page 29: Building A Subversion Server

Download, Build, and Install Subversion Using the Package System

‘make’ ‘make install’ ‘make clean’ ‘make clean CLEANDEPENDS=YES’

Page 30: Building A Subversion Server

Test Your New Subversion Install

Test the installation by entering the command ‘svn ? | more’ You should get a response of commands.

Enter command ‘svnadmin help’ you should get list of commands.

If these work you are good to go.

Page 31: Building A Subversion Server

Setup inetd

Inetd is a process that looks for incoming connections on the server and launches the appropriate executable depending on the requested service.

The /etc/inetd.conf file must be updated to indicate what to do with a subversion request.

Edit the /etc/inetd.conf file ‘svn stream tcp nowait svn /usr/pkg/bin/svnserve

svnserve –i –r /usr2/repos’ Restart inetd ‘/etc/rc,d/inetd restart’

Page 32: Building A Subversion Server

Setup Host Allow and Deny Files to Control Access If Desired

If you are concerned about security you can create two files that will tell inetd to allow or deny certain requests.

Create an /etc/hosts.allow file Insert the following lines ‘svnserve: ALL’ or ‘svnserve: xx.xx.xx.xx

Page 33: Building A Subversion Server

Setup Host Allow and Deny Files to Control Access If Desired

Create a /etc/hosts.deny file ‘ALL:ALL’ or any you know you want to keep out. I have the svn open so students can access it from

home, but I do restrict other services like telnet to only allow connections from my home, the school, and my work.

See the man page hosts_access(5) for more information on this feature.

Page 34: Building A Subversion Server

Create Repository Using svnadmin Create Command

You should be logged in as user svn Change directory to the location you created earlier

for your repository files I use /usr2/repos Use the svnadmin command to create your

repostiory ‘svnadmin create YouRepoName’ Change directory to the new location and you

should have several directories with files in them

Page 35: Building A Subversion Server

Setup passwd and Other Conf Files

Use command ls and you should see a folder ‘conf’ cd to the conf folder Modify the svnserve.conf file to set access like you

want and activate the password file The file explains what things do, so read and follow

the instructions Modify the password file by adding the users you

want to have access to your repository Your server setup is now complete

Page 36: Building A Subversion Server

Create and Initialize Client Working Environment

Load Client Tools TortoiseSVN Subeclipse Subersion command line tools SlikSVN

Page 37: Building A Subversion Server

TortoiseSVN

Integrated solution for Windows Implemented as a shell extension Works with any file type Visually shows you modified files with icon

overlays Download from: http://tortoisesvn.net/

Page 38: Building A Subversion Server
Page 39: Building A Subversion Server
Page 40: Building A Subversion Server
Page 41: Building A Subversion Server

Subeclipse

Integrated solution for Eclipse Used by the Wind River Workbench Instructions for installation are in chapter 4

of the FRC Software Guide

Page 42: Building A Subversion Server
Page 43: Building A Subversion Server

Subversion Command Line Tools

Useful for compilers Useful to IDEs that need to interface to the

repository

Page 44: Building A Subversion Server

SlikSVN

Command tool used by Wind River Workbench

Instructions for installation are in chapter 4 of the FRC Software Guide

Page 45: Building A Subversion Server

Using Subversion

Initial folders and files import Checkout working copy Commit changes made to working copy Update working copy to merge changes

others have made

Page 46: Building A Subversion Server

Initial Folders and Files Import

Setup branches, tags, and trunk folders Import the files you want in your trunk folder DELETE Your Local Copy!! (or just move it somewhere

else)

Page 47: Building A Subversion Server
Page 48: Building A Subversion Server

Checkout Working Copy

Use appropriate tool to do initial checkout Test the working copy by compiling to be sure

everything works

Page 49: Building A Subversion Server
Page 50: Building A Subversion Server

Committing Working Copy

Select commit option Dialog box will pop up showing what it

plans to do Read this box carefully to be sure it is what

you want to happen It will show new files and ask if you want to

add them or ignore them

Page 51: Building A Subversion Server
Page 52: Building A Subversion Server

Update Working Copy

Before you start work always update your working copy

You will get any modifications made by others

Check the logs if you want to see activity Use the diff viewer to see exactly what has

changed

Page 53: Building A Subversion Server
Page 54: Building A Subversion Server
Page 55: Building A Subversion Server

Using Your Server At Competitions

Setup server as DHCP server to serve addresses in the range of it’s normal IP range

When a user connects he will be assigned a network address similar to the server and can access the repository with no changes in the users local computer configuration

Page 56: Building A Subversion Server

Using Your Server At Competitions

Add the following to the /etc/rc.conf file dhcpd=YES dhcpd_flags=“-q YourNetInterface” inetd=NO /user/pkg/bin/svnserve –d –r /usr2/repos –

listen-host=xx.xx.xx.xx Setup /etc/dhcpd.conf file to serve up IP

addresses – see man page for details

Page 57: Building A Subversion Server

Using Subversion for FRC Code Base

In Wind River Workbench Use Subclipse – Integrated solution

Page 58: Building A Subversion Server

Using Subversion for FRC Code Base

In LabVIEW Use TortoiseSVN on folder where the VI files are

saved This will use the Lock-Modify-Unlock approach since

LabVIEW files are binary and unknown by ToroiseSVN in the standard mode

TortoiseSVN does have some settings for entering a diff, merge tool that might work with LabVIEW, but I have not tried that approach

Load PushOK SVN for more integrated solution. See NI document in reference section for more detailed information about this option

Page 59: Building A Subversion Server

Using Subversion for FRC Code Base

In MPLAB. Use TortoiseSVN on project folder Use integrated support via command line

Subversion

Page 60: Building A Subversion Server

Additional Resources and References

The Subversion documentation Books Web links Google is your friend

Page 61: Building A Subversion Server

Version Control With Subversion

Version Control with Subversion, Second Edition by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato, published by O’Reilly

http://oreilly.com/catalog/9780596510336/ The reference book created by core

members of the Subversion development team.

Page 62: Building A Subversion Server

NetBSD Operating System

NetBSD is a free, secure, and highly portable Unix-like Open Source operating system available for many platforms, from large-scale server systems to powerful desktop systems to handheld and embedded devices.

http://netbsd.org/ Highly structured and disciplined code that

is very stable and reliable.

Page 63: Building A Subversion Server

NetBSD Wiki

The NetBSD Wiki is a collaborative writing project to build useful resources for NetBSD users

http://netbsd.org/docs/

Page 64: Building A Subversion Server

TortoiseSVN

TortoiseSVN is an easy to use SCM / source control software for Microsoft Windows

It is implemented as a Windows shell extension, which makes it integrate seamlessly into the Windows explorer.

Since it's not an integration for a specific IDE you can use it with whatever development tools you like.

http://tortoisesvn.net/

Page 65: Building A Subversion Server

Subversion

The most recent version of Subversion is: 1.7.1. (As of October 23, 2011)

You can install Subversion by compiling its source code release directly, or you can install one of the prepackaged binaries found here.

http://subversion.apache.org/packages.html

Page 66: Building A Subversion Server

Subclipse

Subclipse is an Eclipse Team Provider plug-in providing support for Subversion within the Eclipse IDE. This is used for the Wind River Workbench tool provided to FRC teams.

http://subclipse.tigris.org/ The installation instructions in the FRC

software guide are very good.

Page 67: Building A Subversion Server

FRC Chapter 4 Software Installation

4-FRC_Control_System-Software-Installation-0.10c.pdf page 11 & 12

Section 4.4.1.1 Instructions for installing the SVN plug-in for

Eclipse / Wind River Workbench http://www.usfirst.org/uploadedFiles/4-FRC

_Control_System-Software-Installation-0.10c.pdf

Page 68: Building A Subversion Server

For LabVIEW

Source Code Control and Group Development Practices in LabVIEW for Advanced Configuration Management Tasks

http://decibel.ni.com/content/docs/DOC-1681

https://decibel.ni.com/content/docs/DOC-2936

Page 69: Building A Subversion Server

Text Editor

Mastering the VI Editor http://www.eng.hawaii.edu/Tutor/vi.html Vi (pronounce: "vee eye", not "six", not

"vye") is an editor. An editor is a program to edit files.

http://thomer.com/vi/vi.html Don’t panic. You only need a handful of

useful commands

Page 70: Building A Subversion Server

Questions?

Page 71: Building A Subversion Server

Contact Information Hugh Meyer [email protected] Work 317 786-9214 Home 317 535-1200 Be sure to mention you were in this workshop session This power point file will be online at: http://rar.meyermat.net/workshops/index.html Thank you for attending!