2013-11-21 64 views
2

我想簽入一個C#程序中的一部分TFS存儲庫中的代碼,這將觸發一個門控簽入版本,也是一個持續集成構建。
這是我到目前爲止的代碼:如何以編程方式簽入帶有策略覆蓋的TFS代碼?

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說,有受影響的構建確定指標。 我想用常用的旁路進行檢查,以避免觸發門控檢入。我一直在努力與altenate簽入功能沒有成功。

任何想法?

更新: 感謝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); 

回答