Xpages Project VS eGit插件的注释复制过程,可在团队或开发人员中共享代码

时间:2018-11-13 08:07:20

标签: git version-control xpages replication egit

关于这个问题,我只想对这两个过程发表一些意见和建议。

我故意提到eGIT插件,因为我可以接受到GIT是一种流行的VCS,它将代码更新到git服务器以及所有其他东西,例如存储,分支等,但是在Xpages中,我们需要创建一个ON-Disk项目,并且它需要源控制与本地ntf,以便我们可以将git ondisk项目中的更改同步到本地ntf,反之亦然,eGIT插件可以帮助我们将其设置为UP。

为进一步说明,我们有2个不同的位置(两个时区都不同),例如位置A和位置B.在位置A上,看起来一切正常,但是将更改存储在磁盘上时在位置B上project我们的一些开发人员发现与ondisk项目同步时出现了一些问题,并且没有从ondisk项目中获得更改(有时可能是由于生成了元数据),我们在其中找到了可能的原因。所以我们决定 到

  1. 创建一个从位置B到一个主模板“ xyz”的复制到 所有本地开发人员上的位置“ A”,模板“ xyz”,并在以下情况下复制 更改已完成。
  2. 停止从git中提取更改
  3. 决定仅推送更改并将更改复制到主模板“ xyz” 在位置“ A”上。

现在的问题是,当多个开发人员工作并在那里复制更改时,复制过程如何正确工作?所有在位置“ A”上工作的开发人员的代码将如何得到保护。

使用egit插件同步本地模板上的更改时,任何xpages开发人员都会遇到什么问题。

在使用eGit的git流程之上,复制如何在此处起作用, 团队合作时,复制过程可能会遇到什么问题。

最近几周,我们发现将模板从位置“ A”复制到位置“ B”后,某些自定义控件使用不同的签名者但使用相同的名称进行了复制,现在没有人可以预测这里出了什么问题。

2 个答案:

答案 0 :(得分:4)

多年来,在具有多个开发人员的项目中,将Git与XPages一起使用。有时会很痛苦,但大多数时候效果都很好。这比根本不使用源代码控制要好得多,尤其是在多开发人员团队中。没有IMHO,您简直无法生存。

上面的文本中确实没有一个具体的问题,但是我可以分享一些经验:

  • 我不使用eGit,而是使用外部Git客户端(SourceTree)。那不是因为我不喜欢eGit,而是因为我不喜欢它给Designer增加的额外依赖性。我想让Designer尽可能接近标准安装。
  • 在Designer中使用Swiper。没有它,使用NSF文件进行Git的痛苦更大。
  • 仅提交您在NSF中实际更改的内容。磁盘项目有时使您认为您也更改了数据库属性或图标(这很麻烦),但是忽略这些更改。如果您忘记了更改的文件,则需要更频繁地提交(首先在本地提交,压缩提交并将其发送到服务器)。
  • Git回购是唯一和唯一的真理来源。在开发时,无需考虑模板。只需与ODP同步即可。以我的经验,ODP更改检测和同步在Designer中使用新的Eclipse版本变得更好。
  • 如果为ODP创建Git存储库,则始终将NSF中的文件存储在子文件夹中(如果您的应用程序由多个数据库组成,则将其存储在多个子文件夹中)。
  • 如果您合并其他人的提交,请在您的Git客户端中进行合并,解决任何合并冲突,然后您才能与NSF进行同步。
  • 在“设计器”>“源代码控制”首选项中打开/关闭自动导入/导出。使Designer响应速度更快,并使您可以控制过程。您只是不应该忘记这样做。

答案 1 :(得分:1)

对NSF项目的源代码控制非常糟糕。减轻各种问题的唯一办法是放弃一些基本假设,而这些假设是在任何其他受尊重的开发环境中的绝对规范,并推出类似杂技循环的策略。

我认为您已经:

  1. 禁用二进制DXL选项(DDE源代码控制)
  2. 启用了设计元素的自动导入/导出(DDE源代码控制)
  3. 启用了“自动构建”选项(DDE Workspace)
  4. 使用本机挂钩或轮询选项(DDE Workspace)启用刷新
  5. 安装了OpenNTF Swiper plugin并为项目启用了它

从那里开始,我将安排工作以一种尊重模板的自上而下的配置。这意味着:

  • 每个开发人员都有自己的 local 模板实例(因此具有不同的模板ID),这些实例是通过启用git的磁盘项目创建并与之同步的。
  • 每个开发人员都使用自己的本地服务器(因此是其个人本地模板的副本)进行开发/测试目的
  • 每个开发者对git远程存储库进行/从git远程存储库提交/推动/拉取任何更改
  • 授权的开发人员和/或普通的DDE客户-只有一个! -从启用git的磁盘项目上创建并与git同步到存储在服务器A或B上的另一个ntf文件中-然后Domino复制到A或B。该ntf有效地成为组织现有的唯一授权生产模板

通过这种方式,您可以将开发人员本地模板和生产服务器模板清楚地分开。它们每个的副本ID是不同的,因此,它们即使在错误的情况下也无法在彼此之间进行复制。 通过这种方式,您可以真正确保只有受git控制的内容才是事实的来源,并避免在多个Domino开发人员在同一模板上工作的情况下,典型的domino env的有趣复制/保存冲突。