CVStoGit
Table of Contents
CVS to Git Conversion
The following page details how we will convert from CVS to Git, it is meant as both a procedure to follow as well as a public record of what was done.
Repositories
This is a list of repositories that will be converted from CVS to Git.
{|border="1" cellpadding="3"
Convert? | Notes |
yes | |
no | |
? | |
no | Superceded by Examples-v2 |
no | |
no | Superceded by Examples-v2 |
yes | |
no | File System Simulator |
no | Non-rtems cross compiling scripts |
yes | |
no | |
yes | Nice PC Multi IO board driver. |
yes | |
no | |
yes | |
no | Superceded by Examples-v2 |
no | Superceded by Examples-v2 |
? | |
no | |
yes | |
yes | |
yes | Ralf RPM infrastructure |
yes | |
no | |
yes | |
no | Idea needs revisiting |
no | |
yes | |
yes | Chris has big changes. |
? | |
no | |
no | Pre-Drupal website. |
|}
Procedure
The following details the procedures that will take place for each repository conversion.
Conversion
# Use cvs2git to convert the repository. See below for the cvs->git username map. # Check log file for any errors, the conversion log(s) for each repository will be placed on the FTP. # Run a script that will checkout each CVS and Git branch to compare the two ensuring no differences, these logs will be placed on the FTP As well.
Post
# Remove any extraneous branches or tags. # rename tags/branches to normalise names. # sign tags using PGP.
User Map
The following is the cvs->git name map. {|border="1" cellpadding="3"
Git Name | Git Email |
Chris Johns | hidden |
Charles Phillips | hidden |
Eric Norum | hidden |
Greg Menke | hidden |
Glenn Humphrey | hidden |
Jennifer Averett | hidden |
Mark Johannes | hidden |
Joel Sherrill | hidden |
Jay Monkman | hidden |
Philippe Simons | hidden |
Ralf Corsepius | hidden |
Richard Campbell | hidden |
Sebastian Huber | hidden |
Till Straumann | hidden |
Thomas Doerfler | hidden |
Wade A Smith | hidden |
|}
Transition
The transition will be completed in two main steps, the first is the conversion phase, the second a "transition" phase for developer feedback.
With luck the entire process will take less than two weeks.
Phase 1
# Convert all repositories to Git # Test conversion using a script to check differences between a CVS checkout vs a GIT checkout. The branches and tags tested is taken from the converted git repository. # Publish the results to http://www.rtems.org/ftp/pub/rtems/people/chrisj/git/.
Phase 2
# Set up a dedicated server (rtbf64d) as a git server moving it to the DMZ and mapping to the public address of git.rtems.org. # Lock down git.rtems.org to have restricted root access (Joel, Jeff, and Chris (Asian support hours)). # Install required components to support the git features needed (Amar to provide list to Jeff and Chris). # Create restricted accounts for those with git write privileges. # Load a converted test git repository for testing. # Announce on rtems-users public access to the test repository. # Wait for feedback, making any changes necessary.
Phase 3
# Make CVS repository read-only. (All commits disabled) # Create GIT repository and load onto git.rtems.org. # Update the web site to reference git and not CVS. # Update the project's documentation to reference git and not CVS. # Create a tar file of the CVS repository and make available as an http/ftp download # Disable the CVS server access and the web interface.
Backups
GIT is a distributed version control so back up will be performed using a cron on a machine in the RTEMS lab that is backed up.
Public Access
Public access will come from git.rtems.org with cgit as a web interface.
Git
Links to site with good Git information.
- http://gitready.com/ - an excellent resource from beginner to very advanced.
- http://progit.org/book/ - Covers git basics and some advanced features. Includes some useful workflow examples.
- http://gitref.org/ - Fast and simple reference for the most used git commands.