blob: 99a574d812f9d657f5123dac0df5a59107b2043b [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This script is used to migrate modules from SVN to Git,
# or more precisely to split a svn2git repo to a module repo
#!/bin/sh -e
# svn2git repo to be split
svn2git_repo='maven-doxia-tools'
git_src_location="svn2git/${svn2git_repo}"
if [ ! -d ${git_src_location} ]; then
# clone svn2git repo
echo "Cloning source git-svn ${svn2git_repo} ..."
git clone https://github.com/apache/${svn2git_repo}.git ${git_src_location}
# ensure we don't accidentally overwrite the source repository
chmod ugo-w ${git_src_location}
echo "Done!"
fi
mkdir doxia-tools
for d in ${git_src_location}/doxia-*; do
prefix=`filename $d`
repo_name="maven-${prefix}"
artifactId="${prefix}"
echo "Filtering ${prefix} to ${repo_name}..."
if [ ! -d ${repo_name}/.git ]; then
# create the initial repo
git clone --no-hardlinks ${git_src_location} doxia-tools/${repo_name}
pushd doxia-tools/${repo_name}
# make sure we don't push to the incorrect repo and also remove make sure
# we don't keep references to the remote repo
git remote rm origin
# rename trunk to master
git branch -m trunk master
# Remove everything except the path belonging to the module
git filter-branch --subdirectory-filter ${prefix}/
# remove unrelated tags
for tag in $(git tag); do
if [[ $tag != ${artifactId}* ]]; then
git tag -d ${tag} > /dev/null
fi
done
# cleanup and compaction
git for-each-ref --format="%(refname)" refs/original/ | xargs -n1 git update-ref -d
git reflog expire --expire=now --all
git repack -Ad
git gc --aggressive --prune=now
git remote add origin https://gitbox.apache.org/repos/asf/${repo_name}.git
popd
echo "Complete!"
else
echo "Already converted"
fi
done
echo "Launch 'git push --set-upstream origin master' once ready"