我已经阅读了一段时间并得到了一些答案,但我还需要更多的帮助。
我正在尝试在提交某个变更集到分支时自动部署网站,因此我从不同的分支发布不同版本。例如,有一个实时分支,每当更新时,新的变更集就会合并到当前实时网站中。
我的存储库(使用Subversion版本控制系统)与实时服务器位于同一台服务器上,因此我只需要将文件传输到不同的目录即可。
我知道我需要编辑repo/hooks/post-commit文件,并且我已经做到了这一点,但是我不确定如何编写该文件以完成我需要完成的任务。
我已经阅读了一段时间并得到了一些答案,但我还需要更多的帮助。
我正在尝试在提交某个变更集到分支时自动部署网站,因此我从不同的分支发布不同版本。例如,有一个实时分支,每当更新时,新的变更集就会合并到当前实时网站中。
我的存储库(使用Subversion版本控制系统)与实时服务器位于同一台服务器上,因此我只需要将文件传输到不同的目录即可。
我知道我需要编辑repo/hooks/post-commit文件,并且我已经做到了这一点,但是我不确定如何编写该文件以完成我需要完成的任务。
<?xml version="1.0"?>
<project name="myproject" default="deploy-local">
<property file="build.properties"/>
<target name="deploy-local">
<echo message="Deploying version ${version}" />
<delete dir="${deploy.path.local}" />
<copy todir="${deploy.path.local}">
<fileset dir="." includes="**/*" >
<exclude name=".svn/**" />
<exclude name="build.*" />
</fileset>
</copy>
</target>
<target name="deploy-remote">
<echo message="Deploying project" />
<ftp action="del"
server="${deploy.remote.server}"
userid="${deploy.remote.login}"
password="${deploy.remote.pass}">
<fileset>
<include name="${deploy.path.remote}"/>
</fileset>
</ftp>
<ftp action="mkdir"
server="${deploy.remote.server}"
userid="${deploy.remote.login}"
password="${deploy.remote.pass}"
remotedir="${deploy.path.remote}">
</ftp>
<ftp server="${deploy.remote.server}"
userid="${deploy.remote.login}"
password="${deploy.remote.pass}"
remotedir="${deploy.path.remote}"
passive="yes">
<fileset dir="." includes="**/*" >
<exclude name=".svn/**" />
<exclude name="build.*" />
</fileset>
</ftp>
</target>
</project>
build.properties
文件内容如下:
deploy.path.local = C:\\apache\\htdocs\\myproject
deploy.path.remote = /http/deploy
deploy.remote.server = ftp.myproject.com
deploy.remote.login = mylogin
deploy.remote.pass = mypass
我建议花些时间学习构建管理的基础知识(Ant)和持续集成(CruiseControl),以最合适的方式进行部署。虽然这似乎不是你所要求的,而且有点复杂,但这是正确的做法。