【问题标题】:How to incorporate version control (Git) in a large Lotus Notes project如何在大型 Lotus Notes 项目中合并版本控制 (Git)
【发布时间】:2013-09-24 08:27:30
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: git deployment version-control lotus-notes


    【解决方案1】:

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

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

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

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 这是个好概念。我们在 Git 上遵循相同的模式 - 但是,我们在每台开发人员计算机(在 VM 中)上安装了本地开发服务器来运行和测试应用程序;-)
    • 是的,我希望我们可以使用本地开发服务器。不幸的是,我们的客户不允许这样做。
    • 我希望您正在与分支机构合作。因此开发人员可以处理他们的更改并对其进行测试。之后,开发者分支可以合并到开发分支中,将所有内容整合在一起。
    • 是的,这就是我们的想法,也是迄今为止我们在这个项目中非常想念的东西。两个开发人员在同一个代码库中工作,没有分支的可能性(也没有任何更改历史)是一场噩梦。
    • 你肯定想看看 GitFlow(例如blog.sourcetreeapp.com/2012/08/01/…nvie.com/posts/a-successful-git-branching-modelatlassian.com/git)。我完全同意 Christian 的观点,即您希望为每个开发人员使用分支(GitFlow 中的功能)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2014-09-09
    相关资源
    最近更新 更多