小编sco*_*pio的帖子

TFS 2010多种解决方案和带门控签到的构建

我在相应的文件夹中有两个解决方案,例如

  1. SolutionA\SolutionsA.sln
  2. SolutionB\SolutionB.sln

每个解决方案都配置了Gated Check-in构建; 即两个构建定义GatedSolutionA和GatedSolutionB.

现在的情况是,如果我同时检查两个文件夹中的更改,TFS会显示一个对话框,用于选择构建(使用GatedSolutionA下拉,GatedSolutionB)以针对变更集运行.我的变更集在解决方案B中有突破性变化,在解决方案A中有非破坏性变化.即Build GatedSolutionB将失败,但GatedSolutionA将通过.

当我选择GatedSolutionA来构建我的变更集时,TFS将其检入,这反过来使解决方案B处于中断状态,并且对于解决方案B,Gated签入的目的将被取消.

如果我将触发器更改为CI以进行构建定义,则TFS会对两个构建进行排队.

我正在寻找的是相同的行为,即所有Gated构建都排队,如果其中一个失败,应该拒绝变更集.

注意:我不想为这两个解决方案创建单个构建定义.此外,我知道我们可以通过创建两个单独的更改集来避免此问题发生,但这通常发生在开发人员不知道他们有一些文件正在检入解决方案而不是他们正在处理.

git build-automation tfs2010 azure-devops gated-checkin

7
推荐指数
1
解决办法
3612
查看次数

SQL Server 存储过程 - “IF 语句”与“Where 条件”

这个问题在我脑子里沸腾了很久,从下面两个存储过程中哪个会表现得更好。

过程 1

CREATE PROCEDURE GetEmployeeDetails @EmployeeId uniqueidentifier,
@IncludeDepartmentInfo bit

AS
BEGIN

    SELECT * FROM Employees 
    WHERE Employees.EmployeeId = @EmployeeId

    IF (@IncludeDepartmentInfo = 1)
    BEGIN
        SELECT Departments.* FROM Departments, Employees
        WHERE Departments.DepartmentId = Employees.DepartmentId 
        AND Employees.EmployeeId = @EmployeeId
    END
END
Run Code Online (Sandbox Code Playgroud)

过程 2

CREATE PROCEDURE GetEmployeeDetails @EmployeeId uniqueidentifier,
 @IncludeDepartmentInfo bit
AS
BEGIN

    SELECT * FROM Employees 
    WHERE Employees.EmployeeId = @EmployeeId

    SELECT Departments.* FROM Departments, Employees
    WHERE Departments.DepartmentId = Employees.DepartmentId 
    AND Employees.EmployeeId = @EmployeeId 
    AND @IncludeDepartmentInfo = 1

END
Run Code Online (Sandbox Code Playgroud)

两者之间的唯一区别是使用“if 语句”。

如果使用@IncludeDepartmentInfo …

t-sql sql-server query-optimization

6
推荐指数
1
解决办法
7546
查看次数