使用版本控制(* .sqlproj)正确管理SSDT项目文件

时间:2015-06-15 13:09:09

标签: sql-server visual-studio-2012 sql-server-data-tools sqlproj

项目XML文件(* .sqlproj)一直存在问题。如果文件被添加/重新发送/更改位置,则它会在某些意外的位置自动添加/删除记录。之后,当有人更改该文件时,我们会遇到很大麻烦。

我们得出结论,我们可能会在签入之前对其进行排序。我们会按字母顺序对它进行排序,在这种情况下,合并工具会更好地理解它。

所以,我的问题是:

  1. 是否可以在办理登机手续之前以某种方式重新安排sqlproj文件?也许有一些选项/工具已经这样做了吗?
  2. 还有其他方法可以让开发人员的生活更轻松吗?
  3. 更新:

    我又遇到了同样的问题。 sqlproj文件被修改了3次,我想合并到生产只有最后一次更改,其他2个尚未测试。在合并工具中,我可以选择添加所有这3个新对象,或保留它而不进行更改。我无法只选择最后一次更改......

    实施例

    1. developerA创建了tableA并签入;
    2. developerB获得了最新版本的dev分支,创建了tableB并签入了;
    3. developerC获得了最新版本的dev分支,创建了tableC并签入.DeveloperC测试了代码并准备进入生产阶段。他试图将他的代码合并到质量保证中,并且在他可以选择只进行所有更改时发生冲突。

2 个答案:

答案 0 :(得分:1)

我理解你遇到的情况非常好。这通常发生在您在单个存储库的上下文中发生多个工作流并且您没有共同的促销计划时(因为所有工作将同时进入QA并同时进入PROD)。

我可以通过几种方式来解决这个问题,每个选项都有利弊。

  1. 锁定每个环境,直到所有内容可以一起推广。在大多数情况下不太现实。

  2. 当您准备推广时,请从源环境创建促销分支,并从促销分支中取出尚未准备好升级到目标环境的内容。这允许开发人员继续工作并且能够在不冻结的情况下进行推广。

  3. 混合方法......在Dev准备好进行测试之前,不要在Dev中对任何内容进行控制。然后从那里做选项#1或2。

  4. 创建一个更灵活的生态系统,可以为每个功能分支启动一个环境,以便与其他人一起演示/测试(或者至少在开发人员之间分配/旋转以实现相同的目标)。一旦它被接受推广。这就是我们目前正在努力实现的目标,但是当您拥有大量互连的数据库时,构建基础架构和流程,并且分享它们的应用程序至少可以说是有点挑战(特别是在Microsoft世界中)。

  5. 无论如何希望这会有所帮助...

答案 1 :(得分:0)

1 - 您使用的源控件是什么?我所知道的源代码控制没有理解sqlproj文件的上下文,但这通常不是问题。

2.a - 这不是一个经常出现的问题,您是否定期办理入住/退房手续?如果不同的开发人员对项目进行大规模更改而不是在之前和之后签出/签入,我只希望看到问题。

2.b - 你也可能没有正确合并,如果你同时进行这两组修改,那么它通常都没问题。