如何在大型Lotus Notes项目中合并版本控制(Git)

时间:2013-09-24 08:27:30

标签: git deployment version-control lotus-notes

我们正在维护一个基于Lotus Notes的大型网站,该网站在Domino Server 8.5.3上运行。最近我们厌倦了我们项目中缺乏源代码控制,所以我们认为我们会尝试一点点改进。但是如何做到这一点呢?

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

该图说明了目前的情况:

Current situation. Oh, the horror...

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

主模板的一组副本驻留在开发服务器上。部署新功能时,所需的代码更改将添加到Dev上的模板中。服务器(更多细节见下文)。然后将这些模板复制到Staging服务器进行测试,最后复制到生产服务器。这部分很有效。

问题可以在图的下半部分找到。我们目前是两个开发人员,我们都在同一组开发人员中工作。开发中的数据库(新闻,档案,讨论等)。服务器。当然,我们一直在绊倒彼此的工作,这非常令人沮丧。在部署时,将从dev集合中有选择地复制/粘贴要部署的代码。数据库到开发者。模板。这是手动完成的,因此出错的风险很高。我们不能简单地用dev的模板替换模板的设计。数据库,因为开发。数据库始终包含正在开发的代码。所以我们必须非常谨慎地只部署“完成”的代码。此外,我们没有变化的历史。这是一个可怕的,可怕的,可怕的(添加尽可能多的可怕的)软件开发的方式,我们知道它。

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

1 个答案:

答案 0 :(得分:5)

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

Envisioned deployment architecture incorporating Git for version control

正如here所解释的那样,每个开发人员都应该拥有自己的数据库/模板(或我们的模板集)的COPY(不是副本)来开发。所以每个开发人员。 PC有一组模板,每个模板与磁盘项目同步。这套磁盘项目将由Git进行源代码控制。

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

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

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

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

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

    d)如果当前在 develop 分支上:替换dev上的模板集的设计。服务器的设计来自开发人员的模板集。 PC。这将确保远程Git仓库的 develop 分支始终与dev上的模板一致。服务器,即使它们之间没有直接连接。

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

  4. 如果有人有任何评论,补充或反对意见,我很乐意听到。

    修改 为了缩短上面第1点中的反馈循环,可以直接在dev上的测试数据库中进行开发。服务器。这样就无需在每次需要测试更改时刷新测试数据库的设计,但必须小心将所有更改复制回开发人员。定期模板以保证代码安全并保持Git repo更新。这可以通过element-by-element compare of the database and the template很快完成。这也是一个在提交之前检查您的更改的机会,这是一个非常好的习惯。

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