diff --git a/org.eclipse.releng.eclipsebuilder/pass2/cvs2git.options b/org.eclipse.releng.eclipsebuilder/pass2/cvs2git.options
new file mode 100644
index 0000000..8455fe5
--- /dev/null
+++ b/org.eclipse.releng.eclipsebuilder/pass2/cvs2git.options
@@ -0,0 +1,695 @@
+# (Be in -*- mode: python; coding: utf-8 -*- mode.)
+#
+# ====================================================================
+# Copyright (c) 2006-2010 CollabNet.  All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution.  The terms
+# are also available at http://subversion.tigris.org/license-1.html.
+# If newer versions of this license are posted there, you may use a
+# newer version instead, at your option.
+#
+# This software consists of voluntary contributions made by many
+# individuals.  For exact contribution history, see the revision
+# history and logs, available at http://cvs2svn.tigris.org/.
+# ====================================================================
+
+#                  #####################
+#                  ## PLEASE READ ME! ##
+#                  #####################
+#
+# This is a template for an options file that can be used to configure
+# cvs2svn to convert to git rather than to Subversion.  See
+# www/cvs2git.html and www/cvs2svn.html for general information, and
+# see the comments in this file for information about what options are
+# available and how they can be set.
+#
+# The program that is run to convert from CVS to git is called
+# cvs2git.  Run it with the --options option, passing it this file
+# like this:
+#
+#     cvs2git --options=cvs2git-example.options
+#
+# The output of cvs2git is a blob file and a dump file that can be
+# loaded into git using the "git fast-import" command.  Please read
+# www/cvs2git.html for more information.
+#
+# Many options do not have defaults, so it is easier to copy this file
+# and modify what you need rather than creating a new options file
+# from scratch.  This file is in Python syntax, but you don't need to
+# know Python to modify it.  But if you *do* know Python, then you
+# will be happy to know that you can use arbitary Python constructs to
+# do fancy configuration tricks.
+#
+# But please be aware of the following:
+#
+# * In many places, leading whitespace is significant in Python (it is
+#   used instead of curly braces to group statements together).
+#   Therefore, if you don't know what you are doing, it is best to
+#   leave the whitespace as it is.
+#
+# * In normal strings, Python treats a backslash ("\") as an escape
+#   character.  Therefore, if you want to specify a string that
+#   contains a backslash, you need either to escape the backslash with
+#   another backslash ("\\"), or use a "raw string", as in one if the
+#   following equivalent examples:
+#
+#       cvs_executable = 'c:\\windows\\system32\\cvs.exe'
+#       cvs_executable = r'c:\windows\system32\cvs.exe'
+#
+#   See http://docs.python.org/tutorial/introduction.html#strings for
+#   more information.
+#
+# Two identifiers will have been defined before this file is executed,
+# and can be used freely within this file:
+#
+#     ctx -- a Ctx object (see cvs2svn_lib/context.py), which holds
+#         many configuration options
+#
+#     run_options -- an instance of the GitRunOptions class (see
+#         cvs2svn_lib/git_run_options.py), which holds some variables
+#         governing how cvs2git is run
+
+
+# Import some modules that are used in setting the options:
+import os
+
+from cvs2svn_lib import config
+from cvs2svn_lib import changeset_database
+from cvs2svn_lib.common import CVSTextDecoder
+from cvs2svn_lib.log import logger
+from cvs2svn_lib.project import Project
+from cvs2svn_lib.git_revision_collector import GitRevisionCollector
+from cvs2svn_lib.external_blob_generator import ExternalBlobGenerator
+from cvs2svn_lib.git_output_option import GitRevisionMarkWriter
+from cvs2svn_lib.git_output_option import GitOutputOption
+from cvs2svn_lib.dvcs_common import KeywordHandlingPropertySetter
+from cvs2svn_lib.revision_manager import NullRevisionCollector
+from cvs2svn_lib.rcs_revision_manager import RCSRevisionReader
+from cvs2svn_lib.cvs_revision_manager import CVSRevisionReader
+from cvs2svn_lib.symbol_strategy import AllBranchRule
+from cvs2svn_lib.symbol_strategy import AllTagRule
+from cvs2svn_lib.symbol_strategy import BranchIfCommitsRule
+from cvs2svn_lib.symbol_strategy import ExcludeRegexpStrategyRule
+from cvs2svn_lib.symbol_strategy import ForceBranchRegexpStrategyRule
+from cvs2svn_lib.symbol_strategy import ForceTagRegexpStrategyRule
+from cvs2svn_lib.symbol_strategy import ExcludeTrivialImportBranchRule
+from cvs2svn_lib.symbol_strategy import ExcludeVendorBranchRule
+from cvs2svn_lib.symbol_strategy import HeuristicStrategyRule
+from cvs2svn_lib.symbol_strategy import UnambiguousUsageRule
+from cvs2svn_lib.symbol_strategy import HeuristicPreferredParentRule
+from cvs2svn_lib.symbol_strategy import SymbolHintsFileRule
+from cvs2svn_lib.symbol_transform import ReplaceSubstringsSymbolTransform
+from cvs2svn_lib.symbol_transform import RegexpSymbolTransform
+from cvs2svn_lib.symbol_transform import IgnoreSymbolTransform
+from cvs2svn_lib.symbol_transform import NormalizePathsSymbolTransform
+from cvs2svn_lib.property_setters import AutoPropsPropertySetter
+from cvs2svn_lib.property_setters import ConditionalPropertySetter
+from cvs2svn_lib.property_setters import cvs_file_is_binary
+from cvs2svn_lib.property_setters import CVSBinaryFileDefaultMimeTypeSetter
+from cvs2svn_lib.property_setters import CVSBinaryFileEOLStyleSetter
+from cvs2svn_lib.property_setters import DefaultEOLStyleSetter
+from cvs2svn_lib.property_setters import EOLStyleFromMimeTypeSetter
+from cvs2svn_lib.property_setters import ExecutablePropertySetter
+from cvs2svn_lib.property_setters import KeywordsPropertySetter
+from cvs2svn_lib.property_setters import MimeMapper
+from cvs2svn_lib.property_setters import SVNBinaryFileKeywordsPropertySetter
+
+# To choose the level of logging output, uncomment one of the
+# following lines:
+#logger.log_level = logger.WARN
+#logger.log_level = logger.QUIET
+logger.log_level = logger.NORMAL
+#logger.log_level = logger.VERBOSE
+#logger.log_level = logger.DEBUG
+
+
+# The directory to use for temporary files:
+ctx.tmpdir = r'cvs2svn-tmp'
+
+# During FilterSymbolsPass, cvs2git records the contents of file
+# revisions into a "blob" file in git-fast-import format.  The
+# ctx.revision_collector option configures that process.  Choose one of the two ersions and customize its options.
+
+# This first alternative is much slower but is better tested and has a
+# chance of working with CVSNT repositories.  It invokes CVS or RCS to
+# reconstuct the contents of CVS file revisions:
+#ctx.revision_collector = GitRevisionCollector(
+    # The file in which to write the git-fast-import stream that
+    # contains the file revision contents:
+#    'cvs2svn-tmp/git-blob.dat',
+
+    # The following option specifies how the revision contents of the
+    # RCS files should be read.
+    #
+    # RCSRevisionReader uses RCS's "co" program to extract the
+    # revision contents of the RCS files during CollectRevsPass.  The
+    # constructor argument specifies how to invoke the "co"
+    # executable.
+    #
+    # CVSRevisionReader uses the "cvs" program to extract the revision
+    # contents out of the RCS files during OutputPass.  This option is
+    # considerably slower than RCSRevisionReader because "cvs" is
+    # considerably slower than "co".  However, it works in some
+    # situations where RCSRevisionReader fails; see the HTML
+    # documentation of the "--use-cvs" option for details.  The
+    # constructor argument specifies how to invoke the "co"
+    # executable.
+    #
+    # Uncomment one of the two following lines:
+    #RCSRevisionReader(co_executable=r'co'),
+#    CVSRevisionReader(cvs_executable=r'cvs'),
+#    )
+# This second alternative is vastly faster than the version above.  It
+# uses an external Python program to reconstruct the contents of CVS
+# file revisions:
+ctx.revision_collector = ExternalBlobGenerator('cvs2svn-tmp/git-blob.dat')
+
+# cvs2git doesn't need a revision reader because OutputPass only
+# refers to blobs that were output during CollectRevsPass, so leave
+# this option set to None.
+ctx.revision_reader = None
+
+# Change the following line to True if the conversion should only
+# include the trunk of the repository (i.e., all branches and tags
+# should be omitted from the conversion):
+ctx.trunk_only = False
+
+# How to convert CVS author names, log messages, and filenames to
+# Unicode.  The first argument to CVSTextDecoder is a list of encoders
+# that are tried in order in 'strict' mode until one of them succeeds.
+# If none of those succeeds, then fallback_encoder (if it is
+# specified) is used in lossy 'replace' mode.  Setting a fallback
+# encoder ensures that the encoder always succeeds, but it can cause
+# information loss.
+ctx.cvs_author_decoder = CVSTextDecoder(
+    [
+        'utf8',
+        'latin1',
+        'ascii',
+        ],
+    #fallback_encoding='ascii'
+    )
+ctx.cvs_log_decoder = CVSTextDecoder(
+    [
+        'utf8',
+        'latin1',
+        'ascii',
+        ],
+    #fallback_encoding='ascii',
+    eol_fix='\n',
+    )
+# You might want to be especially strict when converting filenames to
+# Unicode (e.g., maybe not specify a fallback_encoding).
+ctx.cvs_filename_decoder = CVSTextDecoder(
+    [
+        #'utf8',
+        #'latin1',
+        'ascii',
+        ],
+    #fallback_encoding='ascii'
+    )
+
+# Template for the commit message to be used for initial project
+# commits.
+ctx.initial_project_commit_message = (
+    'Standard project directories initialized by cvs2svn.'
+    )
+
+# Template for the commit message to be used for post commits, in
+# which modifications to a vendor branch are copied back to trunk.
+# This message can use '%(revnum)d' to include the SVN revision number
+# of the revision that included the change to the vendor branch
+# (admittedly rather pointless in a cvs2git conversion).
+ctx.post_commit_message = (
+    'This commit was generated by cvs2svn to track changes on a CVS '
+    'vendor branch.'
+    )
+
+# Template for the commit message to be used for commits in which
+# symbols are created.  This message can use '%(symbol_type)s' to
+# include the type of the symbol ('branch' or 'tag') or
+# '%(symbol_name)s' to include the name of the symbol.
+ctx.symbol_commit_message = (
+    "This commit was manufactured by cvs2svn to create %(symbol_type)s "
+    "'%(symbol_name)s'."
+    )
+
+# Template for the commit message to be used for commits in which
+# tags are pseudo-merged back to their source branch.  This message can
+# use '%(symbol_name)s' to include the name of the symbol.
+# (Not used by default unless you enable tie_tag_fixup_branches on
+# GitOutputOption.)
+ctx.tie_tag_ancestry_message = (
+    "This commit was manufactured by cvs2svn to tie ancestry for "
+    "tag '%(symbol_name)s' back to the source branch."
+    )
+
+# Some CVS clients for MacOS store resource fork data into CVS along
+# with the file contents itself by wrapping it all up in a container
+# format called "AppleSingle".  Subversion currently does not support
+# MacOS resource forks.  Nevertheless, sometimes the resource fork
+# information is not necessary and can be discarded.  Set the
+# following option to True if you would like cvs2svn to identify files
+# whose contents are encoded in AppleSingle format, and discard all
+# but the data fork for such files before committing them to
+# Subversion.  (Please note that AppleSingle contents are identified
+# by the AppleSingle magic number as the first four bytes of the file.
+# This check is not failproof, so only set this option if you think
+# you need it.)
+ctx.decode_apple_single = False
+
+# This option can be set to the name of a filename to which are stored
+# statistics and conversion decisions about the CVS symbols.
+#ctx.symbol_info_filename = None
+ctx.symbol_info_filename = 'symbol-info.txt'
+
+# cvs2svn uses "symbol strategy rules" to help decide how to handle
+# CVS symbols.  The rules in a project's symbol_strategy_rules are
+# applied in order, and each rule is allowed to modify the symbol.
+# The result (after each of the rules has been applied) is used for
+# the conversion.
+#
+# 1. A CVS symbol might be used as a tag in one file and as a branch
+#    in another file.  cvs2svn has to decide whether to convert such a
+#    symbol as a tag or as a branch.  cvs2svn uses a series of
+#    heuristic rules to decide how to convert a symbol.  The user can
+#    override the default rules for specific symbols or symbols
+#    matching regular expressions.
+#
+# 2. cvs2svn is also capable of excluding symbols from the conversion
+#    (provided no other symbols depend on them.
+#
+# 3. CVS does not record unambiguously the line of development from
+#    which a symbol sprouted.  cvs2svn uses a heuristic to choose a
+#    symbol's "preferred parents".
+#
+# The standard branch/tag/exclude StrategyRules do not change a symbol
+# that has already been processed by an earlier rule, so in effect the
+# first matching rule is the one that is used.
+
+global_symbol_strategy_rules = [
+    # It is possible to specify manually exactly how symbols should be
+    # converted and what line of development should be used as the
+    # preferred parent.  To do so, create a file containing the symbol
+    # hints and enable the following option.
+    #
+    # The format of the hints file is described in the documentation
+    # for the --symbol-hints command-line option.  The file output by
+    # the --write-symbol-info (i.e., ctx.symbol_info_filename) option
+    # is in the same format.  The simplest way to use this option is
+    # to run the conversion through CollateSymbolsPass with
+    # --write-symbol-info option, copy the symbol info and edit it to
+    # create a hints file, then re-start the conversion at
+    # CollateSymbolsPass with this option enabled.
+    #SymbolHintsFileRule('symbol-hints2.txt'),
+
+    # To force all symbols matching a regular expression to be
+    # converted as branches, add rules like the following:
+    #ForceBranchRegexpStrategyRule(r'branch.*'),
+
+    # To force all symbols matching a regular expression to be
+    # converted as tags, add rules like the following:
+    #ForceTagRegexpStrategyRule(r'tag.*'),
+
+    # To force all symbols matching a regular expression to be
+    # excluded from the conversion, add rules like the following:
+    #ExcludeRegexpStrategyRule(r'unknown-.*'),
+
+    # Sometimes people use "cvs import" to get their own source code
+    # into CVS.  This practice creates a vendor branch 1.1.1 and
+    # imports the code onto the vendor branch as 1.1.1.1, then copies
+    # the same content to the trunk as version 1.1.  Normally, such
+    # vendor branches are useless and they complicate the SVN history
+    # unnecessarily.  The following rule excludes any branches that
+    # only existed as a vendor branch with a single import (leaving
+    # only the 1.1 revision).  If you want to retain such branches,
+    # comment out the following line.  (Please note that this rule
+    # does not exclude vendor *tags*, as they are not so easy to
+    # identify.)
+    ExcludeTrivialImportBranchRule(),
+
+    # To exclude all vendor branches (branches that had "cvs import"s
+    # on them but no other kinds of commits), uncomment the following
+    # line:
+    #ExcludeVendorBranchRule(),
+
+    # Usually you want this rule, to convert unambiguous symbols
+    # (symbols that were only ever used as tags or only ever used as
+    # branches in CVS) the same way they were used in CVS:
+    UnambiguousUsageRule(),
+
+    # If there was ever a commit on a symbol, then it cannot be
+    # converted as a tag.  This rule causes all such symbols to be
+    # converted as branches.  If you would like to resolve such
+    # ambiguities manually, comment out the following line:
+    BranchIfCommitsRule(),
+
+    # Last in the list can be a catch-all rule that is used for
+    # symbols that were not matched by any of the more specific rules
+    # above.  (Assuming that BranchIfCommitsRule() was included above,
+    # then the symbols that are still indeterminate at this point can
+    # sensibly be converted as branches or tags.)  Include at most one
+    # of these lines.  If none of these catch-all rules are included,
+    # then the presence of any ambiguous symbols (that haven't been
+    # disambiguated above) is an error:
+
+    # Convert ambiguous symbols based on whether they were used more
+    # often as branches or as tags:
+    HeuristicStrategyRule(),
+    # Convert all ambiguous symbols as branches:
+    #AllBranchRule(),
+    # Convert all ambiguous symbols as tags:
+    #AllTagRule(),
+
+    # The last rule is here to choose the preferred parent of branches
+    # and tags, that is, the line of development from which the symbol
+    # sprouts.
+    HeuristicPreferredParentRule(),
+    ]
+
+# Specify a username to be used for commits for which CVS doesn't
+# record the original author (for example, the creation of a branch).
+# This should be a simple (unix-style) username, but it can be
+# translated into a git-style name by the author_transforms map.
+ctx.username = 'cvs2svn'
+
+# ctx.file_property_setters and ctx.revision_property_setters contain
+# rules used to set the svn properties on files in the converted
+# archive.  For each file, the rules are tried one by one.  Any rule
+# can add or suppress one or more svn properties.  Typically the rules
+# will not overwrite properties set by a previous rule (though they
+# are free to do so).  ctx.file_property_setters should be used for
+# properties that remain the same for the life of the file; these
+# should implement FilePropertySetter.  ctx.revision_property_setters
+# should be used for properties that are allowed to vary from revision
+# to revision; these should implement RevisionPropertySetter.
+#
+# Obviously, SVN properties per se are not interesting for a cvs2git
+# conversion, but some of these properties have side-effects that do
+# affect the git output.  FIXME: Document this in more detail.
+ctx.file_property_setters.extend([
+    # To read auto-props rules from a file, uncomment the following line
+    # and specify a filename.  The boolean argument specifies whether
+    # case should be ignored when matching filenames to the filename
+    # patterns found in the auto-props file:
+    #AutoPropsPropertySetter(
+    #    r'/home/username/.subversion/config',
+    #    ignore_case=True,
+    #    ),
+
+    # To read mime types from a file and use them to set svn:mime-type
+    # based on the filename extensions, uncomment the following line
+    # and specify a filename (see
+    # http://en.wikipedia.org/wiki/Mime.types for information about
+    # mime.types files):
+    #MimeMapper(r'/etc/mime.types', ignore_case=False),
+
+    # Omit the svn:eol-style property from any files that are listed
+    # as binary (i.e., mode '-kb') in CVS:
+    CVSBinaryFileEOLStyleSetter(),
+
+    # If the file is binary and its svn:mime-type property is not yet
+    # set, set svn:mime-type to 'application/octet-stream'.
+    CVSBinaryFileDefaultMimeTypeSetter(),
+
+    # To try to determine the eol-style from the mime type, uncomment
+    # the following line:
+    #EOLStyleFromMimeTypeSetter(),
+
+    # Choose one of the following lines to set the default
+    # svn:eol-style if none of the above rules applied.  The argument
+    # is the svn:eol-style that should be applied, or None if no
+    # svn:eol-style should be set (i.e., the file should be treated as
+    # binary).
+    #
+    # The default is to treat all files as binary unless one of the
+    # previous rules has determined otherwise, because this is the
+    # safest approach.  However, if you have been diligent about
+    # marking binary files with -kb in CVS and/or you have used the
+    # above rules to definitely mark binary files as binary, then you
+    # might prefer to use 'native' as the default, as it is usually
+    # the most convenient setting for text files.  Other possible
+    # options: 'CRLF', 'CR', 'LF'.
+    DefaultEOLStyleSetter(None),
+    #DefaultEOLStyleSetter('native'),
+
+    # Prevent svn:keywords from being set on files that have
+    # svn:eol-style unset.
+    SVNBinaryFileKeywordsPropertySetter(),
+
+    # If svn:keywords has not been set yet, set it based on the file's
+    # CVS mode:
+    KeywordsPropertySetter(config.SVN_KEYWORDS_VALUE),
+
+    # Set the svn:executable flag on any files that are marked in CVS as
+    # being executable:
+    ExecutablePropertySetter(),
+
+    # The following causes keywords to be untouched in binary files and
+    # collapsed in all text to be committed:
+    ConditionalPropertySetter(
+        cvs_file_is_binary, KeywordHandlingPropertySetter('untouched'),
+        ),
+    KeywordHandlingPropertySetter('collapsed'),
+
+    ])
+ctx.revision_property_setters.extend([
+    ])
+
+# To skip the cleanup of temporary files, uncomment the following
+# option:
+ctx.skip_cleanup = True
+
+
+# In CVS, it is perfectly possible to make a single commit that
+# affects more than one project or more than one branch of a single
+# project.  Subversion also allows such commits.  Therefore, by
+# default, when cvs2svn sees what looks like a cross-project or
+# cross-branch CVS commit, it converts it into a
+# cross-project/cross-branch Subversion commit.
+#
+# However, other tools and SCMs have trouble representing
+# cross-project or cross-branch commits.  (For example, Trac's Revtree
+# plugin, http://www.trac-hacks.org/wiki/RevtreePlugin is confused by
+# such commits.)  Therefore, we provide the following two options to
+# allow cross-project/cross-branch commits to be suppressed.
+
+# cvs2git only supports single-project conversions (multiple-project
+# conversions wouldn't really make sense for git anyway).  So this
+# option must be set to False:
+ctx.cross_project_commits = False
+
+# git itself doesn't allow commits that affect more than one branch,
+# so this option must be set to False:
+ctx.cross_branch_commits = False
+
+# cvs2git does not yet handle translating .cvsignore files into
+# .gitignore files, so by default, the .cvsignore files are included
+# in the conversion output.  If you would like to omit the .cvsignore
+# files from the output, set this option to False:
+ctx.keep_cvsignore = True
+
+# By default, it is a fatal error for a CVS ",v" file to appear both
+# inside and outside of an "Attic" subdirectory (this should never
+# happen, but frequently occurs due to botched repository
+# administration).  If you would like to retain both versions of such
+# files, change the following option to True, and the attic version of
+# the file will be written to a subdirectory called "Attic" in the
+# output repository:
+ctx.retain_conflicting_attic_files = False
+
+# CVS uses unix login names as author names whereas git requires
+# author names to be of the form "foo <bar>".  The default is to set
+# the git author to "cvsauthor <cvsauthor>".  author_transforms can be
+# used to map cvsauthor names (e.g., "jrandom") to a true name and
+# email address (e.g., "J. Random <jrandom@example.com>" for the
+# example shown).  All strings should be either Unicode strings (i.e.,
+# with "u" as a prefix) or 8-bit strings in the utf-8 encoding.  The
+# values can either be strings in the form "name <email>" or tuples
+# (name, email).  Please substitute your own project's usernames here
+# to use with the author_transforms option of GitOutputOption below.
+author_transforms={
+
+'aarcher' : ('Adam Archer', 'aarcher'),
+'ahunter' : ('Anthony Hunter', 'ahunter'),
+'airvine' : ('airvine', 'airvine'),
+'aniefer' : ('Andrew Niefer', 'aniefer'),
+'aweinand' : ('aweinand', 'aweinand'),
+'bbiggs' : ('bbiggs', 'bbiggs'),
+'bbokowski' : ('Boris Bokowski', 'bbokowski'),
+'bcabe' : ('Benjamin Cabe', 'bcabe'),
+'bdealwis' : ('Brian Dealwis', 'bdealwis'),
+'bmuskalla' : ('Benjamin Muskalla', 'bmuskalla'),
+'breynolds' : ('breynolds', 'breynolds'),
+'caniszczyk' : ('Chris Aniszczyk', 'caniszczyk'),
+'cdaniel' : ('Krzysztof Daniel', 'cdaniel'),
+'cgoldthor' : ('Chris Goldthorpe', 'cgoldthor'),
+'cknaus' : ('cknaus', 'cknaus'),
+'cmclaren' : ('cmclaren', 'cmclaren'),
+'curtispd' : ('Curtis D\'Entremont', 'curtispd'),
+'darins' : ('darins', 'darins'),
+'davids' : ('davids', 'davids'),
+'david_williams' : ('David Williams', 'david_williams'),
+'deboer' : ('Timothy Deboer', 'deboer'),
+'ffusier' : ('Frederic Fusier', 'ffusier'),
+'dejan' : ('dejan', 'dejan'),
+'dmegert' : ('Dani Megert', 'dmegert'),
+'dorme' : ('Dave Orme', 'dorme'),
+'dpollock' : ('dpollock', 'dpollock'),
+'droberts' : ('Dean Roberts', 'droberts'),
+'drubel' : ('Dan Rubel', 'drubel'),
+'dwilson' : ('dwilson', 'dwilson'),
+'ebb' : ('Ed Burnette', 'ebb'),
+'eduardo' : ('eduardo', 'eduardo'),
+'eidsness' : ('eidsness', 'eidsness'),
+'emoffatt' : ('Eric Moffatt', 'emoffatt'),
+'fuptoniv' : ('Francis Upton IV', 'fuptoniv'),
+'gheorghe' : ('Bogdan Gheorghe', 'gheorghe'),
+'gmendel' : ('gmendel', 'gmendel'),
+'gunnar' : ('Gunnar Wagenknecht', 'gunnar'),
+'hsoliwal' : ('Hitesh Soliwal', 'hsoliwal'),
+'ikhelifi' : ('ikhelifi', 'ikhelifi'),
+'jeem' : ('jeem', 'jeem'),
+'jlebrun' : ('jlebrun', 'jlebrun'),
+'jlemieux' : ('jlemieux', 'jlemieux'),
+'johna' : ('John Arthorne', 'johna'),
+'karice' : ('Karice McIntyre', 'karice'),
+'kevinh' : ('kevinh', 'kevinh'),
+'kevinm' : ('kevinm', 'kevinm'),
+'khorne' : ('khorne', 'khorne'),
+'kmaetzel' : ('kmaetzel', 'kmaetzel'),
+'kmoir' : ('Kim Moir', 'kmoir'),
+'kradloff' : ('kradloff', 'kradloff'),
+'ktoedter' : ('Kai Toedter', 'ktoedter'),
+'lkues' : ('lkues', 'lkues'),
+'lvogel' : ('Lars Vogel', 'lvogel'),
+'marcelop' : ('Marcelo Paternostro', 'marcelop'),
+'melder' : ('melder', 'melder'),
+'mhall' : ('Matthew Hall', 'mhall'),
+'mhatem' : ('mhatem', 'mhatem'),
+'mkeller' : ('Markus Keller', 'mkeller'),
+'mvalenta' : ('mvalenta', 'mvalenta'),
+'mvanmeek' : ('mvanmeek', 'mvanmeek'),
+'nick' : ('Nick Edgar', 'nick'),
+'obesedin' : ('Oleg Besedin', 'obesedin'),
+'omallo' : ('Ovidio Mallo', 'omallo'),
+'prangaraj' : ('Prakash Rangaraj', 'prangaraj'),
+'pwebster' : ('Paul Webster', 'pwebster'),
+'randyg' : ('randyg', 'randyg'),
+'rherrmann' : ('Rudiger Herrmann', 'rherrmann'),
+'rsternber' : ('Ralf Sternberg', 'rsternber'),
+'rsuen' : ('Remy Suen', 'rsuen'),
+'sarsenau' : ('sarsenau', 'sarsenau'),
+'sbeauchamp' : ('Serge Beauchamp', 'sbeauchamp'),
+'sbrandys' : ('Szymon Brandys', 'sbrandys'),
+'sdimitro' : ('Sonia Dimitrov', 'sdimitro'),
+'sfranklin' : ('Susan Franklin', 'sfranklin'),
+'sxenos' : ('sxenos', 'sxenos'),
+'tod' : ('Tod Creasey', 'tod'),
+'tschindl' : ('Thomas Schindl', 'tschindl'),
+'wchoi' : ('wchoi', 'wchoi'),
+'winchest' : ('winchest', 'winchest'),
+'wmelhem' : ('wmelhem', 'wmelhem'),
+'yvyang' : ('Yves YANG', 'yvyang'),
+
+#    'jrandom' : ('J. Random', 'jrandom@example.com'),
+#    'mhagger' : 'Michael Haggerty <mhagger@alum.mit.edu>',
+#    'brane' : (u'Branko Äibej', 'brane@xbc.nu'),
+#    'ringstrom' : 'Tobias Ringström <tobias@ringstrom.mine.nu>',
+#    'dionisos' : (u'Erik Hülsmann', 'e.huelsmann@gmx.net'),
+
+    # This one will be used for commits for which CVS doesn't record
+    # the original author, as explained above.
+    'cvs2svn' : 'cvs2svn <platform-releng-dev@eclipse.org>',
+    }
+
+# This is the main option that causes cvs2svn to output to a
+# "fastimport"-format dumpfile rather than to Subversion:
+ctx.output_option = GitOutputOption(
+    # The file in which to write the git-fast-import stream that
+    # contains the changesets and branch/tag information:
+    os.path.join(ctx.tmpdir, 'git-dump.dat'),
+
+    # The blobs will be written via the revision recorder, so in
+    # OutputPass we only have to emit references to the blob marks:
+    GitRevisionMarkWriter(),
+
+    # Optional map from CVS author names to git author names:
+    author_transforms=author_transforms,
+    )
+
+# Change this option to True to turn on profiling of cvs2svn (for
+# debugging purposes):
+run_options.profiling = False
+
+
+# Should CVSItem -> Changeset database files be memory mapped?  In
+# some tests, using memory mapping speeded up the overall conversion
+# by about 5%.  But this option can cause the conversion to fail with
+# an out of memory error if the conversion computer runs out of
+# virtual address space (e.g., when running a very large conversion on
+# a 32-bit operating system).  Therefore it is disabled by default.
+# Uncomment the following line to allow these database files to be
+# memory mapped.
+changeset_database.use_mmap_for_cvs_item_to_changeset_table = True
+
+# Now set the project to be converted to git.  cvs2git only supports
+# single-project conversions, so this method must only be called
+# once:
+run_options.set_project(
+    # The filesystem path to the part of the CVS repository (*not* a
+    # CVS working copy) that should be converted.  This may be a
+    # subdirectory (i.e., a module) within a larger CVS repository.
+    r'/shared/eclipse/e4/git/cvs/cvsroot.org.eclipse.releng.eclipsebuilder/org.eclipse.releng.eclipsebuilder',
+
+    # A list of symbol transformations that can be used to rename
+    # symbols in this project.
+    symbol_transforms=[
+        # Use IgnoreSymbolTransforms like the following to completely
+        # ignore symbols matching a regular expression when parsing
+        # the CVS repository, for example to avoid warnings about
+        # branches with two names and to choose the preferred name.
+        # It is *not* recommended to use this instead of
+        # ExcludeRegexpStrategyRule; though more efficient,
+        # IgnoreSymbolTransforms are less flexible and don't exclude
+        # branches correctly.  The argument is a Python-style regular
+        # expression that has to match the *whole* CVS symbol name:
+        #IgnoreSymbolTransform(r'nightly-build-tag-.*')
+
+        # RegexpSymbolTransforms transform symbols textually using a
+        # regular expression.  The first argument is a Python regular
+        # expression pattern and the second is a replacement pattern.
+        # The pattern is matched against each symbol name.  If it
+        # matches the whole symbol name, then the symbol name is
+        # replaced with the corresponding replacement text.  The
+        # replacement can include substitution patterns (e.g., r'\1'
+        # or r'\g<name>').  Typically you will want to use raw strings
+        # (strings with a preceding 'r', like shown in the examples)
+        # for the regexp and its replacement to avoid backslash
+        # substitution within those strings.
+        #RegexpSymbolTransform(r'release-(\d+)_(\d+)',
+        #                      r'release-\1.\2'),
+        #RegexpSymbolTransform(r'release-(\d+)_(\d+)_(\d+)',
+        #                      r'release-\1.\2.\3'),
+
+        # Simple 1:1 character replacements can also be done.  The
+        # following transform, which converts backslashes into forward
+        # slashes, should usually be included:
+        ReplaceSubstringsSymbolTransform('\\','/'),
+
+        # This last rule eliminates leading, trailing, and repeated
+        # slashes within the output symbol names:
+        NormalizePathsSymbolTransform(),
+        ],
+
+    # See the definition of global_symbol_strategy_rules above for a
+    # description of this option:
+    symbol_strategy_rules=global_symbol_strategy_rules,
+
+    # Exclude paths from the conversion. Should be relative to
+    # repository path and use forward slashes:
+    #exclude_paths=['file-to-exclude.txt,v', 'dir/to/exclude'],
+    )
+
+
diff --git a/scripts/migration_script.sh b/scripts/migration_script.sh
index 806a15e..38a2ead 100644
--- a/scripts/migration_script.sh
+++ b/scripts/migration_script.sh
@@ -1113,15 +1113,17 @@
 
 ##################################################
 # next, org.eclipse.releng.eclipsebuilder since it should be isolated
