我应该将我的存储库作为我的网站的DocumentRoot吗?

时间:2012-02-22 23:32:43

标签: mercurial workflow

我在我的服务器上设置了mercurial,但我不清楚应该如何。我正在寻找更多不同设置的例子,但也许我使用了错误的关键字。现在,它只是少数开发人员,我不确定我是否应该将repo作为DocumentRoot。我真的不知道要问什么问题,因为这对我来说是新的,但如果有人能提供一些知识和指导,我将不胜感激。我现在遇到的一些问题是,我应该如何设置我的服务器和存储库?在进行测试克隆之前,我应该为测试克隆设置单独的VirtualHost吗?什么都有帮助!提前谢谢!

3 个答案:

答案 0 :(得分:2)

可能没有理由这样做。我会将它们分开,但设置一个自动化过程(自定义脚本或continuous integration(CI)),通过运行单个命令从Mercurial部署到站点。 (可选)您可以使每个提交触发器进行部署。

编辑:通过持续集成,CI的服务器负责部署。如果您使用SSH,CI将从hg中导出,导出,然后通过SSH上传。这应该解决你的问题。有关支持Mercurial的CI服务器的比较,请参阅this question

答案 1 :(得分:2)

我没有 答案给你,因为许多变量和需求会影响工作流程,但这里有一些链接可以帮助你入门:

  1. http://www.zdnetasia.com/a-development-workflow-for-mercurial-62204755.htm
  2. https://www.mercurial-scm.org/wiki/Workflows
  3. http://www.webdevelopment.nicholastuck.com/tools/one-project-one-repository-mercurial-used-right/
  4. 我还建议您阅读这篇优秀的Mercurial简介:http://hginit.com/

    您还可以在Mercurial上找到有关工作流程的各种问题,例如,请查看右边的边栏。

    如果您有更具体的问题,请不要犹豫再次询问!

答案 2 :(得分:1)

我会让你的DocumentRoot目录成为你的存储库的第一级子目录,这里有一些原因:

  1. 如果您正在使用像Apache这样的东西来管理您的服务器,您可以将其他元信息(如站点可用和站点启用的配置文件)放在同级目录中,因为它们实际上并不属于网站文件。
  2. 同样,您可以在代码旁边保留“docs”目录。
  3. 如果您的存储库根目录是您的DocumentRoot,所有其他条件相同,那么您也可以提供整个存储库历史记录所在的.hg目录,以及您的.hgignore文件。当然,您可以使用.htaccess文件解决此问题,但只需拥有子文件夹即可。
  4. 基本上,代码库往往不是与已部署站点完全一对一的匹配,因此我倾向于将文档根目录为子目录。

    部署是一个整体'其他蠕虫。这真的取决于你对你做什么的需求,但这就是我的所作所为:

    我在我的计算机上运行VirtualBox实例,该实例看起来尽可能接近到我部署的服务器的样子,至少尽可能接近配置文件。我认为这种方法比其他VirtualHost条目更不容易出错。根据项目的不同,我可以将其归结为相同而不是某些DNS条目,因此我可以设置所有内容,以指向testing.myproject或production.myproject,并且我始终自动化(我使用chef,但这对于一个较小的项目来说是过度的,因此它是可测试的代码,并且不容易出现手指笨拙。没有什么比运行擦除数据库的冒烟测试更糟糕了 - 并且让配置意外地指向您的prod数据库。运行虚拟机可以轻松地测试服务器环境或操作系统的升级,如果要进入机器配置的早期状态,可以进行核对并恢复到快照。

    如果你真的想阻止SSH开发人员访问你的prod机器 - 和IMO,这是一个坏主意,因为如果你的生产服务器上有问题,你阻止你的开发人员诊断或修复它< / em> - 那么我认为最好的办法是使用类似hudson的东西,这是一个持续的集成框架。您只能为Hudson用户提供ssh访问权限来运行您的部署脚本,但是任何人(具有在Hudson中设置的权限)都可以运行该作业。事实上,这在你拥有的环境中很方便。一些产品管理成员,你希望能够更新生产服务器而无法登录。“穷人”的版本是使用sudo允许你的开发人员以做<的其他用户运行命令/ em>拥有ssh访问权限 - and only allowing them to run the publish script.

    我仍然建议您让开发人员访问您的机器,但您不必将钥匙交给王国。只需创建一个“开发人员”组,将您的开发人员分配给它,并为其提供足够的权限来使用服务器的必要目录,您应该很高兴。