private void DiffToPreviousSource(PendingChangeWithConflict pc) { if (pc == null) { return; } string exactSource = null; var target = pc.Change.ServerPath; if (target.StartsWith(TargetBranch.Name, StringComparison.InvariantCultureIgnoreCase)) { target = target.Substring(TargetBranch.Name.Length); } var candidates = SourceChangesets .SelectMany(cs => cs.Changes) .Where(change => change.ServerItem.StartsWith(SourceBranch.Name, StringComparison.InvariantCultureIgnoreCase)); var fullMatch = candidates.FirstOrDefault(candidate => candidate.ServerItem.Substring(SourceBranch.Name.Length) == target); if (fullMatch != null) { exactSource = fullMatch.ServerItem; } if (exactSource != null && (fullMatch.Change.Item.ChangesetId > 1)) { Repository.Instance.TfsUIInteractionProvider.ShowDifferencesPerTF( TemporaryWorkspace.MappedFolder, exactSource + ";" + (fullMatch.Change.Item.ChangesetId - 1).ToString(), exactSource + ";" + fullMatch.Change.Item.ChangesetId.ToString()); } }
private void DiffSourceToTarget(PendingChangeWithConflict pc) { try { if (pc == null) { return; } string exactSource = null; var target = pc.Change.ServerPath; if (target.StartsWith(TargetBranch.Name, StringComparison.InvariantCultureIgnoreCase)) { target = target.Substring(TargetBranch.Name.Length); } var candidates = SourceChangesets .SelectMany(cs => cs.Changes) .Where(change => change.ServerItem.StartsWith(SourceBranch.Name, StringComparison.InvariantCultureIgnoreCase)); var fullMatch = candidates.FirstOrDefault(candidate => candidate.ServerItem.Substring(SourceBranch.Name.Length) == target); if (fullMatch != null) { exactSource = fullMatch.ServerItem; } if (exactSource != null) { Repository.Instance.TfsUIInteractionProvider.ShowDifferencesPerTF( TemporaryWorkspace.MappedFolder, exactSource, pc.Change.PendingChange.LocalItem); } } catch (Exception ex) { SimpleLogger.Log(ex, false, false); throw; } }