私は以下の問題があります。私はsvnリポジトリからサーバーを展開する自動アップロードを整理する必要がありますが、いくつかの手段があります。 私はそれを書いた方法があります:シェル経由で展開する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ファイルを経由して削除削除されませんので、私は、輸出前に毎回ディレクトリをきれいにする必要があります。それは良くない。この前 は、私はこのようにデプロイするためのチェックアウトと連携:
svn co $trunk >> $log
cp -ruf trunk/* $projectDir
svn info $trunk | grep Revision > $projectDir/version
chown -R $project:$project $projectDir
echo "uploading finished"
非常によく、非常に非常に速く、輸出よりも(それが変更されたファイルのみを変更)が、この作品:
- 自動タグなし作成;
- 良い復帰の機会はありません。
実際のものではない別のリポジトリディレクトリ(トランク/いくつかのタグ)から1つのディレクトリをチェックアウトしようとしているので、私の最後のスクリプトでは動作しません。
だから、質問:
- 私がチェックアウトする前に、プロジェクトを再配置することはできますか?
- エクスポートする前にco版と既存版の差分を見つけることはできますか?
- diff結果で何ができますか? (エクスポート後に不要なファイルを削除しますか?)
感謝を事前に。
シェルはプロジェクトサーバーにありますが、svnサーバーは外部にあります。 – extempl