【发布时间】: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);
【问题讨论】: