SVN Post Commit钩子部署网站
我已经阅读了一段时间,得到了一些答案,但我只是需要更多的帮助 当某个更改集提交到某个分支时,我试图自动部署一个网站,因此我从不同的分支发布了不同的版本。例如,有一个实时分支,每当更新时,新的更改集都会合并到当前的实时网站中 我的存储库(在Subversion版本控制系统上)与live server位于同一台服务器上,因此我需要做的就是将文件传输到不同的目录SVN Post Commit钩子部署网站,svn,bash,version-control,svn-hooks,Svn,Bash,Version Control,Svn Hooks,我已经阅读了一段时间,得到了一些答案,但我只是需要更多的帮助 当某个更改集提交到某个分支时,我试图自动部署一个网站,因此我从不同的分支发布了不同的版本。例如,有一个实时分支,每当更新时,新的更改集都会合并到当前的实时网站中 我的存储库(在Subversion版本控制系统上)与live server位于同一台服务器上,因此我需要做的就是将文件传输到不同的目录 我知道我需要编辑repo/hooks/post-commit文件,并且我已经完成了这项工作,但是我不确定该文件的内容是否能满足我的需要。不要
我知道我需要编辑repo/hooks/post-commit文件,并且我已经完成了这项工作,但是我不确定该文件的内容是否能满足我的需要。不要将hooks用于部署目的。使用构建工具(Ant、Maven等)和持续集成工具(CruiseControl、CruiseControl.rb、Hudson等)。由于以下几个原因,使用挂钩是错误的:
<?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>
我建议花一些时间学习构建管理(Ant)和持续集成(CruiseControl)的基础知识,以最合适的方式执行部署。尽管这似乎不是您所要求的,而且有点复杂,但这是一件正确的事情。太棒了,谢谢您的建议!我将仔细阅读你建议的流程。谢谢。
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