我的开发团队正在实施TFS中的分支和合并。我们的软件包含在一个解决方案中,许多项目都嵌入其中。其中一个项目包含所有SQL脚本以保持我们的数据库版本化。
我们在合并期间无法确定如何处理数据库项目。例如,每当开发人员需要对数据库进行任何更改(添加/删除存储的proc,创建表,添加索引等)时,我们都会创建一个脚本文件。每个文件都以版本号命名。例如,如果签入的最后一个脚本文件名为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,我希望能够在没有开发人员离开团队资源管理器窗口的情况下自动执行此任务。
非常感谢任何帮助!
谢谢!
答案 0 :(得分:0)
如果您继续使用此策略并引入分支,我认为您将获得命名冲突是绝对正确的。
我认为你有两个选择:
在分支上添加这些文件时,请添加前缀为分支名称的文件。例如。 branch_0.1.sql和branch_0.2.sql。然后,当您将分支合并回主干时,您必须将这些分支重命名为正确的名称。您可以编写一个程序来为您完成此操作,并且相当简单。 为了使这更简单,你只能为每个分支创建一个SQL文件,并且只是不断添加到那个SQL文件。那么即使你合并它也是一个非常简单的过程。
抛弃自我版本的文件。 Tfs是版本控制。没有太多需要自己对文件进行版本控制。我们使用Visual Studio数据库项目进行数据库版本控制,这绝对可以。如果您更改了此内容,我想您需要更改部署策略中的内容。
我希望这会有所帮助。