我有以下問題。我需要組織自動上傳從svn倉庫部署服務器,但有一些特點。 還有就是我怎麼寫的:通過shell部署svn checkout
# $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"
這項工作非常好,非常非常快(它改變了只更改的文件),比出口,但:
- 沒有自動標籤創建;
- 沒有好機會恢復的機會。
在我最後一個腳本co不起作用,因爲它試圖從不同的存儲庫目錄(trunk/some tag)中檢出一個目錄,這是不真實的。
所以,問題:
- 我可以結帳前搬遷項目?
- 我可以在導出之前找到與版本和現有版本的差異嗎?
- 如何使用差異結果? (刪除導出後不需要的文件?)
在此先感謝。
Shell放置在項目服務器中,但svn服務器是外部的。 – extempl 2012-01-10 07:10:17