Skip to content

Commit

Permalink
Added gitsvn.sh script to build a mirror of the subversion repository…
Browse files Browse the repository at this point in the history
… on github.

git-svn-id: https://svn.eiffel.com/eiffelstudio/trunk@96066 8089f293-4706-0410-a29e-feb5c42a2edf
  • Loading branch information
manuseiffel committed Nov 7, 2014
1 parent be78bc9 commit 96c6ddd
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions gitsvn.sh
@@ -0,0 +1,64 @@
#!/bin/bash

set -x

PROJECT_ROOT=/home/svn/EiffelStudio.git
SVN_REPO=https://svn.eiffel.com/eiffelstudio/trunk
GIT_REPO=git@github.com:EiffelSoftware/EiffelStudio.git
SVN_LAYOUT="--trunk=."

SVN_CLONE="${PROJECT_ROOT}/svn-clone"
GIT_BARE="${PROJECT_ROOT}/git-bare-tmp"

if [ ! -d "${PROJECT_ROOT}" ]; then
echo Directory "${PROJECT_ROOT}" does not exist.
exit 1
else
cd "${PROJECT_ROOT}"

if [ ! -d "${SVN_CLONE}" ]; then
git svn clone "${SVN_REPO}" "${SVN_LAYOUT}" "${SVN_CLONE}"
cd "${SVN_CLONE}"
else
cd "${SVN_CLONE}"
git remote rm bare || echo "failed to delete remote:bare, proceeding anyway"
# We perform a checkout because with some svn files without a
# svn:eol-style native property, gits get confused and will mark them
# as modified even if we just did a rebase before.
git checkout .
git svn rebase --fetch-all
fi

git remote add bare "${GIT_BARE}"
git config remote.bare.push 'refs/remotes/*:refs/heads/*'

if [ -d "${GIT_BARE}" ]; then
rm -rf "${GIT_BARE}"
fi

mkdir -p "${GIT_BARE}"
cd "${GIT_BARE}"
git init --bare .
git symbolic-ref HEAD refs/heads/trunk

cd "${SVN_CLONE}"
git push bare

cd "${GIT_BARE}"
git branch -m trunk master
# To uncomment if we have some tags/branches
# git for-each-ref --format='%(refname)' refs/heads/tags | \
# cut -d / -f 4 | \
# while read ref;
# do
# git tag "$ref" "refs/heads/tags/$ref"
# git branch -D "tags/$ref"
# done
git remote add origin "${GIT_REPO}"
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git push --tags origin master
git push --all

rm -rf "${GIT_BARE}"
fi

0 comments on commit 96c6ddd

Please sign in to comment.