The migration was tested by performing the migration commands below against markt-asf/tomcat rather than apache/tomcat.
The commands to perform the migration are as follows:
# Make svn read only
# Confirm all commits have replicated to git
# Turn off the svn / git mirror
# Switch to 'github as master'
# Clone the current trunk
git clone https://github.com/apache/tomcat.git tomcat
cd tomcat
# Only necessary for test repo
git remote set-url origin https://github.com/markt-asf/tomcat.git
# Clean up the 9.0.x tags
git tag -d `git tag -l JDBC* | grep -E '.'`
git tag -d `git tag -l TOMCAT_7* | grep -E '.'`
git tag -d `git tag -l TOMCAT_8* | grep -E '.'`
git tag -d `git tag -l TOMCAT_N* | grep -E '.'`
git tag -d TOMCAT_9_0_0_m27
git tag -d TONCAT_9_0_0_M23
git push origin :JDBC_POOL_1_0_1 :JDBC_POOL_1_0_2 :JDBC_POOL_1_0_3 :JDBC_POOL_1_0_4 :JDBC_POOL_1_0_5 :JDBC_POOL_1_0_6 :JDBC_POOL_1_0_7 :JDBC_POOL_1_0_8
git push origin :JDBC_POOL_1_0_8_4 :JDBC_POOL_1_0_8_5 :JDBC_POOL_1_0_9_0 :JDBC_POOL_1_0_9_1 :JDBC_POOL_1_0_9_2 :JDBC_POOL_1_0_9_3 :JDBC_POOL_1_1_0_0 :JDBC_POOL_1_1_0_1
git push origin :TOMCAT_7_0_42
git push origin :TOMCAT_8_0_0
# :TOMCAT_8_0_0_RC1 :TOMCAT_8_0_0_RC2 :TOMCAT_8_0_0_RC3 :TOMCAT_8_0_0_RC4 :TOMCAT_8_0_0_RC5 :TOMCAT_8_0_0_RC6 :TOMCAT_8_0_0_RC7 :TOMCAT_8_0_0_RC8 :TOMCAT_8_0_0_RC9 :TOMCAT_8_0_0_RC10
git push origin :TOMCAT_NATIVE_1_1_33 :TOMCAT_9_0_0_m27 :TONCAT_9_0_0_M23
# Add Tomcat 8.5x
git remote add tomcat85 https://github.com/apache/tomcat85.git
git fetch tomcat85
git fetch tomcat85 --tags
git tag -d `git tag -l TOMCAT_8_0* | grep -E '.'`
git checkout --orphan tomcat85
git rm -rf .
git merge tomcat85/trunk
git remote rm tomcat85
git push -u origin tomcat85
git push --tags
# Add Tomcat 8.0.x
git remote add tomcat80 https://github.com/apache/tomcat80.git
git fetch tomcat80
git fetch tomcat80 --tags
git tag -f TOMAT_8_0_30
git checkout --orphan tomcat80
git rm -rf .
git merge tomcat80/trunk
git remote rm tomcat80
git push -u origin tomcat80
git push --tags
# Add Tomcat 7.0.x
git remote add tomcat70 https://github.com/apache/tomcat70.git
git fetch tomcat70
git fetch tomcat70 --tags
git checkout --orphan tomcat70
git rm -rf .
git merge tomcat70/trunk
git remote rm tomcat70
git push -u origin tomcat70
git push --tags
Resolved Issues
Review board. Tomcat gas been removed from (technically hidden in) the ASF ReviewBoard instance
- Config diffs in migration guide. Use gitweb. e.g.:
https://gitbox.apache.org/repos/asf?p=camel.git;a=blobdiff;f=pom.xml;hb=camel-2.20.1;hpb=camel-2.19.0
- Branch names. master, tc8.5, tc8.0, tc7.0 etc
- PRs. Those against apache/tomcat will remain. Currently no other open PRs. Any opened between now and migration will be closed and asked to be made against apache/tomcat.
- Merge strategy. Commit to master then cherry-pick to branches for older versions as required.
- CI Systems. Leave them pointing at svn. Migrate to git. Once we are happy with the git repo update the CI systems to use it.
- Java source code for tomcat-native. Pull in the source code from a specific tag/hash as part fo the build process.
- Mail format. See recent tomcat-training emails on dev@ for examples. For further tweaks, infra have indicated patches to https://github.com/apache/infrastructure-puppet/blob/deployment/modules/gitbox/files/asfgit/git_multimail.py are welcome.
- Make old github repos read-only. Ensure information from PRs is available on dev@ list, in BZ or similar. Copy across anything missing. Then delete old repos.
- Developer process. git worktree
- Documentation update
- Update post migration and release ASAP
- Website update
- Update post migration
- Rename to source.html
- Edit svn.html to link to source.html