CVStoGit

From RTEMSWiki

Jump to: navigation, search

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.

CVS RepoConvert?Notes
ada-examplesyes
autotools-exampleno
bare-bsp-hello?
class-examplesnoSuperceded by Examples-v2
dot-graphicsno
examplesnoSuperceded by Examples-v2
examples-v2yes
fssnoFile System Simulator
gnucross-scriptsnoNon-rtems cross compiling scripts
libbsdportyes
mdp-1-9a5no
multiio yesNice PC Multi IO board driver.
network-demosyes
ntp-4.1.1a-rtemsno
osmonwebyes
pr-testsnoSuperceded by Examples-v2
psim-testsnoSuperceded by Examples-v2
repo-conf?
rpm-scripts-oddno
rtemsyes
rtems-addon-packagesyes
rtems-buildsysyesRalf RPM infrastructure
rtems-eclipse-plug-inyes
rtems-eshno
rtems-graphics-toolkityes
rtems-plansnoIdea needs revisiting
rtems-portno
rtems-schedsimyes
rtems-testingyesChris has big changes.
rtems-tools?
scriptsno
wwwrtemsnoPre-Drupal website.


Procedure

The following details the procedures that will take place for each repository conversion.

Conversion

  1. Use cvs2git to convert the repository. See below for the cvs->git username map.
  2. Check log file for any errors, the conversion log(s) for each repository will be placed on the FTP.
  3. 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

  1. Remove any extraneous branches or tags.
  2. rename tags/branches to normalise names.
  3. sign tags using PGP.


User Map

The following is the cvs->git name map.

CVS UsernameGit NameGit Email
ccjChris Johnshidden
charlesCharles Phillipshidden
ericnEric Norumhidden
gregmenkeGreg Menkehidden
humphGlenn Humphreyhidden
jenniferJennifer Averetthidden
jmjMark Johanneshidden
joelJoel Sherrillhidden
jtmJay Monkmanhidden
lokiPhilippe Simonshidden
ralfRalf Corsepiushidden
richardRichard Campbellhidden
shSebastian Huberhidden
straumanTill Straumannhidden
thomasThomas Doerflerhidden
wadeWade A Smithhidden

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

  1. Convert all repositories to Git
  2. 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.
  3. Publish the results to http://www.rtems.org/ftp/pub/rtems/people/chrisj/git/.

Phase 2

  1. 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.
  2. Lock down git.rtems.org to have restricted root access (Joel, Jeff, and Chris (Asian support hours)).
  3. Install required components to support the git features needed (Amar to provide list to Jeff and Chris).
  4. Create restricted accounts for those with git write privileges.
  5. Load a converted test git repository for testing.
  6. Announce on rtems-users public access to the test repository.
  7. Wait for feedback, making any changes necessary.

Phase 3

  1. Make CVS repository read-only. (All commits disabled)
  2. Create GIT repository and load onto git.rtems.org.
  3. Update the web site to reference git and not CVS.
  4. Update the project's documentation to reference git and not CVS.
  5. Create a tar file of the CVS repository and make available as an http/ftp download
  6. 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. 

Personal tools