Git仓库到暂存站点到生产站点

5
我正在学习git及其基本原理。我有一个正在运行的Magento网店,需要尽快进行版本控制。我在工作机器上加载了git,并尝试建立存储库、添加、提交和推送文件。我使用Assembla和免费帐户(目前)测试了我的设置,一切顺利。
然而,在进行物理更改方面仍然存在问题。我想实现以下目标(我想是这样的!):
1. 从现场站点中检出所需文件以在本地机器上使用 2. 在Dreamweaver中进行本地更改(我正在使用GITweaver,并且可以轻松地与我的repo通信)(如果有更好的解决方案,我也不排斥更改文本编辑器/IDE) 3. 将repo推到“staging”站点进行审核和测试与我的合作伙伴。这就是我目前迷失的地方。将repo发送到现场站点的过程是什么? 4. 审核通过并接受更改后,将repo推送到“live”站点。
因此,这里有几个重要的问题需要帮助:
- 您是从现场站点还是阶段站点检出文件?是否有任何首选方法? - 阶段站点是否应始终镜像现场站点? - “dev”站点和“stage”站点的目的是什么-它们不是相同的吗? - 大多数人在设置中做些什么以及原因?我需要一个关于阶段和dev的解释。
有关我们商店/项目的一些有用背景信息:
- 我是唯一的开发人员,未来可能仍然是唯一的开发人员 - 我正在使用Windows机器进行开发,我们的托管是通过HostGator进行的 - 我的合作伙伴只需要看到阶段站点,以便我们一起查看更改,他无需查看存储库。
如果有人能为像我这样的人指出一个有指导意义的教程或类似内容,我会感激不尽。

你的主机是共享主机还是VPS? - Nic
很遗憾,目前它是共享的。 - Jared Eitnier
2个回答

5
发送存储库到实时网站的过程是什么?
Git本身没有这个功能。您需要编写一个脚本,定期(比如每5分钟)或按需从中央存储库拉取某些分支。(我假设您有一个Git服务器作为中央存储库。)
对于生产环境,您可以采用相同的方法,让暂存服务器拉取“master”分支,并让生产服务器拉取“production”分支。

我已经阅读了大约20篇关于Git的博客文章等等,这是我第一次听到这个,很有道理,所以谢谢!您有什么建议可以帮助制作一个呢? - Jared Eitnier
@JaredEitnier:如果你有cron,你可以使用类似于cd WHERE_THE_WEBSITE_LIVES && git pull origin production &>/dev/null的命令。只需确保cron用户具有与Git服务器安全通信所需的密钥。当你首次将repo克隆到部署环境中时,应设置这些密钥。 - Fred Foo
@larsmans 只是为了阐述,这可以通过钩子完成,但我不确定在共享托管服务器上能做多少。这可能会很麻烦,因为我怀疑他们不会允许 git。 - Nic
@melee:如果他们允许SSH甚至只是HTTPS,你至少可以安全地拉取。没有这些,你甚至可以通过HTTP拉取。 - Fred Foo
好的,我的代码仓库托管不在我的文件托管服务商HostGator上。HostGator并不支持代码仓库,只支持客户端,所以我不得不在其他地方进行托管。 - Jared Eitnier

4

@larsmans给出了一些非常实用的建议,我会继续解答你其他的问题以帮助你。

将你的dev服务器看作你(以及其他开发人员)进行更改、测试和最终确定的地方。将stage服务器看作是在上线到production或现场网站之前向其他股东展示潜在更改的地方。

我个人使用每个服务器一个分支的方式(我们甚至将本地机器指定为alpha服务器,然后再到dev/staging),并将它们按层级结构进行分类:

  1. prod
  2. stage
  3. dev
  4. alpha

更改从alpha开始,然后向上合并 - 因此,在alpha中开始的错误修复将被合并或cherry-pickeddev中,经过检查后向上推到stage,最终到达prod。要更新,只需pull并同步这些分支即可。每个服务器都有该代码库的副本,在任何问题发生时都能提供额外的冗余。

我们拥有自己的git仓库,使用gitolite进行了(轻松)定制,以处理@larsman的答案中描述的pushpull任务 - 不幸的是,由于你正在使用共享主机,这可能不是最理想的解决方案。无论如何,你应该考虑运行VPS,因为Magento需要大量资源,加载时间会受到严重影响 - 这是一个亲身经历者从HostGator尝试让Magento运作的第一手建议。


1
这是一个很好的解释,谢谢。我认为对于我的相当小的操作,我可以不使用“阶段”,只需使用开发服务器和生产服务器即可。将来我们可能需要它,但现在我需要保持事情尽可能简单。 - Jared Eitnier
如果没有很多利益相关者等待批准更改,那么我认为没有必要拥有一个暂存服务器,所以你应该没问题 :) - Nic
我知道这与你的问题无关,但这是我的方法。我在家中使用静态IP地址,这是我从ISP请求的。然后,我购买了Atlassian Fisheye,对于初学者来说只需要10美元。我经常使用Fisheye来组织我的Git存储库。我在自己的服务器上做所有事情,然后再部署到生产服务器。我选择这种方法的原因是灵活性。因为我总是面临与你一样的问题,特别是共享托管环境。 - Oğuz Çelikdemir
我如何从本地机器将托管在远程服务器上的存储库推送到我的独立 Web 主机呢?例如,Assembla(我的存储库主机)有一个付费功能叫做“FTP Build”,它可以让我通过单击提交并将存储库推送到我指定的任何 FTP URL。如何在我的机器上执行此操作而不支付额外费用?我相信这与 git 钩子有关,对吗? - Jared Eitnier
Jared,我的主机在VMware工作站下运行。我已经在路由器上设置了捕获Web和FTP请求的直接VMware工作站。正如你所猜测的那样,由于提供商的限制,你不能像共享托管环境一样通过git完成所有操作。你的方法很好,但在我看来,“FTP构建”功能并不是必要的。我可以从我的存储库中获取.zip包,然后通过普通FTP部署服务器。在你的方式中似乎没有区别。 - Oğuz Çelikdemir

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