I have the following problem. I need to organize automatic upload to deploy server from svn repository, but with some feautures. There is how I wrote it:
# $1 - project; $2 - version (optional)
# rm -rf $projectDir
if [ "$2" == '' ]; then
svn export $trunk $projectDir --force >> $log
version=`svn info $trunk | grep Revision | awk '{print$2}'`
svn copy $trunk $tags/$version -m "created while uploading last version of $1"
echo "New stable version #$version of $1 is created
Uploading to last version is completed successfully"
else
version=$2
svn export $tags/$version/ $projectDir --force >> $log
echo "Revert to version #$version is completed successfully"
fi
echo $version > $projectDir/version
chown -R $1:$1 $projectDir
But svn export doesn't delete deleted via svn files, so I need to clean directory before export every time. It's not good. Before this, I work with checkout for deploy like this:
svn co $trunk >> $log
cp -ruf trunk/* $projectDir
svn info $trunk | grep Revision > $projectDir/version
chown -R $project:$project $projectDir
echo "uploading finished"
This work very well and very very faster (it changes only changed files) than the export, but:
- without automatic tag creating;
- without opportunity for nice reverting.
In my last script co doesn't work, because it trying to checkout in one directory from different repository directories (trunk/some tag), which isn't real.
So, question:
- Can I relocate project before checkout?
- Can I find the diff with co version and existing version before export?
- What can I do with diff result? (remove unneeded files after export?)
Thanks in advance.