从Git部署代码到生产服务器

7
我过去一周一直在阅读有关Git的资料,试图弄清楚如何将其融入我们公司。有很多信息可以参考,除了其他资源,我发现Pro Git book非常有用。然而,仍有一个谜团困扰着我(书中也没有提到),就是如何将Git存储库“链接”到我们的生产服务器上。
我们目前的设置包括一个SVN服务器,我们都提交到它(我发现这可以通过在共享位置设置一个裸Git存储库并推送到其中来实现)。我们的生产服务器(有多个客户运行相同的PHP代码库)目前是SVN工作副本,我们手动逐个运行svn up来更新。
什么是在Git中处理这个问题的最佳方法? 我考虑将生产服务器添加为我的Git存储库的远程,并向它们推送{{link1:和推送到它们相同}},但我认为如果不同服务器获得不同的推送历史记录,这可能会导致混淆(这将是需要集中化的情况之一,我想)。 或者您需要使用像{{link2:https://github.com/mislav/git-deploy}}这样的工具吗?
我无法帮助自己感觉Git开发人员'没有真正考虑过这个'..我希望我错过了什么 :)

嘿,我有一个快速问题。我只是想确认一下。我不确定那是否正确,但在你的生产服务器上拥有一个git仓库来推送你的文件完全没问题,对吧?我的意思是这个问题已经含蓄地回答了,但我想实际听到一个肯定的答案哈哈。非常感谢。 - Andy
1个回答

6
您可以使用git实现相同的工作流程。设置一个裸仓库,所有人都将代码推送到该仓库,并在生产服务器上克隆该仓库。当发生某些事情并且您想要更新生产仓库时,只需执行“git pull”而不是“svn up”。
这是开始进行工作的好方法。一段时间后,您可能希望自动化此过程,并可以使用例如git钩子等多种有趣的功能。

这可能对您也很有趣:面向Web的Git工作流程 - hakre
@hakre 确实是一个有趣的钩子脚本演示(尽管我不会选择这种工作流程,因为我们从不直接在生产服务器上修改代码)。 - Rijk
我有一个相关的问题。假设您使用像“BeanStalkApp”或“SpringLoops.com”这样的部署工具。您将代码提交到Git,然后使用Beanstalkapp或Springloops将代码通过ftp/sftp上传到部署服务器。但是如果您也有数据库更改怎么办?如何确保在部署服务器上也进行了数据库更改?Git pull或BeanstalkApp/Springloops将仅发送您的新php文件。但是如果您还需要对数据库进行更改,您如何在自动部署中容纳它们?比如添加/删除表格、添加/删除列。 @hakre - Red Char
对您的数据库进行版本修订。使用迁移脚本进行迁移。单向(仅上行版本)或双向(上行和下行版本)。一个php脚本检查DB版本并负责处理。http://dbdeploy.com/ -- 你是如何对数据库架构进行版本控制的? - hakre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接