public void SetDiffs(GitRevision selectedRev = null, GitRevision parentRev = null, IList <GitItemStatus> items = null) { Revision = selectedRev; if (parentRev == null) { parentRev = new GitRevision(""); } IGitItemsWithParents dictionary = items == null ? null : dictionary = new GitItemsWithParents { { parentRev, items } }; GitItemStatusesWithParents = dictionary; }
public void SetDiffs(IList <GitRevision> revisions) { if (revisions == null || revisions.Count == 0) { Revision = null; } else { Revision = revisions[0]; } var dictionary = new GitItemsWithParents(); NoFiles.Text = _noDiffFilesChangesDefaultText; // Temporary if (revisions.Count > 2) { // Not a limitations, to keep compatibility with existing RevisionDiff NoFiles.Text = _UnsupportedMultiselectAction.Text; } else if (Revision != null) { GitRevision[] parentRevs; if (revisions.Count == 1) { var list = new List <GitRevision>(); foreach (var item in Revision.ParentGuids) { // Note: RevisionGrid could in some forms be used to get the parent guids list.Add(new GitRevision(item)); } parentRevs = list.ToArray(); } else { parentRevs = revisions.Skip(1).ToArray(); } if (parentRevs.Length == 0) { // No parent, will set "" as parent var rev = new GitRevision(""); dictionary.Add(rev, Module.GetTreeFiles(Revision.TreeGuid, true)); } else { if (!AppSettings.ShowDiffForAllParents) { parentRevs = new GitRevision[] { parentRevs[0] }; } foreach (var rev in parentRevs) { dictionary.Add(rev, Module.GetDiffFilesWithSubmodulesStatus(rev.Guid, Revision.Guid)); } // Show combined (merge conflicts) only when A is only parent var isMergeCommit = AppSettings.ShowDiffForAllParents && Revision.ParentGuids != null && Revision.ParentGuids.Count() > 1 && revisions.Count == 1; if (isMergeCommit) { var conflicts = Module.GetCombinedDiffFileList(Revision.Guid); if (conflicts.Any()) { // Create a mock commit var rev = new GitRevision(CombinedDiff.Text); dictionary.Add(rev, conflicts); } } } } GitItemStatusesWithParents = dictionary; }