다음과 같은 문제점이 있습니다. 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"
아주 잘하고 아주 아주 빨리 수출보다는 (이 변경된 파일 만 변경)하지만,이 작품 :
- 자동 태그없이 창조;
- 멋진 되돌릴 기회가 없습니다.
현실이 아닌 다른 저장소 디렉토리 (트렁크/일부 태그)에서 하나의 디렉토리를 체크 아웃하려고했기 때문에 나의 마지막 스크립트에서는 작동하지 않습니다.
그래서, 질문 :
- 나는 체크 아웃하기 전에 프로젝트를 재배치 할 수 있습니까?
- 내보 내기 전에 diff가 co 버전과 기존 버전을 찾을 수 있습니까?
- diff 결과로 수행 할 수있는 작업은 무엇입니까? (내보내기 후에 불필요한 파일을 제거 하시겠습니까?)
감사합니다.
쉘은 프로젝트 서버에 있지만 svn 서버는 외부에 있습니다. – extempl