我是SVN的新手,并且已经在我的Dreamhost测试服务器(具有Subversion“一键安装”功能)上进行了本地试验。
我已经找到了我想要的功能,但在使用它来管理我的工作网站(不是由Dreamhost托管的,所以不提供一键式SVN安装)方面有点迷茫。
我认为我可以在我的网站根目录(包含所有文件)上建立一个存储库,然后当我开发新功能并运行提交时,这将更新我的网站,这是正确的吗?这是处理这类事情的正确工作流程吗?
如果是这样,有没有一种标准的方法可以在我的远程服务器上设置这种东西?
谢谢。
发布于 2010-06-03 08:59:54
要自动更新网站根目录,请查看使用post-commit hook。
提交后挂钩在变更集成功提交到SVN存储库之后运行。因此,您也许可以让post-commit挂钩在网站根目录上触发SVN更新。
发布于 2010-06-03 00:29:40
如果我没理解错的话,您正在尝试使用subversion作为本地开发环境和生产环境之间的中介。您希望在单独的位置开发您的网站,提交更改,然后将这些更改传播到您的生产网站。如果不正确,请回复。
这样的事情当然是可行的。为了使术语正确,在subversion中,您有一个位于subversion服务器上的“存储库”。您永远不会接触存储库本身,除非使用svn客户端间接执行操作。您可以“签出”存储库(或其子集)的多个“工作副本”,以访问源文件本身。为了达到您的要求,您需要在您的开发机器上创建一个工作副本,并在那里进行更改。满意后,您将它们“提交”到您的存储库。在您的生产位置上,您必须创建同一存储库位置的另一个工作副本。您需要在此工作副本中显式运行"svn update“,以便对其应用最新的更改。更改不会在提交时自动传播到所有工作副本。
如果您还没有,您应该花点时间通读一下subversion book。对于subversion和一般的源代码控制原则来说,这是一个非常有价值的资源。
发布于 2010-06-04 02:43:25
前面的两个答案都是很好的信息。但我认为有几个问题值得一提。如果你采用后提交钩子的想法,我建议让脚本变得足够智能,以便只在你明确希望的时候进行部署。让脚本在每次提交时进行部署将是非常严格的,并且会迫使您放弃使用源代码控制的许多优点。
一种想法是在注释中使用关键字触发器,脚本可以使用它来触发部署到生产环境。另一种方法是仅当脚本确定提交到新的标记文件夹时才进行部署。
将生产系统设置为本地工作副本并使用SVN更新不会存在部署可能未准备好部署到生产中的提交的问题,但会受到无法自动执行的问题。要解决这个问题,您可以创建一个在生产系统上定期运行的脚本,该脚本检查存储库的方式与持续集成系统(如Crusie或Team City )非常相似,并定期检查存储库是否有新的提交,然后执行更新。
无论是哪种情况,我都建议您构建足够智能的脚本,以便仅从新的标记文件夹进行部署。这样,您就可以使用源代码管理来实现它所带来的所有优势,并且只有在创建新的标记文件夹时才能进行部署。
https://stackoverflow.com/questions/2956839
复制相似问题