编辑:我的问题措辞不佳。我想实现是“丢弃”我制定了我怎么才能把合并候选队列中的变更的变更在.NET中tfs命令行'合并'
EDIT 2 的合并历史。我并不特别认为这是一个好主意,但我只是为了“完整性”而包含代码。
情景:开发人员修复了分支机构和检查中的错误。然后开发人员修复了主干上的错误而不是合并(主干发生了显着变化,因此没有合并)。但是,从分支合并到主干时,更改集会出现在列表中。我正在试图标记此更改集以将其从此列表中删除。这可以通过使用命令行实用程序通过传递'丢弃'开关来完成......我尝试使用TFS API来实现相同的目标。
我想我通过使用合并方法非常接近但不是确定要通过的选项。我不想执行合并只是想将变更集标记为合并而不合并
已经从TFS获得了使用Winforms应用程序的变更集列表,并希望能够合并变更通过使用C#要求它丢弃
合并命令是here
可以T他可以使用TFS .NET库来完成,还是必须从winforms应用程序调用命令行编辑器?
//get the merge candidates
IEnumerable<MergeCandidate> mergeCandidates =
_vcs.GetMergeCandidates(cboSource.Text, cboTarget.Text, RecursionType.Full)
.OrderByDescending(x => x.Changeset.ChangesetId)
.AsEnumerable();
//user select a changeset from a grid and then I want to discard this changeset from the //'merge list'
string _changeset = grdChangeSets.CurrentRow.Cells[0].Value.ToString();
VersionSpec vfrom = VersionSpec.ParseSingleSpec(_changeset, null);
VersionSpec vto = VersionSpec.ParseSingleSpec(_changeset,null);
_workspaces[0].Merge(cboSource.Text, cboTarget.Text, vfrom, vto, LockLevel.None, RecursionType.Full,
MergeOptions.AlwaysAcceptMine);
EDIT 2 CODE
string _changeSetId = grdChangeSets.CurrentRow.Cells[0].Value.ToString();
VersionSpec vfrom = VersionSpec.ParseSingleSpec(_changeSetId, null);
VersionSpec vto = VersionSpec.ParseSingleSpec(_changeSetId, null);
UsiWorkspace wksp = new UsiWorkspace();
wksp.ResolveConflicts(_workspaces[0]);
GetStatus getStatus = _workspaces[0].Merge(cboSource.Text,
cboTarget.Text,
vfrom,
vto,
LockLevel.None,
RecursionType.Full,
MergeOptions.AlwaysAcceptMine);
var _conflicts = workspaces[0].QueryConflicts(null, true);
foreach (Conflict conflict in _conflicts)
{
conflict.Resolution = Resolution.DeleteConflict;
workspace.ResolveConflict(conflict);
}
var wip = new WorkspaceCheckInParameters(_workspaces[0].GetPendingChanges(),string.Format("CHECKED IN FROM TFS TOOL - {0} {1}", DateTimeOffset.Now.ToString(), Environment.UserName))
{
OverrideGatedCheckIn = ((CheckInOptions2) _vcs.SupportedFeatures & CheckInOptions2.OverrideGatedCheckIn) ==
CheckInOptions2.OverrideGatedCheckIn,
PolicyOverride = new PolicyOverrideInfo("CHECKED IN FROM TFS TOOL - POLICY", null)
};
_workspaces[0].CheckIn(wip);
你有任何代码? – Romoku