blob: 8db50f5012b0ec68422140739e0653e41baea329 [file] [log] [blame]
#!/bin/bash
# *** Don't run this script :-) ***
ROOT=/shared/eclipse/e4/git/cvs
MIGR=$ROOT/org.eclipse.migration
##################################################
# first up, the big one: eclipse.platform.ui
# make the fake cvs repo in the right shape
CVS_LOC=$ROOT/cvsroot.eclipse.platform.ui
mkdir $CVS_LOC
cd $CVS_LOC
cvs -d :local:$(pwd) init
mkdir -p eclipse.platform.ui
cd eclipse.platform.ui
mkdir bundles examples features tests
MIGR_PASS=$MIGR/eclipse.platform.ui/pass3
cd /cvsroot/eclipse
. $MIGR_PASS/modules_ui.sh
for M in $MODULES; do
echo $M
cp -r $M $CVS_LOC/eclipse.platform.ui/bundles
done
cd $CVS_LOC/eclipse.platform.ui/bundles
mv *tests* ../tests
mv *example* *snippet* ../examples
# clean the CVS repo of links
find $CVS_LOC -type l|xargs -n 1 rm
#get the tool, once
cd $ROOT
svn co --username=guest --password="" http://cvs2svn.tigris.org/svn/cvs2svn/trunk cvs2svn-trunk
# generate the import data
# make sure the author names are correct
# make sure your options file points to the correct tmp cvsroot
cvs2svn-trunk/cvs2git --options=$MIGR_PASS/cvs2git.options >cvs2git_log.txt 2>&1
cp symbol-info.txt $MIGR_PASS
# create a git repo to be used for verification
git init verify.eclipse.platform.ui
cd verify.eclipse.platform.ui
cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import
python ../cvs2svn-trunk/contrib/git-move-refs.py
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
# verify the repo - this can take long, so for your first test skip this step.
cd $ROOT
mkdir compare-tmp
python $ROOT/cvs2svn-trunk/contrib/verify-cvs2svn.py \
--git $CVS_LOC/eclipse.platform.ui \
$ROOT/verify.eclipse.platform.ui \
--tmp=$ROOT/compare-tmp --diff >$MIGR_PASS/compare-log.txt 2>&1 &
# create a git repo to continue the conversion
git init target.eclipse.platform.ui
cd target.eclipse.platform.ui
cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import
python ../cvs2svn-trunk/contrib/git-move-refs.py
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
# we also have to delete at least 2 tags:
git tag 'R3_6_api_cleanup_build_20091125' 'R3_6_api_cleanup_<build_20091125>'
git tag -d 'R3_6_api_cleanup_<build_20091125>'
git tag 'R3_6_p2_api_cleanup_20091216' 'R3_6_p2_api_cleanup_<20091216>'
git tag -d 'R3_6_p2_api_cleanup_<20091216>'
# Fixing the Delete only tags:
cd $ROOT
/bin/bash $MIGR/scripts/fix_tags.sh >$MIGR_PASS/tag_report.sh
grep ^git $MIGR_PASS/tag_report.sh >$MIGR_PASS/mv_tags.sh
# examine them
/bin/bash $MIGR_PASS/mv_tags.sh
# 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
# people are happy, a developer will have to examine these commits to see if they
# can be simplified.
grep ^Cherry $MIGR_PASS/tag_report.sh >$MIGR_PASS/tag_cherrypicks.txt
grep "R[34]_" $MIGR_PASS/tag_cherrypicks.txt
#Cherrypick tag: R3_0 commit: ead7a690ae2a6b78507ee0705e2cdd193c4c9dfd
#Cherrypick tag: R3_0_2 commit: 33b9f9f25fd8e45cd2206a504725bcfb03e9199f
#Cherrypick tag: R3_1 commit: 83d5b3b8596bf06ceea3cf0054dd6c66e049f054
#Cherrypick tag: R3_3_1_1 commit: a74e9bad283b3d01ec5683fa719710e9ca0e645b
#Cherrypick tag: R3_4_1 commit: 96e8167b3756219d62dcaf5318c6a42f1b93dfb9
#Cherrypick tag: R3_5 commit: 4186af7444f9685e7f4bf27cfe1878866ce9a2e5
#Cherrypick tag: Root_R3_4_maintenance commit: e4ec86e43c2cec1e0d6e94660bed1704d5eaf41d
git branch >$MIGR_PASS/branches.txt
git tag >$MIGR_PASS/tags.txt
#
# after the other repos are converted, the next step is the merge with eclipse.platform.ui.e4
#
##################################################
# next, org.eclipse.e4.tools since it should be isolated
MODULE_NAME=org.eclipse.e4.tools
cd $ROOT
CVS_LOC=$ROOT/cvsroot.$MODULE_NAME
mkdir -p $CVS_LOC/e4
cd $CVS_LOC
cvs -d :local:$(pwd) init
MIGR_PASS=$MIGR/org.eclipse.e4.tools/pass3
cp -r /cvsroot/eclipse/e4/$MODULE_NAME $CVS_LOC/e4
# clean the CVS repo of links
find $CVS_LOC -type l|xargs -n 1 rm
# generate the import data
# make sure the author names are correct
# make sure your options file points to the correct tmp cvsroot
cd $ROOT
vi $MIGR_PASS/cvs2git.options
rm -rf cvs2svn-tmp symbol-info.txt cvs2git_log.txt
cvs2svn-trunk/cvs2git --options=$MIGR_PASS/cvs2git.options >cvs2git_log.txt 2>&1
cp symbol-info.txt cvs2git_log.txt $MIGR_PASS
# create a git repo to be used for verification
git init verify.$MODULE_NAME
cd verify.$MODULE_NAME
cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import
python ../cvs2svn-trunk/contrib/git-move-refs.py
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
# verify the repo - this can take long, so for your first test skip this step.
cd $ROOT
rm -rf compare-tmp
mkdir compare-tmp
python $ROOT/cvs2svn-trunk/contrib/verify-cvs2svn.py \
--git $CVS_LOC/e4/$MODULE_NAME \
$ROOT/verify.$MODULE_NAME \
--tmp=$ROOT/compare-tmp --diff >$MIGR_PASS/compare-log.txt 2>&1 &
# create a git repo to continue the conversion
cd $ROOT
git init target.$MODULE_NAME
cd target.$MODULE_NAME
cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import
python ../cvs2svn-trunk/contrib/git-move-refs.py
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
# Fixing the Delete only tags:
cd $ROOT/target.$MODULE_NAME
/bin/bash $MIGR/scripts/fix_tags.sh >$MIGR_PASS/tag_report.sh
grep ^git $MIGR_PASS/tag_report.sh >$MIGR_PASS/mv_tags.sh
# examine them
/bin/bash $MIGR_PASS/mv_tags.sh
# 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
# people are happy, a developer will have to examine these commits to see if they
# can be simplified.
grep ^Cherry $MIGR_PASS/tag_report.sh >$MIGR_PASS/tag_cherrypicks.txt
grep "R[34]_" $MIGR_PASS/tag_cherrypicks.txt
# No R?_ Cherry pick tags
git branch >$MIGR_PASS/branches.txt
git tag >$MIGR_PASS/tags.txt
# last step before you deploy:
cd $ROOT
cat - >gitignore <<EOF
bin/
*~
*.rej
*.bak
core
*.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
#create deploy
cd $ROOT
git clone --bare target.$MODULE_NAME deploy.$MODULE_NAME
cd deploy.$MODULE_NAME
git remote rm origin
git config -l
git config --add core.sharedrepository 1
#final pack and prune step
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
cd $ROOT
scp -r deploy.$MODULE_NAME pwebster@git.eclipse.org:/gitroot/e4/${MODULE_NAME}.git
##################################################
# next, eclipse.platform.ui.e4 - graduated Eclipse4 UI bundles
MODULE_NAME=eclipse.platform.ui.e4
cd $ROOT
CVS_LOC=$ROOT/cvsroot.$MODULE_NAME
mkdir -p $CVS_LOC/e4
cd $CVS_LOC
cvs -d :local:$(pwd) init
MIGR_PASS=$MIGR/$MODULE_NAME/pass3
$MIGR/scripts/copy_e4.sh $MIGR_PASS/modules_platform_ui.sh $CVS_LOC
# fix up the compat tests that moved into platform ui
cd $CVS_LOC/e4
mv org.eclipse.e4.compatibility/tests/* org.eclipse.e4.ui/tests
mv org.eclipse.e4.compatibility/features/org.eclipse.e4.rcp/ org.eclipse.e4.ui/features
#confirm there's nothing else in there
find org.eclipse.e4.compatibility/ -type f
# clean the CVS repo of links
find $CVS_LOC -type l|xargs -n 1 rm
# generate the import data
# make sure the author names are correct
# make sure your options file points to the correct tmp cvsroot
cd $ROOT
vi $MIGR_PASS/cvs2git.options
rm -rf cvs2svn-tmp symbol-info.txt cvs2git_log.txt
cvs2svn-trunk/cvs2git --options=$MIGR_PASS/cvs2git.options >cvs2git_log.txt 2>&1
cp symbol-info.txt cvs2git_log.txt $MIGR_PASS
# create a git repo to be used for verification
git init verify.$MODULE_NAME
cd verify.$MODULE_NAME
cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import
python ../cvs2svn-trunk/contrib/git-move-refs.py
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
# verify the repo - this can take long, so for your first test skip this step.
cd $ROOT
rm -rf compare-tmp
mkdir compare-tmp
python $ROOT/cvs2svn-trunk/contrib/verify-cvs2svn.py \
--git $CVS_LOC/e4/$MODULE_NAME \
$ROOT/verify.$MODULE_NAME \
--tmp=$ROOT/compare-tmp --diff >$MIGR_PASS/compare-log.txt 2>&1 &
# create a git repo to continue the conversion
git init target.$MODULE_NAME
cd target.$MODULE_NAME
cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import
python ../cvs2svn-trunk/contrib/git-move-refs.py
git prune
git repack -a -d --depth=250 --window=250
git gc --aggressive
git repack -a -d --depth=250 --window=250
# Fixing the Delete only tags:
cd $ROOT/target.$MODULE_NAME
/bin/bash $MIGR/scripts/fix_tags.sh >$MIGR_PASS/tag_report.sh
grep ^git $MIGR_PASS/tag_report.sh >$MIGR_PASS/mv_tags.sh
# examine them
/bin/bash $MIGR_PASS/mv_tags.sh
# 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
# people are happy, a developer will have to examine these commits to see if they
# can be simplified.
grep ^Cherry $MIGR_PASS/tag_report.sh >$MIGR_PASS/tag_cherrypicks.txt
grep "R[34]_" $MIGR_PASS/tag_cherrypicks.txt
# info goes here
git branch >$MIGR_PASS/branches.txt
git tag >$MIGR_PASS/tags.txt
cd $ROOT
git clone --bare target.$MODULE_NAME deploy.$MODULE_NAME
cd deploy.$MODULE_NAME
git remote rm origin
git config -l
git config --add core.sharedrepository 1