EDIT: плохая формулировка моего вопроса. Чего я пытаюсь добиться, так это «отбросить» историю слияния набора изменений.
EDIT 2 Я придумал, как удалить набор изменений из очереди кандидатов на слияние. Я не думаю, что это хорошая идея, но я включаю код просто для «полноты».
СЦЕНАРИЙ: разработчик исправляет ошибку в ветке и регистрируется. Затем разработчик исправляет ошибку в транке вместо слияния (транк сильно изменился, поэтому слияние не происходит). Однако набор изменений появляется в списке при слиянии из ветки в ствол. Я пытаюсь пометить этот набор изменений, чтобы удалить его из этого списка. Это можно сделать с помощью утилиты командной строки, передав переключатель «отменить»... Я пытаюсь добиться того же, используя API TFS.
Я думаю, что я довольно близок к использованию метода слияния, но не уверен в параметрах для передачи. Я НЕ хочу выполнять слияние, просто хочу пометить набор изменений как объединенный без слияния
получили список наборов изменений из TFS с помощью приложения Winforms и хотели бы иметь возможность объединить набор изменений, вызвав для него discard с помощью С#
команда слияния находится здесь
можно ли это сделать с помощью библиотек 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);
ИЗМЕНИТЬ 2 КОД
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);