8

我们正在维护一个基于 Lotus Notes 的大型网站,在 Domino Server 8.5.3 上运行。最近我们已经厌倦了我们的项目缺乏源代码控制,所以我们想我们会尝试一些 Git 的东西。但是如何正确地做到这一点呢?

由于各种原因,我不会在这里讨论,我们无法在开发 PC 上本地运行我们的应用程序。我们只能在开发、登台和生产服务器上运行它们。(不幸的是,不能在开发 PC 上运行本地 Domino 服务器。)

这张图说明了目前的情况:

现在的情况。 啊,恐怖……

在生产(和暂存)中,有多个网站都具有相同的功能。它们基本上是同一个网站,设计相同,但内容不同。每个站点都包含多个 Notes 数据库(新闻、存档、讨论等)。这些数据库的设计对于所有站点都是相同的,因此它们都从同一组主模板(NewsTemplate、ArchiveTemplate、 DiscussionTemplate 等)继承了它们的设计。

一组主模板的副本驻留在开发服务器上。当我们部署新功能时,所需的代码更改会添加到 Dev 上的模板中。服务器(下面有更多详细信息)。然后将这些模板复制到暂存服务器进行测试,最后复制到生产服务器。这部分工作得很好。

问题可能在图的下半部分。我们目前是两个开发人员,我们都在同一组开发人员中工作。开发中的数据库(新闻、存档、讨论等)。服务器。自然地,我们总是在彼此的工作上绊倒,这很令人沮丧。当需要部署时,将有选择地从 dev.js 集中复制/粘贴要部署的代码。数据库到开发。模板。这是手动完成的,因此出错的风险很高。我们不能简单地将模板的设计替换为开发人员的设计。数据库,因为开发人员。数据库始终包含正在开发的代码。所以我们必须非常小心,只部署“完成”的代码。此外,我们没有更改历史记录。这是一个可怕的,可怕的,

现在,使用 Git、本地副本、数据库副本或诸如此类的东西,实现更简化的开发和部署方案的最佳方法是什么?

4

1 回答 1

5

此图说明了该问题的可能解决方案:

包含 Git 进行版本控制的预想部署架构

正如这里所解释的,每个开发人员都应该有自己的数据库/模板(或者在我们的例子中是一组模板)的副本(而不是副本)来开发。所以在每个开发人员上。PC 有一组模板,每个模板都与一个磁盘项目同步。磁盘上的项目集将受 Git 的源代码控制。

开发人员将无法在本地运行应用程序,因此他需要在 dev 上设置一组测试数据库。服务器。每个开发人员都会有一个这样的集合。测试数据库将从开发中的模板继承它们的设计。个人电脑。因此,为了测试他的代码更改,开发人员必须用他的模板(位于他的 PC 上)的设计更新他指定的一组测试数据库的设计。

每个开发人员的工作流程如下:

  1. 在开发人员自己的 PC 上对模板集进行代码更改。通过在 dev 上刷新测试数据库的设计来持续测试。服务器。与磁盘上的项目同步,“随意”提交和分支。
  2. 当开发人员准备好推送到远程 Git 存储库时:

    a) 从远程 Git 存储库中提取更改。

    c) 将更改推送到远程 Git 存储库。将数据库与磁盘项目同步。

    d) 如果当前在开发分支上:替换开发上模板集的设计。使用 dev 上的模板集设计的服务器。个人电脑。这将确保远程 Git repo 的开发分支始终与 dev 上的模板保持一致。服务器,即使它们之间没有直接连接。

  3. 通过从开发人员复制模板,可以从这里将更改部署到登台和生产。服务器。在部署到生产之前,应该将开发分支合并到分支中,以便始终反映当前的生产版本。

如果有人有任何意见、补充或反对意见,我很想听听。

编辑: 为了缩短上面第 1 点中的反馈循环,可以直接在 dev 的测试数据库中进行开发。服务器。这样就无需在每次需要测试更改时刷新测试数据库的设计,尽管您必须小心地将所有更改复制回开发人员。定期使用模板,以确保您的代码安全并保持 Git 存储库的更新。这可以通过对数据库和模板进行逐个元素的比较来快速完成。这也是在提交之前检查更改的机会,这是一个非常好的习惯。

将更改复制回模板的另一个选择是在 dev 上创建测试数据库。服务器一个主模板并临时在 dev 上设置模板。PC 从该主模板继承设计。然后可以使用开发人员上的“刷新设计”复制更改。PC 的模板,之后您可以再次删除继承。

于 2013-09-24T08:27:30.113 回答