9

我在 Oracle 的多开发人员环境中工作,其中包含一个大包。我们有一个 DEV => TST => PRD 推广模式。目前,所有的包编辑都是直接在 TOAD 中进行,然后编译到 DEV 包中。

我们遇到两个问题:

  1. 需要在不同的时间表上促进并发更改。例如,开发人员 A 进行了一项明天需要升级的更改,而开发人员 B 正在同时进行一项在两周内不会升级的更改。到了推广时间,我们发现自己手动注释掉尚未推广的内容,然后再取消注释……哎呀!!!

  2. 如果两个开发人员同时进行更改并且其中一个编译,它会清除另一个开发人员的更改。没有很好的合并;相反,最新的编译获胜。

你会推荐什么策略来解决这个问题?我们正在使用 TFS 进行源代码控制,但还没有在我们的 Oracle 包中使用它。

PS我看过这个帖子,但它并没有完全回答我的问题。

4

8 回答 8

4

关键是采用仅从源代码控制系统部署代码的做法。我不熟悉 TSF,但它必须实现分支、标签等概念。然后部署什么的问题不属于源代码控制系统中的构建和发布标记。

其他提示(针对 Oracle):

  • 如果您将包规范和主体拆分为不同的文件,每个文件使用一致的文件模式(例如,“.pks”用于包规范,“.pkb”用于包主体),则效果最佳。如果您使用可以处理文件模式的自动构建过程,那么您可以构建所有规范,然后构建主体。如果您只部署包主体,这也可以最大限度地减少对象失效。

  • 花时间配置一个自动构建过程,该过程由源代码控制系统的发布或构建状态驱动。如果您拥有中等数量的数据库代码对象,那么能够将代码构建到参考系统中并将其与您的质量保证或生产系统进行比较是值得的。

于 2009-04-01T17:33:07.963 回答
4

请参阅我关于在团队中使用 Oracle 中的存储过程的工具(我刚刚重新标记)的答案。

底线:不要直接使用 TOAD 修改程序。将源存储为文件,您将存储在源代码管理中,修改然后执行。

另外,我强烈建议每个开发人员使用自己的数据库副本(使用免费的 Oracle Express)。如果您将所有脚本存储在源代码管理中以创建数据库,则可以这样做。可以在这里找到更多见解。

于 2009-04-02T15:04:30.853 回答
3

为了避免 2 个开发人员同时处理同一个包:

1) 使用您的版本控制系统作为包代码的来源。要处理一个包,开发人员必须首先从版本控制中检出该包;在此开发人员将其重新签入之前,没有其他人可以签出该包。

2) 不要在 Toad 或任何其他 IDE 中直接处理包代码。您不知道您正在处理的代码是否正确或已被一位或多位其他开发人员修改。处理您从版本控制中签出的脚本中的代码,并将其运行到数据库中以编译包。我的偏好是使用漂亮的文本编辑器 (TextPad) 和 SQL Plus,但您也可以在 Toad 中执行此操作。

3) 完成后,将脚本重新检查到版本控制中。 不要将数据库中的代码复制并粘贴到您的脚本中(再次参见第 2 点)。

这种受控方法的缺点(如果有的话)是一次只有一个开发人员可以处理一个包。这不应该是一个大问题,只要:

  • 您将包保持在合理的大小(根据它们的作用,而不是代码行数或其中的过程数)。没有一个包含所有代码的大包。
  • 鼓励开发人员仅在准备好处理代码时才签出代码,并在完成更改和测试更改后立即重新签入。
于 2009-04-03T11:29:01.823 回答
2

我们使用Oracle Developer Tools for Visual Studio.NET ...直接插入 TFS

于 2009-04-01T15:26:32.383 回答
1

我们使用每个流的开发数据库和不同流的标签来做到这一点。

我们的 Oracle 许可为我们提供了无限的开发/测试实例,但我们是 ISV,您可能有不同的许可选项

于 2009-04-01T15:24:49.033 回答
1

您可以使用 VS 的 Oracle 开发人员工具,也可以使用 sql developer。SQL developer 与 Subversion 和 CVS 集成,您可以免费下载。见这里:http ://www.oracle.com/technology/products/database/sql_developer/files/what_is_sqldev.html

于 2009-04-02T05:06:42.523 回答
0

我们针对 TFS 2008 使用 Toad for Oracle 和 TFS MSSCCI 提供程序。我们使用自定义工具从源代码管理中提取数据库签入并将它们打包以供发布。

据我所知,Oracle Developer Tools for Visual Studio.Net 没有与 TFS 或其他方式进行任何真正的源代码控制集成。

您可能会考虑适用于 Visual Studio 的 Toad Extensions,尽管它并不便宜,我认为可能需要 4000 美元。

Another option is the Oracle Change Management Pack but believe it requires the Enterprise edition of Oracle which is much more pricey.

于 2011-08-19T13:48:37.753 回答
0

You may be interested in Gitora www.gitora.com. It helps managing Oracle database objects with Git.

This article about collaborative development with the Oracle database can also be helpful: http://blog.gitora.com/plsql-how-to-develop-two-features-simultaneously-but-deploy-only-one/

Full disclosure: I am the developer and author of the article.

于 2021-11-09T07:05:36.763 回答