diff options
Diffstat (limited to 'xml/htdocs/proj/en/infrastructure/cvs-migration.xml')
-rw-r--r-- | xml/htdocs/proj/en/infrastructure/cvs-migration.xml | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/xml/htdocs/proj/en/infrastructure/cvs-migration.xml b/xml/htdocs/proj/en/infrastructure/cvs-migration.xml new file mode 100644 index 00000000..35bcc381 --- /dev/null +++ b/xml/htdocs/proj/en/infrastructure/cvs-migration.xml @@ -0,0 +1,230 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> +<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/proj/en/infrastructure/cvs-migration.xml,v 1.17 2006/09/05 01:53:47 antarus Exp $ --> + +<guide link="/proj/en/infrastructure/cvs-migration.xml" lang="en" disclaimer="draft"> +<title>CVS Migration Tracking Page</title> + +<author title="Author"> + <mail link="antarus@gentoo.org">Alec Warner</mail> +</author> + +<abstract> +This page was created to track progress regarding the migration of Gentoo's +CVS repositories to another versioning control system. This is being done in +conjuction with a Google Summer of Code project. +</abstract> + +<!-- The content of this document is licensed under the CC-BY-SA license --> +<!-- See http://creativecommons.org/licenses/by-sa/2.5 --> +<license/> + +<version>1.0</version> +<date>2006-04-30</date> +<chapter> +<title>CVS Migration</title> +<section> +<title>Reasons for Migration</title> +<body> +<ul> + <li>CVS does not support branching in a sane manner.</li> + <li>CVS commits are not atomic.</li> + <li>CVS has a lot of overhead when working with a remote checkout.</li> +</ul> +</body> +</section> + +<section> +<title>Milestones for success</title> +<body> + +<table> + <tr> + <th>Task</th> + <th>Status</th> + <th>Due Date</th> + <th>Date of Completion</th> + <th>Notes</th> + </tr> + <tr> + <ti>Select VCS systems for testing.</ti> + <ti>We have selected Mercurial, Subversion, GIT, and our control, CVS.</ti> + <ti>May 22nd, 2006</ti> + <ti>May 22nd, 2006</ti> + <ti>Other VCS systems may be added provided a repository snapshot is provided by June 19th 2006.</ti> + </tr> + <tr> + <ti>Convert gentoo-x86 to each VCS System.</ti> + <ti>Completed git, svn, cvs</ti> + <ti>June 5th, 2006</ti> + <ti>July 14th, 2006</ti> + <ti>Completed a migration to svn and git, total time ~30 days!</ti> + </tr> + <tr> + <ti>Design a set of stress tests and analysis tools for Version Control Systems.</ti> + <ti>Skipped, see notes</ti> + <ti>June 12th, 2006</ti> + <ti>Completed June 19th, 2006</ti> + <ti>I was hoping to have a design prior to starting, but work commitments +forced me to accelerate my project a bit. This phase was moreso me scratching things +out on a napkin ;)</ti> + </tr> + <tr> + <ti>Implement a set of stress tests and analysis tools for Version Control Systems.</ti> + <ti>Dropped</ti> + <ti>June 19th, 2006</ti> + <ti>July 14th</ti> + <ti>I basically broke down and used dstat, I got to the point where I had spent +about 12 hours on the code for this tool, and then figured why spend more time when a +superior tool exists. As such I decided use the better tool instead of writing a +replacement.</ti> + </tr> + <tr> + <ti>Run the stress tests on each VCS system in order to generate a useful data set.</ti> + <ti>July 26th, 2006</ti> + <ti>August 3rd, 2006</ti> + <ti>Completed Auguest 15th</ti> + <ti>This was completed around August 3rd</ti> + </tr> + <tr> + <ti>Analyze the data and present this to the Gentoo Community. Attempt to +have the community choose a VCS system. In the event that the community takes too +long in determining their future VCS system; discuss with Lance and pick a VCS to +continue the project with.</ti> + <ti>Started</ti> + <ti>Aug 10th, 2006</ti> + <ti>September 4th</ti> + <ti>The code was ported to all three systems; isntead of choosing just one.</ti> + </tr> + <tr> + <ti>Compose a Migration Plan to migrate to the new VCS System.</ti> + <ti>Started August 21st</ti> + <ti>August 30th</ti> + <ti>Sept 4th</ti> + <ti>GLEP XX is currently in the submittal process.</ti> + </tr> + <tr> + <ti>Update and author developer documentation related to the VCS system. This will +include updating any tools that are focussed on VCS systems such as echangelog, repoman, +and the cvs->rsync scripts.</ti> + <ti>Start July 14th</ti> + <ti>Aug 8th, 2006</ti> + <ti>Pending Completion</ti> + <ti>Repoman and echangelog been released but need thorough testing. Please +see <uri link="http://dev.gentoo.org/~antarus/projects/soc/releases/">here</uri></ti> + </tr> + <tr> + <ti>Set up test environment and give developers a change to use the new VCS +when it is not live. This is also a chance to make sure all tools work properly.</ti> + <ti>Not yet started</ti> + <ti>Sept 1st, 2006</ti> + <ti>Pending Completion</ti> + <ti>GLEP XX must be approved before this can start.</ti> + </tr> + <tr> + <ti>Test in the testing environment for up to one month, ensure sufficient +hardware requirements and also ensure that real world data matches data collected +during the data mining.</ti> + <ti>Not yet started</ti> + <ti>Oct 1st, 2006</ti> + <ti>Pending Completion</ti> + <ti>GLEP XX must be approved before this can start</ti> + </tr> + <tr> + <ti>Set up the live system and migrate to it.</ti> + <ti>Not yet started</ti> + <ti>Nov 1st, 2006</ti> + <ti>Pending Completion</ti> + <ti>GLEP XX must be approved before this can start.</ti> + </tr> +</table> +</body> +</section> +<section> +<title>Version Control Systems under consideration</title> +<body> +<table> + <tr> + <th>System</th> + <th>Pros</th> + <th>Cons</th> + <th>Migration</th> + <th>Full Checkout</th> + <th>Space Considerations</th> + <th>Bandwidth Usage</th> + <th>Memory Usage</th> + <th>Others?</th> + </tr> + <tr> + <ti>Subversion</ti> + <ti>Atomic Commits, + Merging, Tagging, Branching is a copy operation, + Versioned Metadata, Directory Versioning, Annotation</ti> + <ti>Twice the disk space</ti> + <ti>Migration Complete (cvs2svn) (<uri link="http://dev.gentoo.org/~antarus/stats">conversion stats</uri>)</ti> + <ti>17 minutes, 3 seconds.</ti> + <ti>Server Usage (7.3gb) Client Usage (2.8gb) </ti> + <ti>21.8mb/s</ti> + <ti>20mb per checkout</ti> + <ti> +<uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/svn-co-server">server stats</uri> +<uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/svn-co-client">client stats</uri> + </ti> + </tr> + <tr> + <ti>GIT</ti> + <ti>Annotation; + Two, interchangeable, on-disk formats are used: + An efficient, packed format that saves space and network bandwidth + An unpacked format, optimized for fast writes and incremental work. + Merging, tagging, branching, very fine grained control.</ti> + <ti>Being a distributed VCS means it may be difficult for us to use, has high server spec requirements.</ti> + <ti>Migration complete, minus the Authors file.</ti> + <ti> + <ul> + <li>Smart Clone: 84 minutes, 58 seconds</li> + <li>Dumb Clone: 121 minutes, 52 seconds (over http)</li> + </ul> + Note: Smart clone being a checkout over a smart protocol, one that will generate +the packs for you; this generally pains the server (lots of ram and cpu usage). However the cloned repo will +be all ready for you to use. A Dumb clone is one over http, or rsync, where the server just +tranfersfiles and the client does all the work to prep the repository. + </ti> + <ti>Packed (1.1gb), Unpacked (1.6gb)</ti> + <ti>1.72mb/s (smart), 1.2mb/s (dumb) </ti> + <ti> + <ul> + <li>Up to 400mb per clone (Smart clone on the server), server process was + causing a high server load (~1.0 load per checkout)</li> + <li>Up to 60mb per clone (Dumb clone on the server), server process only + occasionally caused a high load (spikes to 1.0, but usually around .2)</li> + </ul> + </ti> + <ti><uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/git-checkout-stats">Smart +clone Stats</uri> +<uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/git-tree-dumb-stats-server"> +Dumb clone Stats (Server)</uri> +<uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/git-tree-dumb-stats-client"> +Dumb clone Stats (Client)</uri> + </ti> + </tr> + <tr> + <ti>CVS (Stats on the current usage)</ti> + <ti>Already converted, status quo, no migration, no training, does what we need 90% of +the time.</ti> + <ti>Sucks at branching, merging branches back in.</ti> + <ti>Migration Unnecessary</ti> + <ti>8 minutes, 54 seconds.</ti> + <ti>Server (1.6gb) Checkout(~880Mb)</ti> + <ti>13.18mb/s</ti> + <ti>15mb per checkout</ti> + <ti> +<uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/cvs-co-server">server stats</uri> +<uri link="http://dev.gentoo.org/~antarus/projects/soc/stats/cvs-co-client">client stats</uri> + </ti> + </tr> +</table> +</body> +</section> +</chapter> +</guide> |