Last active
January 3, 2016 07:09
-
-
Save winniehell/8427601 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BASE_DIR=$PWD | |
echo "create SVN repositories" | |
for i in {1..2}; do | |
svnadmin create $BASE_DIR/svn-repo$i | |
svn checkout file://$BASE_DIR/svn-repo$i $BASE_DIR/svn-client$i | |
mkdir $BASE_DIR/svn-client$i/{trunk,branches,tags} | |
echo "file $i" > $BASE_DIR/svn-client$i/trunk/file$i.txt | |
cd $BASE_DIR/svn-client$i/ | |
svn add {trunk,branches,tags} | |
svn commit -m "file $i" | |
done | |
echo | |
echo "create Git mirrors" | |
git svn clone --stdlayout --prefix=repo1/ --no-metadata file://$BASE_DIR/svn-repo1 $BASE_DIR/git-mirror1 | |
git svn clone --stdlayout --prefix=repo2/ file://$BASE_DIR/svn-repo2 $BASE_DIR/git-mirror2 | |
echo | |
echo "create Git server repository" | |
git init $BASE_DIR/git-server | |
cd $BASE_DIR/git-server | |
echo | |
echo "mirror integration" | |
for i in {1..2}; do | |
git remote add svn-repo$i file://$BASE_DIR/git-mirror$i | |
git fetch svn-repo$i | |
done | |
git checkout -b master svn-repo2/master | |
git merge --no-ff -m "integrate repo1" svn-repo1/master | |
echo | |
echo "additional commits" | |
cd $BASE_DIR/svn-client1 | |
svn mv $BASE_DIR/svn-client1/trunk/file1.txt $BASE_DIR/svn-client1/trunk/file2.txt | |
svn commit -m "rename file1 to file2" | |
cd $BASE_DIR/svn-client2 | |
echo "line 2" >> $BASE_DIR/svn-client2/trunk/file2.txt | |
svn commit -m "add content to file2" | |
echo | |
echo "updating mirrors" | |
cd $BASE_DIR/git-mirror1 | |
git svn fetch --revision 2 | |
git rebase repo1/trunk | |
cd $BASE_DIR/git-mirror2 | |
git svn rebase | |
echo | |
echo "reintegrating mirror of repo1 into server" | |
cd $BASE_DIR/git-server | |
git fetch svn-repo1 | |
git merge --no-ff -m "integrate repo1" svn-repo1/master | |
echo | |
echo "resolving conflict" | |
cat $BASE_DIR/git-server/file2.txt $BASE_DIR/git-server/file2.txt~HEAD > $BASE_DIR/git-server/file2.txt.tmp | |
rm $BASE_DIR/git-server/file2.txt $BASE_DIR/git-server/file2.txt~HEAD | |
mv $BASE_DIR/git-server/file2.txt.tmp $BASE_DIR/git-server/file2.txt | |
git add $BASE_DIR/git-server/file2.txt | |
git commit -m "integrate repo1" | |
echo | |
echo "reintegrating mirror of repo2 into server" | |
cd $BASE_DIR/git-server | |
git fetch svn-repo2 | |
git rebase --preserve-merges --merge --strategy=theirs svn-repo2/master | |
echo | |
echo "backward integration" | |
cd $BASE_DIR/git-mirror2 | |
#git svn branch integrated | |
#git checkout -b svn-integrated repo2/integrated | |
git remote add git-server file://$BASE_DIR/git-server | |
git fetch git-server | |
#git merge --no-ff -m "integrate Git server" git-server/master | |
git rebase git-server/master | |
git filter-branch --parent-filter 'cut -f 2,3 -d " "' | |
git svn dcommit | |
echo | |
echo "check" | |
cd $BASE_DIR/git-mirror2 | |
git lg | |
cd $BASE_DIR/svn-client2 | |
svn up | |
svn log | |
cat trunk/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment