【问题标题】:Web Development Workflow网页开发工作流程
【发布时间】:2012-09-01 09:01:03
【问题描述】:

现在是我学习源代码控制的时候了,尤其是 git。

我进行了大量的 Web 开发,并且大部分时间我在实时生产服务器上进行了大量的开发工作。我知道这真的很糟糕。

我只是不太了解本地开发然后使用 git 部署到实时站点的工作原理。

以下是如何解决的:

  1. 在我的本地计算机上设置一个尽可能靠近我的 Web 服务器的环境

  2. 创建一个 git 文件夹,我将在其中开发我的项目(或从实时服务器下载现有项目)。

  3. 当我准备好推送我的更改时,将它们提交到 git。

我不确定的是:

  • 如何将我的更改推送到实时服务器?
  • 如果我不小心删除了本地副本怎么办?
  • 我的数据库呢?如果我在本地计算机上添加新表和数据,是否也需要在实时服务器上手动进行这些更改?

编辑

是的,抱歉,不够详细。

我在 Coda for Mac 中完成所有编码,我有几个不同的项目在进行中,但其中大部分是在 Apache 上运行的 PHP/YII。选择的数据库是 MySQL。

PHP 即将推出。

【问题讨论】:

  • 请问您的 IDE、Web 服务器和 DBMS 是什么?
  • 好的,我想最后一个问题,你是编译你的 PHP 还是直接部署它?
  • 对于流程/工作流程方面,您可能想试一试git-flow

标签: git web


【解决方案1】:

如果您的网站不需要编译,您可以选择直接从 Git 存储库部署它。

  • 像往常一样在本地机器上进行开发。
  • 经常将您的代码检查到 Github 或其他类似网站
  • 由于您不需要编译您的网站,您的 Git 副本几乎可以使用了
  • 您要么希望从 APACHE 服务中排除 .git 目录,要么 remove them 在“git clone”之后

您的数据库是另一个问题。你可能会:

  • 编写脚本来更改数据库,而不是在 UI 中进行
  • 在某处(可能在数据库中)包含用于标识当前架构的版本标记
  • 用数据库版本号命名您的脚本(我还保留了兼容性所需的相关代码修订的指示符 - 我自动用 Git 变更集 ID 标记它)
  • 依次运行所有大于当前数据库版本的脚本(但不大于当前软件版本。我也编写了这个过程的脚本)

您在开发机器上零碎地完成所有这些工作,就好像您在生产环境中一样。到了该走的时候,您仍然可能真的想要测试:

  • 用友好的分支名称标记您的修订,例如 Release23a 或您选择的任何名称,以便您以后找到它
  • 将您的生产数据库复制到测试环境(可能会在中途阻止升级的实时数据问题是一个难题)
  • 将整个包部署到测试环境,运行 MySQL 脚本并执行 Git 导出(使用新分支名称)

然后,您可能会像往常一样继续工作并检查 Git。通常,您将在实现一段难看的代码的过程中,需要快速修补您的实时站点。但是您不想只是将代码破解到您的实时站点中。而是:

  • 查看您的 Release23a
  • 制作您的修补程序
  • 照常签入(它会保存到 Release23a 分支)
  • 再次标记它,Release23b
  • 像以前一样部署 (Release23b)
  • 将 Release23b 合并回您的主代码行

关于分支的快速说明。您可以随时返回并按日期/时间获取您签入的任何版本,但按名称查找它们更容易。此外,一旦您分支,您可以在该分支上进行工作,然后再次签入。现在,您的代码线出现了分歧。您正在对昨天的热度进行更改,它不会自动应用于今天的热度。如果你想要,你必须手动合并它。合并是说“Git 客户端,请尝试自动将 Release23a/Release23b delta 中的所有代码编辑应用到我最近的热点”的过程。

如您所见,Git 提供了一些非常酷的工具。假设您一直很好并且经常签到,删除您的本地代码不是问题。

请注意,Git 具有本地提交的概念。在您同步之前,这些不会将您的工作从硬盘崩溃中拯救出来。

【讨论】:

    【解决方案2】:
    • 如何将我的更改推送到实时服务器?

    我建议使用GitHub 来托管您的存储库,或者创建您自己的私有存储库。然后您将git clone 一个存储库放入您的开发文件夹中,并且在您的生产服务器上也是如此。

    您将对本地开发文件夹进行更改,准备就绪后,将它们推送到您的 GitHub 存储库。然后,您将进入服务器,并从 GitHub 存储库中提取更改。

    • 如果我不小心删除了本地副本怎么办?

    您在 GitHub 和您的生产服务器上还有另一个。

    • 我的数据库呢?如果我在本地计算机上添加新表和数据,我是否也需要在实时服务器上手动进行这些更改?

    除非你有一个可以放入 git 的脚本,并且你没有发生任何数据库复制,否则你必须手动完成。

    【讨论】:

      【解决方案3】:

      这里有几个链接有助于回答您的几个问题。

      对于 git 的使用: Git workflow

      关于维护分支的指南:Branching model

      更新服务器:Fabric

      【讨论】:

        【解决方案4】:

        我也是一个 Git 新手。然而,这个 Git 工作流模型在设置后似乎是独一无二且简单的:

        http://joemaller.com/990/a-web-focused-git-workflow/

        它可能不适合您,但是一旦您了解了 Git 的工作原理,它可能会提供一种低维护的解决方案。

        【讨论】:

          【解决方案5】:

          如果您在设置本地/git/live 环境时需要帮助,这里是个好去处:http://www.mybringback.com/bringers/14509/git-local-and-shared-server-development-environment-with-ssh-setup/

          就数据库架构而言,您要么需要编写一些部署脚本,要么需要手动对本地和实时环境进行修改。

          希望这有帮助吗?

          【讨论】:

          • 我还会研究 git flow 以帮助处理功能分支和其他问题
          猜你喜欢
          • 2016-04-02
          • 2015-12-16
          • 1970-01-01
          • 2011-09-23
          • 2019-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多