Web开发工作流程

时间:2012-09-01 09:01:04

标签: git web

现在是时候了解源代码控制,尤其是git。

我进行了大量的Web开发,大多数时候我在实时生产服务器上进行了大量的开发工作。我知道这真的很糟糕。

我还没有完全了解本地开发,然后使用git部署到实时网站。

以下是如何解决的问题:

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

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

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

  4. 我不确定的是以下内容:

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

    修改

    是的,抱歉,细节不够。

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

    PHP正在进行中。

5 个答案:

答案 0 :(得分:7)

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

  • 像往常一样,在当地的盒子上进行开发。
  • 将您的代码检查到Github或其他类似的网站
  • 由于您不需要编译您的网站,您的Git副本几乎已准备就绪
  • 您要么从APACHE服务中排除.git目录,要么 在{git clone“
  • 之后remove them

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

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

您可以在开发计算机上一点一点地完成所有这些操作,就像您在生产中一样。什么时候去,你仍然可能想要测试:

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

然后,你可能会像往常一样继续工作并检查Git。通常,您将处于实施丑陋的代码中并需要快速修补您的实时站点。但是你不想只是将黑客代码放入你的实时网站。代替:

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

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

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

请注意,Git具有本地提交的概念。在您同步之前,这些工作不会将您的工作从硬盘驱动器崩溃中保存下来。

答案 1 :(得分:2)

  • 如何将我的更改推送到实时服务器?

我建议使用GitHub来托管您的存储库,或者创建自己的私有存储库。然后,您将git clone存储在您的开发文件夹中,并在生产服务器上相同。

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

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

你在GitHub和生产服务器上都有另一个。

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

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

答案 2 :(得分:2)

以下几个链接有助于回答您的几个问题。

对于git用法: Git workflow

有关维护分支机构的指南:Branching model

用于更新服务器:Fabric

答案 3 :(得分:1)

我也是一个Git新手。但是,一旦设置,这个Git工作流模型看起来很独特和简单:

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

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

答案 4 :(得分:0)

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

就数据库体系结构而言,您需要编写一些部署脚本,或者需要手动在本地和实时环境中进行修改。

希望有帮助吗?