У меня следующая проблема. Мне нужно организовать автоматическую загрузку для развертывания сервера из репозитория SVN, но с некоторыми особенностями.
Вот как я это написал:
# $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
Но экспорт svn не удаляет удаленные через файлы svn, поэтому мне нужно каждый раз очищать каталог перед экспортом. Это не хорошо.
До этого я работаю с checkout для развертывания следующим образом:
svn co $trunk >> $log
cp -ruf trunk/* $projectDir
svn info $trunk | grep Revision > $projectDir/version
chown -R $project:$project $projectDir
echo "uploading finished"
Это работает очень хорошо и очень-очень быстро (изменяет только измененные файлы), чем экспорт, но:
- без автоматического создания тега;
- без возможности хорошего возврата.
В моем последнем скрипте co не работает, потому что он пытается извлечь из одного каталога из разных каталогов репозитория (trunk / some tag), что не реально.
Итак, вопрос:
- Можно ли переместить проект перед оформлением заказа?
- Можно ли найти diff с версией co и существующей версией до экспорта?
- Что я могу сделать с результатами сравнения? (удалить ненужные файлы после экспорта?)
Заранее спасибо.