使用自动钩子进行网站开发的Git工作流程:Git pull或git clone?

时间:2013-10-27 08:34:34

标签: git workflow

首先感谢您抽出时间阅读这个问题。

我目前正在研究哪种Git工作流程最适合我所在公司的网站开发。网上有不同的指南,但它们大多是概念性的。如果我的实施方式错误,请告诉我:

1。概念

从概念上讲,将有4层,开发,集成,升级和生产。开发层存储在本地,集成是通过Git的帮助完成的,生产层直接位于public_html,而暂存层是为了在发布可用的受保护目录__dev / staging(或者更好,__ dev / [branch_name]? )。

2。文件夹结构(分段和生产层)

  • GIT中
    • project.git(这是此网站项目的裸存储库)
  • 的public_html
    • __ dev(受密码保护的目录)
      • staging(这就像用作登台层的public_html的副本)

第3。我的本地副本(开发和集成层)中的Git设置

git remote add origin ssh://path_to_project.git
git branch staging

这样我就有了两个分支来开始,掌握和分期。

当我这样做时

git push origin master

应该更新网站的在线版本,而无需我连接到网站。当我做的时候

git push origin [branchname]

__ dev / [branchname]应该自动更新。

以上所有内容都可以通过git hooks完成。这种自动化而不是ssh连接和拉动的原因是允许更快的开发(否则如果它需要比ftp更多的努力,那么:/。你同意吗?)

4。钩

这是我很困惑的地方。

我想到的是这两种风格中的一种:

一个。克隆并复制

当我推送到网站时,钩子会将裸仓库克隆到临时目录并将其复制到public_html或__dev / branch,具体取决于我发送的分支。

湾重置并拉动

当我推送到网站时,钩子将检查public_html或__dev / branch中是否已存在.git目录

如果找不到,请cd到该目录并git init,然后git pull。

如果找到,请cd到该目录并git reset --head然后git pull

使用installatron或softaculous进行应用安装

有时我喜欢从installatron安装Web应用程序,并将其用作工作基础。不幸的是,在安装完成后没有自动推送到git的钩子,所以我必须连接到ssh并执行:

git add .
git commit -a -m "installed xxx app"
git push origin master

然后将其拉入我的本地存储库。

结论和问题

您如何看待我的工作流程?我需要改进吗?分支的安排好吗?哪种味道更好4.a.或4.b.,还是还有另一个?

谢谢。

1 个答案:

答案 0 :(得分:1)

4a和4b都是常用的。

我更喜欢4b,因为您可以在生产文件夹中找到您的仓库的所有历史记录。您可以在以下网址查看更多信息:

关于分支,从简单开始,并在需要时添加 但是不要忘记,使用分布式 VCS,您可以推送到中间仓库,该仓库可以通知job scheduler like Jenkins of a new commit,以便运行一些测试。
如果这些测试通过,然后你可以推送到prod repo。