是否可以使用Git作为存储在数据库中的代码的源代码控制?

时间:2017-01-20 01:19:05

标签: database git version-control

我使用Labware LIMS,它通过自己的编程语言和内部代码编辑器进行配置和自定义,并将此自定义代码存储在数据库记录中。 (注意,不是实际应用程序本身的源代码,只是自定义代码a.k.a. LIMS Basic。)LIMS中的几乎所有内容都存储在数据库中。

我们想研究使用源代码控制来保护这段代码的可能性,但我们对使用像Git这样的东西的理论知之甚少。 (我曾作为初级QA工作并使用git但不是开发者,我的知识有限!)

特别使用的是合并工具,因为目前我们必须在文本编辑器中手动合并代码,如果我们甚至注意到存在冲突(检查dev和live之间的内容是耗时的并且涉及使用多个工具,一些其中包括我们自己开发的第三方工具,这些工具很受欢迎。我个人觉得最简单的方法是剪切并粘贴到文本文件中然后使用Beyond Compare。 在将它从dev移动到live时没有通知代码是不同的(没有这样的部署,你只是导入一个xml文件)所以我们经常会有一些人在互相不知情的情况下工作。即dev 1正在处理对象1中的代码,dev 2获取一个对对象1进行更改的票证,这样做并将他们的更改置于实时,无论dev 1正在做什么现在也处于它所处的任何状态。(因为我们并不总是有时间彻底检查每个对象在最多3个不同数据库之间的状态。)

是否可以仅对数据库中的代码使用源代码控制,但不一定是数据库本身? (我们有备份等等,但系统的某些方面很容易被同时处理重叠区域的多个开发人员覆盖。)

如果读这篇文章的人对LW LIMS有任何具体的了解,我们主要是指子程序,我们已经对版本进行了版本化分析,它暂时有源代码控制,并且有些有效但无法控制谁在做什么除了顶部的注释日志之外的子例程。我试图找到有关其他团队如何在LIMS中控制其代码的任何信息,但无济于事。

其中一个表的结构可以从简单的一个字段中只存在的代码到直接文本转储,还有一些其他字段,如changed_on,changed_by和name(子例程),或者更复杂的代码相关将一条记录完全分散在另一张桌子上的多行中(分析),但即使它只是处理简单的场景,也会很棒!

TL; DR:数据库记录中的Code字段的内容是否可以像其他开发环境中的常规代码对象一样对待并使用Gi​​t进行源代码控制? (并且是否有人愿意仅仅为我解释它?)

2 个答案:

答案 0 :(得分:1)

由于您需要对子例程的版本控制表字段,但LW LIMS没有用于版本控制的IDE(例如git,svn等)。所以直接的答案是否定的。

如果您真的想对数据库中的代码进行版本控制,可以创建一个git存储库,只将代码放在git存储库中。当文件更新时,您可以提交&推动变革。并且很容易比较版本之间的差异。

关于git的更多细节,您可以参考git book

答案 1 :(得分:1)

LabWare LIMS具有许多用于版本控制的选项。您可以通过在表中添加一个SUBROUTINE.VERSION字段来对Subroutine表进行版本控制,这与LabWare中其他版本表的工作方式相同,在该版本中,它询问您是否要在保存之前创建对象的新版本。与我合作的一些客户已经做到了。

或者,(还有可能是我们在LEM之前推荐的方法)还有快照功能,系统会在保存对象时自动获取对象的“快照”-在查看对象时,您可以并排查看它们在比较对话框中-对于不同的行,它将显示<或>。

另一种方法是,如果打开了审核功能,则可以查看审核历史记录中特定对象的更改-这包括子例程。 另一种方法是使用配置包-可以记录版本和内部版本号。尽管单个子例程可能不太适合其预期的设计。

最后,由于最初发布了此问题,因此我们开发了一种名为LabWare Environment Manager(LEM)的产品,该产品内置了一些良好的变更控制功能。

有关以上建议的更多信息,请查看所用版本的LabWare技术手册。我们也有一个邮件列表,用于发布这样的问题。您可能在那里找到答案。如果您可以访问我们的支持网页,则可以搜索以前提出的问题。我还建议您与LabWare的客户经理联系,后者可以帮助您回答一些问题。 HTH