Skip to content

Instantly share code, notes, and snippets.

@mrdaemon
Created February 23, 2012 22:20
Show Gist options
  • Save mrdaemon/1895362 to your computer and use it in GitHub Desktop.
Save mrdaemon/1895362 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
PROJECTS=$(pwd)/_VisualStudio2005/Projects
WEBROOTS=$(pwd)/_VisualStudio2005/WebSites
function die {
echo $1 ; exit 1
}
[[ -z $1 ]] && die "usage: import.sh [svn url]"
REPOS=$1
for d in $PROJECTS/* ; do
project=$(basename $d)
echo "Processing $project:"
echo -n " * Creating directory structure ... "
wspace=work/$project
mkdir -p $wspace/{trunk,branches,tags} \
|| die "Unable to create directory structure."
echo "Done."
echo -n " * Copying files to 'trunk'... "
cp -R $d/* $wspace/trunk || die "Failed to copy files to ${wspace}."
echo "Done."
pushd $wspace/trunk 2>&1 > /dev/null || die "Failed to enter working tree."
if [[ -d $project ]] ; then
echo -n "Full project. Stripping binaries and option files..."
rm -f *.suo
rm -r $project/bin $project/obj
echo "Done."
else
echo "Solution only! Fixing hierarchy wherever possible:"
echo -n " - Checking project for webroot ... "
if grep '..\\..\\WebSites\\' ${project}.sln > /dev/null 2>&1 ; then
echo "Found!"
if [[ -d $WEBROOTS/$project ]] ; then
echo -n " - Copying webroot files to $wspace/trunk/web"
cp -R $WEBROOTS/$project web/ \
|| die "Unable to copy webroot!"
echo "Done."
echo -n " - Editing solution file(s) ... "
sed -i .bak \
-e 's/..\\..\\WebSites\\\(.*\)\\/web\\/g' $project.sln
echo "Done."
echo " (backup exists in case of horrors)"
else
die "No directory at $WEBROOTS/$project"
fi
else
echo -n -e "\n"
echo "Project hasn't got a webroot somehow. Please verify."
echo "Importing project as is (without known binaries)"
rm -f *.suo
rm -r bin obj
fi
fi
popd > /dev/null
echo " * Importing workspace tree into subversion"
pushd $wspace > /dev/null
svn import -m "Initial import of $project" $REPOS/$project
SVNS=$?
popd > /dev/null
[[ $SVNS -eq 0 ]] || die "Failed to import! Review output."
echo "Done."
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment