Skip to content

Instantly share code, notes, and snippets.

@sborsje
Created January 30, 2009 15:50
Show Gist options
  • Save sborsje/55112 to your computer and use it in GitHub Desktop.
Save sborsje/55112 to your computer and use it in GitHub Desktop.
#!/bin/bash
echo "Subversion to Git conversion tool"
echo "---------------------------------"
echo ""
echo "Enter subversion repository url:"
read REPO_URL
echo "$REPO_URL"
echo ""
echo "Enter output directory name:"
read OUTPUT_DIR
echo "$OUTPUT_DIR"
echo ""
echo "Define authors? [Y/n]"
read yesno
if [ -z $yesno ] || [ $yesno = "y" ] || [ $yesno = "Y" ]; then
echo "Define authors (John Doe <example@company.com>):"
rm tmp-authlist
for AUTHOR in `svn log $REPO_URL | grep "^r[0-9]\+ |" | gsed -e "s/^r[0-9]\+ | \([a-z]\+\).*/\1/g" | sort | uniq`; do
echo "$AUTHOR :"
read AUTHOR_FULL
echo "$AUTHOR = $AUTHOR_FULL" | tee -a tmp-authlist
done
AUTHORS="--authors-file=tmp-authlist"
else
AUTHORS=""
fi
echo "Keep metadata? [Y/n]"
read yesno
if [ -z $yesno ] || [ $yesno = "y" ] || [ $yesno = "Y" ]; then
META_DATA=""
else
META_DATA="--no-metadata"
fi
echo "Start conversion? [Y/n]"
read yesno
if [ -z $yesno ] || [ $yesno = "y" ] || [ $yesno = "Y" ]; then
echo "Converting repository:"
git svn clone $AUTHORS --stdlayout $META_DATA $REPO_URL $OUTPUT_DIR
fi
cd $OUTPUT_DIR
for branch in `git branch -r`; do
echo $branch
if [ `echo $branch | egrep "tags/.+$"` ]; then
version=`basename $branch`
subject=`git log -1 --pretty=format:"%s" $branch`
export GIT_COMMITTER_DATE=`git log -1 --pretty=format:"%ci" $branch`
echo "Tag $version [Y/n]?"
read yesno
if [ -z $yesno ] || [ $yesno = "y" ] || [ $yesno = "Y" ]; then
git tag -f -m "$subject" "$version" "$branch^"
git branch -d -r $branch
fi
fi
done
git config --remove-section svn-remote.svn
rm -r .git/svn
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment