我正在尝试从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);
答案 0 :(得分:2)