gpt4 book ai didi

visual-studio-2012 - 策略失败时阻止 checkin

转载 作者:行者123 更新时间:2023-12-04 18:04:52 25 4
gpt4 key购买 nike

我已经创建了 checkin 策略 from this MSDN article作为示例(代码只是复制/粘贴)。

这很好用,它在我尝试 checkin 时出现,但它显示为警告。所以我可以通过再次按 Check In 来忽略它。如何更改 URL 中列出的代码,以便它返回错误而不是警告。我在 PolicyFailure 上看不到任何属性来执行此操作。

基本上我希望它看起来像这个屏幕截图中的错误: enter image description here

Image Source

编辑:这是我正在使用的确切代码。现在它在原始来源的基础上略有修改,但没有以我没有想到的任何大规模方式进行修改。遗憾的是我无法发布屏幕截图,但我会尝试描述我所做的一切。

所以我有一个来自下面代码的 DLL,我已将它添加到 C:\TFS\CheckInComments.dll 的文件夹中。我在 Checkin Policies 下添加了一个带有 DLL 路径的注册表项,字符串值名称与我的 DLL 相同(减去 .dll)。在我的源代码控制下的项目设置中,我添加了这个 checkin 策略。

这一切似乎都工作正常,如果我尝试 checkin ,它会显示一条警告,说“请提供一些关于您 checkin 的评论”,这是我所期望的,我想要的是它如果不符合任何政策,则停止 checkin ,但我仍然希望用户能够在必要时选择覆盖。目前,即使有警告,如果我单击“ checkin ”按钮,它也会成功 checkin 代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace CheckInComments
{
[Serializable]
public class CheckInComments : PolicyBase
{
public override string Description
{
get
{
return "Remind users to add meaningful comments to their checkins";

}
}

public override string InstallationInstructions
{
get { return "To install this policy, read InstallInstructions.txt"; }
}

public override string Type
{
get { return "Check for Comments Policy"; }
}


public override string TypeDescription
{
get
{
return "This policy will prompt the user to decide whether or not they should be allowed to check in";
}
}

public override bool Edit(IPolicyEditArgs args)
{

return true;
}


public override PolicyFailure[] Evaluate()
{
string proposedComment = PendingCheckin.PendingChanges.Comment;
if (String.IsNullOrEmpty(proposedComment))
{
PolicyFailure failure = new PolicyFailure("Please provide some comments about your check-in", this);
failure.Activate();

return new PolicyFailure[1]
{
failure
};
}
else
{
return new PolicyFailure[0];
}
}

public override void Activate(PolicyFailure failure)
{
MessageBox.Show("Please provide comments for your check-in.", "How to fix your policy failure");
}

public override void DisplayHelp(PolicyFailure failure)
{
MessageBox.Show("This policy helps you to remember to add comments to your check-ins", "Prompt Policy Help");
}
}
}

最佳答案

checkin 策略将始终返回警告,如果您的用户有权忽略它们,那么他们就可以。

用户始终可以覆盖策略。您可以查询 TFS 仓库以生成违反策略的用户的报告以及他们的违反原因(如果他们提供了)。或者在有人忽略这些礼貌警告时设置警报。

没有办法从策略本身强制执行此操作。仅来自服务器端插件,as described by Neno in the post you quoted .也可以为 2012 或 2010 创建这样的服务器端插件。 process is explained here .

关于visual-studio-2012 - 策略失败时阻止 checkin ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com