0

我的开发团队正在 TFS 中实现分支和合并。我们的软件包含在一个解决方案中,其中嵌入了许多项目。其中一个项目包含所有 SQL 脚本,以保持我们的数据库版本。

我们在合并期间无法弄清楚如何处理数据库项目。例如,每当开发人员需要对数据库进行任何更改(添加/删除存储过程、创建表、添加索引等)时,我们都会创建一个脚本文件。每个文件都以版本号命名。例如,如果签入的最后一个脚本文件名为 4.1.0.1,我会将新脚本命名为 4.1.0.2。我们使用这些文件名将软件版本与它需要运行的相应数据库版本相匹配。

假设我从我们的主代码分支创建了一个分支来执行新功能。我完成了所有的编码,并将我的所有 SQL 更改放在一个脚本文件中,并将其添加到 DB 项目中。显然,我可以从主代码分支合并到我的新分支中,以确保我拥有最新的 SQL 脚本列表,以便我可以正确命名它。问题是一天中会多次添加新的脚本文件,我们认为我们将与脚本命名发生大量合并冲突。

我想以某种方式自动执行此操作,因此开发人员可以添加一个具有随机名称的脚本,并且在合并期间有一个钩子或事件将确定哪些文件是主代码库的新文件以及如何正确命名这些文件,因此开发人员不必担心。例如,我可以创建一个名为“new_script.sql”的新文件,当我将其合并回主代码分支时,它将重命名为 4.1.0.2

以前我使用 RoundHouse 之类的工具来处理所有 SQL 版本控制,但是在我目前的工作中,我们使用 Sybase SQL Anywhere 10,我无法找到类似于 RoundHouse 的可以与 Sybase 一起使用的东西。

谁能指出我在 TFS 合并期间如何自动执行任务的正确方向?我假设这可以使用 PowerShell 完成,但我担心大多数开发团队不熟悉 PowerShell,我希望能够在开发人员无需离开团队资源管理器窗口的情况下自动执行此任务。

任何帮助是极大的赞赏!

谢谢!

4

1 回答 1

0

如果您继续使用此策略并引入分支,我认为您将遇到命名冲突是绝对正确的。

我认为你有两个选择:

  1. 在分支上添加这些文件时,以分支名称为前缀添加它们。例如。分支_0.1.sql 和分支_0.2.sql。然后,当您将分支合并回主干时,您必须将它们重命名为正确的名称。您可以编写一个程序来为您执行此操作,并且相当简单。为了使这更简单,您也只能为每个分支创建一个 SQL 文件,然后继续添加到该 SQL 文件中。然后即使你合并它也是一个非常简单的过程。

  2. 放弃自我版本控制的文件。Tfs 是版本控制。没有太多需要自己对文件进行版本控制。我们使用 Visual Studio 数据库项目进行数据库版本控制,这绝对可以正常工作。我想如果你改变了这个,你需要改变你的部署策略。

我希望这有帮助。

于 2013-03-13T06:23:33.060 回答