【问题标题】:How can I programmatically checkin code in TFS with policy override?如何通过策略覆盖以编程方式签入 TFS 中的代码?
【发布时间】:2013-11-21 23:49:40
【问题描述】:

我正在尝试从 TFS 存储库的一部分中的 c# 程序签入代码,这将触发门控签入构建以及持续集成构建。
到目前为止,这是我的代码:

    public static void Checkin(string path, string comment)
    {
        var wsInfo = Workstation.Current.GetLocalWorkspaceInfo(path);
        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(wsInfo.ServerUri);
        tfs.Connect(ConnectOptions.None);   

        var vcs = tfs.GetService<VersionControlServer>();
        var ws = vcs.GetWorkspace(path);

        var fullPath = Path.GetFullPath(path);
        var change = ws.GetPendingChangesEnumerable().Where(p => p.LocalItem == fullPath).ToArray();

        ws.CheckIn(change.ToArray(), comment);

        tfs.Dispose();
    }

基本上发生的事情是我得到一个 GatedCheckinException 说有一个受影响的构建定义。 我想使用众所周知的旁路进行签入,以避免触发门控签入。我一直在努力使用替代的 Checkin 功能,但没有成功。

有什么想法吗?

更新: 感谢 Aghilas Yakoub 提供的链接。 为了完整起见,这里是使用对我有用的覆盖进行签入的代码:

var wip = new WorkspaceCheckInParameters(change, comment)
{
    OverrideGatedCheckIn = ((CheckInOptions2)vcs.SupportedFeatures & CheckInOptions2.OverrideGatedCheckIn) == CheckInOptions2.OverrideGatedCheckIn,
    PolicyOverride = new PolicyOverrideInfo("Check-in from the build.", null)
};

ws.CheckIn(wip);

【问题讨论】:

    标签: c# .net tfs


    【解决方案1】:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2010-11-12
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多