0

我是一名程序员,在不久的将来,我将与一个网页/模板设计师一起在几个项目上工作。您如何看待我的开发工作流程设置?你有什么优化技巧吗?

为一个特定项目设置

  • 整个项目托管在 github 上。
  • 该项目是一个在 linux 操作系统上运行的复杂 web 应用程序(不可能在本地开发服务器上运行它,无论是在 windows 上还是在 mac 上)。
  • 有 2 个分支:dev 和 master。dev 是测试服务器,master 是生产服务器。
  • 除了主 github 存储库之外,设计师的计算机上还有一个本地存储库,我的计算机上一个,测试服务器上的一个,生产服务器上的一个。
  • 我在本地开发(在 Windows 上)。在开发过程中,有一个自动同步脚本,它会自动将我通过 FTP 编辑的所有文件上传到测试服务器,这样我就可以立即检查我的更改是否有效。
  • 设计师也在本地开发(在 Mac 上),他还将拥有一个自动同步脚本,通过 FTP 自动将他的所有更改上传到测试服务器,但他只能访问一个特殊的“布局”目录,其中所有模板和静态文件(图像,css,js,...)位于。他还需要每隔几分钟检查一次他的更改或新功能是否有效。
  • 每当设计师或我成功完成并在测试服务器上测试了新功能时,我们就会将我们的更改从本地 dev-branch 推送到 github 上的远程 dev-branch。到目前为止,测试服务器没有被 git 触及。
  • 每天早上都有一个 cronjob,它会删除整个 testserver 目录,然后对托管在 github 上的远程存储库的 dev-branch 执行“git clone”。这样测试服务器就有了所有新的提交。
  • 设计师和我必须每天早上使用远程 github 存储库“git pull”彼此的最新更新,然后再进行任何进一步的开发。
  • 一旦某个功能在测试服务器上运行良好,我会将“dev”分支合并到“master”并将 master 提交到 github。
  • 然后我们有一个部署,将主分支从 github 拉到生产服务器。

问题

您通常如何处理无法为每个项目成员拥有本地开发服务器的情况(因为应用程序无法在本地运行)?拥有一个测试服务器似乎真的不专业,每个人都可以通过 ftp 上传文件来尝试他们的东西,因为很容易发生有人覆盖别人的文件,所以测试会失败。有没有本地测试服务器时如何在团队中开发的最佳实践示例?

提前感谢您的帮助,并对我的英语感到抱歉,它不是我的母语。

4

2 回答 2

1

Git 是一个分布式版本控制系统,因此当每个从事项目工作的人都有自己的开发环境可以使用时,它的效果最好。我个人不建议将 Git 用于实际在单个服务器上测试应用程序的项目。我建议您使用像Subversion这样的集中式版本控制系统。不幸的是,通过使用 subversion,您将无法在 Github 上托管存储库(您必须使用像 Git-SVN 这样的系统,这会有点复杂)

于 2013-05-21T12:07:59.973 回答
0

我会这样做:

  1. 托管在 github 上的中央仓库
  2. 每个团队成员都有一个正在运行的本地虚拟机,由Vagrant管理。
  3. 有一个登台/测试服务器,它位于开发分支的 HEAD。
  4. 有一个生产服务器,它位于 master 分支的 HEAD。

每当您开始开发新功能时,您都会基于 master 创建一个分支。一旦它在您的本地机器上按预期工作,您可以提交它并将其合并到 dev 并推送到 github。每次推送新代码时都有一个更新测试服务器的钩子通常很好。

一旦功能通过测试,您可以将功能分支合并到 master 并将其推送到您的生产环境。

如果您想围绕创建功能、合并到分支和执行标记发布等流程来规范化流程,那么git-flow是一个不错的选择。

于 2013-05-21T12:25:02.343 回答