【问题标题】:Setting up GIT and workflow for bigger web based application为更大的基于 Web 的应用程序设置 GIT 和工作流
【发布时间】:2013-06-29 04:23:54
【问题描述】:

我们有一个庞大的基于 Web 的内部系统,目前由 3 名开发人员组成的团队维护。 我们当前的设置是 1 台开发服务器和 1 台生产服务器 - 可能很快会有 2 台生产服务器位于负载均衡器后面。 我们当前的工作流程是所有开发人员在开发服务器上实时更新文件。每当我们准备好更改时,我们会将代码库同步到生产环境。 我们发展迅速并且经常改变事物。很长一段时间以来,我们一直希望开始使用版本控制来更好地控制我们所做的更改和整体代码质量。唯一的问题是如何正确地做到这一点 什么是最有效的方法,因为我们仍然必须保持快速发展。

我的一些问题是:

  • 我们的主要代码库包含带有 3rd 方库、图像等的目录。我们很少接触它们。这些也应该被跟踪吗?
  • 是否可以只处理一个主分支?因此,每个开发人员都将使用 master 分支,该分支将被拉到 Main Dev 然后到 Production。
  • 应该将生产设置为裸仓库还是无关紧要?

这是我想出的设置。请让我知道您的想法并提出改进建议。

【问题讨论】:

  • 您不需要每个开发人员的子域...您可以在本地和 svn 到开发。否则很好。我会将 3rd 方库和内容包含在 repo 中。否则,您将在更新库和其他内容方面使首席开发人员负担过重。
  • 感谢您的意见。这个想法是所有开发人员都将更改并且最重要的是在同一开发服务器上而不是在本地测试他们的代码,以使事情变得更简单。
  • 这将包含您可能不想要的不可预测性元素。两个开发人员可能正在开发同一个类,或者一个可能正在使用另一个正在修改的东西......
  • 嗯,DEV 1、DEV 2、DEV 3 将是从 MAIN DEV 克隆的每个开发人员的单独存储库,因此每个人都只会接触自己的代码。

标签: git version-control


【解决方案1】:

我不喜欢你的计划的是部署阶段。为什么?因为 1)这是一个手动过程,并且 2)它是基于拉动的。我也不确定我对生产服务器上的版本控制存储库的看法。

我想建议的是构建一个 rsyncs 到生产服务器的小脚本,包括 rsync 的 --delete--exclude .git/ 选项。如果您愿意,您可以将当前提交的 SHA1 写入一个小文件,这样您就可以随时了解在线内容。

理想情况下,该脚本不会直接同步到您的文档根目录,而是同步到一个新创建的目录,然后将您的文档根目录符号链接到该目录。使用时间戳命名该目录,也可以使用提交 SHA-1。这样一来,如果任何事情都没有按照预期的方式运行,您只需调整符号链接的目标即可。

【讨论】:

  • 我喜欢你的建议。因此,我将 rsync 到将成为暂存副本的新位置,然后当我们准备好时,我们会将生产链接指向暂存,而原始生产副本会一直挂着,直到下一个暂存副本到达?基本上生产服务器总是有源代码的两个滚动副本。我做对了吗?
  • 完全正确。是的。但是为什么要停在两个副本上呢?存储很便宜,为什么不是十个呢?还是一百?
  • 我同意打包和部署工作流更受欢迎,但这个组织习惯于直接在 Web 服务器上编辑文件。将其作为结帐可以让您判断是否有人这样做。此外,如果 Stuff 受到追捧,则可以提交生产中的快速修复并将其推回上游。
  • GayleDDS:是的,这些都是显而易见的好处。但是,我不希望自己处于必须在生产环境中解决合并冲突的情况。
【解决方案2】:

所有开发人员都在开发服务器上实时更新文件。没有源代码控制

感谢您修复您的架构和工作流程。我在很久以前的工作中就遇到过这种情况。

  • 是的,您绝对应该检查您的第 3 方库、图像等。您很少接触它们,因为如果您更新它们,世界就会崩溃。除非您可以像第一个一样构建它,否则您不能将第二个生产服务器联机。每件事都需要运行所有相同软件的相同版本。在我的项目中,我们在源代码控制中安装了服务器上的所有内容。

  • 是的,只要使用 master 就可以了,你不想一次更换太多的活动部件。随着时间的流逝,请重新访问以查看您是否准备好/需要分支工作流程。

  • 您不能使用裸仓库。没有文件可供 Web 服务器运行。

干得好,很好的问题和设计。

我肯定会为每个开发人员使用子域。我工作的另一个地方,一家商业软件公司,邪恶的聪明人,就是这样做的。

我的一个建议是让 stage.project.com 在生产服务器上运行。它将使用生产数据源并让您在生产环境中进行测试。

团队中的每个人都应该观看。 4 岁及以上的 Git http://www.youtube.com/watch?v=1ffBJ4sVUb4 和额外的信用观看 Advanced Git http://vimeo.com/37408017

【讨论】:

  • 感谢您的回答。您说“stage.project.com 在生产服务器上运行”。很好的建议。它只是提醒我,我们可以做到,所以当我们办公室的人访问网站时,临时副本将被静默提供,而不是生产副本。通过这种方式,我们将能够更快地发现新的错误,并且在它们最终到达生产副本和客户之前:)
  • 团队中的每个人都应该观看。 4 岁及以上的 Git youtube.com/watch?v=1ffBJ4sVUb4 和额外的信用观看 Advanced Git vimeo.com/37408017
猜你喜欢
  • 2020-12-05
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
相关资源
最近更新 更多