| #!/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 - started on work linux box |
| 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 |
| # |
| # DONE, org.eclipse.e4.tools |
| # |
| |
| |
| |
| ################################################## |
| # 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 |
| # No changes here |
| |
| git branch >$MIGR_PASS/branches.txt |
| git tag >$MIGR_PASS/tags.txt |
| |
| # the next step for this one is to be merged into eclipse.platform.ui |
| |
| |
| |
| |
| |
| ################################################## |
| # next, eclipse.platform.runtime.e4 - graduated Eclipse4 core bundles |
| MODULE_NAME=eclipse.platform.runtime.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_runtime.sh $CVS_LOC |
| |
| |
| |
| # 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 changes here |
| |
| git branch >$MIGR_PASS/branches.txt |
| git tag >$MIGR_PASS/tags.txt |
| |
| # the next step for this one is to be merged into eclipse.platform.runtime ... still to be converted |
| |
| |
| |
| |
| |
| ################################################## |
| # next, org.eclipse.e4.ui - leftover e4 bundles and simpleide |
| MODULE_NAME=org.eclipse.e4.ui |
| |
| 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_e4_ui.sh $CVS_LOC |
| |
| |
| |
| # 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 changes here |
| |
| git branch >$MIGR_PASS/branches.txt |
| git tag >$MIGR_PASS/tags.txt |
| |
| 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 |
| rm -f t1.txt |
| git checkout master |
| |
| 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 |
| # |
| # DONE, org.eclipse.e4.ui |
| # |
| |
| |
| ################################################## |
| # next, eclipse.platform.ui.compat - The ui.workbench fork |
| MODULE_NAME=eclipse.platform.ui.compat |
| |
| 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_compat.sh $CVS_LOC |
| |
| |
| |
| # 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 changes here |
| |
| git branch >$MIGR_PASS/branches.txt |
| git tag >$MIGR_PASS/tags.txt |
| |
| # the last step for this one is to be merged into eclipse.platform.ui and grafted on random places |
| |
| ################################################## |
| # Let's do eclipse.platform.runtime so core has a place to go |
| |
| #from somewhere with a useful CVSROOT |
| ../../scripts/retag_cvs.sh modules_runtime.sh R3_6 "06/04/2010 00:00" R3_6_maintenance >tag_pass1.sh |
| grep ^cvs tag_pass1.sh >tag_fix1.sh |
| #examine tag_fix1.sh and then run |
| /bin/bash -x tag_fix1.sh |
| |
| # Then fix the other tags. TAG1 is a known tag (like from above :-) |
| ../../scripts/subtag_cvs.sh modules_runtime.sh R3_6 R3_6_1 >subtag_pass1.sh |
| grep ^cvs subtag_pass1.sh >subtag_fix1.sh |
| #examine subtag_fix1.sh and then run |
| /bin/bash -x subtag_fix1.sh |
| |
| ../../scripts/subtag_cvs.sh modules_runtime.sh R3_6_1 R3_6_2 >subtag_pass2.sh |
| grep ^cvs subtag_pass2.sh >subtag_fix2.sh |
| #examine subtag_fix2.sh and then run |
| /bin/bash -x subtag_fix2.sh |
| |
| |
| # R3_5 |
| ../../scripts/retag_cvs.sh modules_runtime.sh R3_5 "06/05/2009 00:00" R3_5_maintenance >tag35_pass1.sh |
| grep ^cvs tag35_pass1.sh >tag35_fix1.sh |
| #examine tag35_fix1.sh and then run |
| /bin/bash -x tag35_fix1.sh |
| |
| # Then fix the other tags. TAG1 is a known tag (like from above :-) |
| ../../scripts/subtag_cvs.sh modules_runtime.sh R3_5 R3_5_1 >subtag35_pass1.sh |
| grep ^cvs subtag35_pass1.sh >subtag35_fix1.sh |
| #examine subtag35_fix1.sh and then run |
| /bin/bash -x subtag35_fix1.sh |
| |
| ../../scripts/subtag_cvs.sh modules_runtime.sh R3_5_1 R3_5_2 >subtag35_pass2.sh |
| grep ^cvs subtag35_pass2.sh >subtag35_fix2.sh |
| #examine subtag35_fix2.sh and then run |
| /bin/bash -x subtag35_fix2.sh |
| |
| # R3_4 |
| ../../scripts/retag_cvs.sh modules_runtime.sh R3_4 "06/11/2008 00:00" R3_4_maintenance >tag34_pass1.sh |
| grep ^cvs tag34_pass1.sh >tag34_fix1.sh |
| #examine tag34_fix1.sh and then run |
| /bin/bash -x tag34_fix1.sh |
| |
| # Then fix the other tags. TAG1 is a known tag (like from above :-) |
| ../../scripts/subtag_cvs.sh modules_runtime.sh R3_4 R3_4_1 >subtag34_pass1.sh |
| grep ^cvs subtag34_pass1.sh >subtag34_fix1.sh |
| #examine subtag34_fix1.sh and then run |
| /bin/bash -x subtag34_fix1.sh |
| |
| ../../scripts/subtag_cvs.sh modules_runtime.sh R3_4_1 R3_4_2 >subtag34_pass2.sh |
| grep ^cvs subtag34_pass2.sh >subtag34_fix2.sh |
| #examine subtag34_fix2.sh and then run |
| /bin/bash -x subtag34_fix2.sh |
| |
| # R3_7 |
| ../../scripts/retag_cvs.sh modules_runtime.sh R3_7 "06/24/2011 00:00" R3_7_maintenance >tag37_pass1.sh |
| grep ^cvs tag37_pass1.sh >tag37_fix1.sh |
| #examine tag37_fix1.sh and then run |
| /bin/bash -x tag37_fix1.sh |
| |
| # let's get started |
| MODULE_NAME=eclipse.platform.runtime |
| |
| cd $ROOT |
| CVS_LOC=$ROOT/cvsroot.$MODULE_NAME |
| mkdir -p $CVS_LOC/eclipse.platform.runtime/bundles |
| cd $CVS_LOC |
| cvs -d :local:$(pwd) init |
| |
| MIGR_PASS=$MIGR/$MODULE_NAME/pass3 |
| |
| cd /cvsroot/eclipse |
| . $MIGR_PASS/modules_runtime.sh |
| for M in $MODULES; do |
| echo $M |
| cp -r $M $CVS_LOC/eclipse.platform.runtime/bundles |
| done |
| |
| |
| |
| # 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 - updated for eclipse.platform.runtime |
| # 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/$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 |
| #Cherrypick tag: R3_0_1 commit: 97501471bd7c6703f61c0f0ac8a7d9d6cbce26a7 |
| #Cherrypick tag: R3_0_2 commit: 12ec8ee0788365599a1a4ad48cbf0afd7c377b23 |
| #Cherrypick tag: R3_1_1 commit: 202d867ac7ed58a4fea01bdc7835be94c8ac9a34 |
| #Cherrypick tag: R3_1_2 commit: d7dfd6ff907e77ca9f310b3f27e5402fba8214dd |
| #Cherrypick tag: R3_2_1 commit: cdbda0401288a0255427acd5ef5c0c4c9b91a49c |
| #Cherrypick tag: R3_2_2 commit: ad5844f5da7b5d688eb799d90eda450a952892e4 |
| #Cherrypick tag: R3_3_1 commit: 7e0126e6acc3aef7229414450c973b4a2e30dc3f |
| #Cherrypick tag: R3_3_1_1 commit: 7e0126e6acc3aef7229414450c973b4a2e30dc3f |
| #Cherrypick tag: R3_3_2 commit: 7e0126e6acc3aef7229414450c973b4a2e30dc3f |
| #Cherrypick tag: R3_5 commit: 0fcdd52072d2283d9ebb39a03630caefb65614dd |
| |
| |
| git branch >$MIGR_PASS/branches.txt |
| git tag >$MIGR_PASS/tags.txt |
| |
| # now we're ready to start stiching repos together :-) |
| |
| ################################################## |
| # merging eclipse.platform.runtime.e4 into eclipse.platform.runtime |
| |
| MODULE_NAME=eclipse.platform.runtime |
| MIGR_PASS=$MIGR/$MODULE_NAME/pass3 |
| MIGR_E4_PASS=$MIGR/eclipse.platform.runtime.e4/pass3 |
| |
| cd $ROOT |
| comm -12 $MIGR_PASS/tags.txt $MIGR_E4_PASS/tags.txt >$MIGR_PASS/common_tags.txt |
| comm -12 $MIGR_PASS/branches.txt $MIGR_E4_PASS/branches.txt >$MIGR_PASS/common_branches.txt |
| |
| # no common branches or tags ... good |
| |
| cd target.$MODULE_NAME |
| git config user.email pwebster |
| git config user.name "Paul Webster" |
| |
| git remote add e4 ../target.eclipse.platform.runtime.e4 |
| git fetch e4 |
| git merge e4/master |
| |
| rm -f $MIGR_PASS/localize_e4_branches.sh |
| |
| git branch -r | grep -v e4\/master >$MIGR_PASS/remote_e4_branches.txt |
| for f in $( cat $MIGR_PASS/remote_e4_branches.txt ); do |
| BR=$( echo $f | sed 's/^.*\///g' ) |
| echo git branch -t $BR $f >>$MIGR_PASS/localize_e4_branches.sh |
| done |
| |
| /bin/bash $MIGR_PASS/localize_e4_branches.sh |
| git remote rm e4 |
| |
| |
| 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 |
| rm -f t1.txt |
| git checkout master |
| |
| 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 |
| |
| |
| scp -r * pwebster@git.eclipse.org:/gitroot/platform/${MODULE_NAME}.git |
| # |
| # DONE, eclipse.platform.runtime |
| # |