+ROOT=/shared/eclipse/e4/git/cvs
+MIGR=$ROOT/org.eclipse.migration
 MODULE_NAME=org.eclipse.releng.eclipsebuilder
 
 cd $ROOT
 CVS_LOC=$ROOT/cvsroot.$MODULE_NAME
-mkdir -p $CVS_LOC/e4
+mkdir -p $CVS_LOC/$MODULE_NAME
 cd $CVS_LOC
 cvs -d :local:$(pwd) init
 
-MIGR_PASS=$MIGR/org.eclipse.releng.eclipsebuilder/pass1
+MIGR_PASS=$MIGR/$MODULE_NAME/pass2
 
 # clean the CVS repo of links
 find $CVS_LOC -type l|xargs -n 1 rm
@@ -1171,6 +1173,7 @@
 git gc --aggressive
 git repack -a -d --depth=250 --window=250
 
+git tag -d v/builds/N20050204-1608
 
 # now examine the repo, hopefully the tags and branches that we care about are in decent shape.
 # In my case, I see Cherrypick markers for a couple of tags.  When the conversion is complete and most
@@ -1185,30 +1188,8 @@
 # last step before you deploy:
 
 cd $ROOT
-cat - >gitignore <<EOF
-bin/
-*~
-*.rej
-*.bak
-*.patch
-javacore.*
-heapdump.*
-core.*
-Snap.*
-target/
-
-EOF
-
 cd target.$MODULE_NAME
 
-# from http://stackoverflow.com/questions/3895453/how-do-i-make-a-git-commit-in-the-past
-
-new_file=$(git hash-object -w ../gitignore)
-git filter-branch \
---index-filter \
-'git update-index --add --cacheinfo 100644 '"$new_file"' .gitignore' \
---tag-name-filter cat \
--- --all
 
 git reset --hard
 
