private void LoadGitItemStatuses(IReadOnlyList <GitItemStatus> gitItemStatuses) { GitStash gitStash = Stashes.SelectedItem as GitStash; if (gitStash == _currentWorkingDirStashItem) { // FileStatusList has no interface for both worktree<-index, index<-HEAD at the same time // Must be handled when displaying var headId = Module.RevParse("HEAD"); var headRev = new GitRevision(headId); var indexRev = new GitRevision(ObjectId.IndexId) { ParentIds = new[] { headId } }; var workTreeRev = new GitRevision(ObjectId.WorkTreeId) { ParentIds = new[] { ObjectId.IndexId } }; var indexItems = gitItemStatuses.Where(item => item.Staged == StagedStatus.Index).ToList(); var workTreeItems = gitItemStatuses.Where(item => item.Staged != StagedStatus.Index).ToList(); Stashed.SetStashDiffs(headRev, indexRev, ResourceManager.Strings.Index, indexItems, workTreeRev, ResourceManager.Strings.Workspace, workTreeItems); } else { var firstId = Module.RevParse(gitStash.Name + "^"); var selectedId = Module.RevParse(gitStash.Name); var firstRev = firstId == null ? null : new GitRevision(firstId); var secondRev = selectedId == null ? null : new GitRevision(selectedId) { ParentIds = new[] { firstId } }; Stashed.SetDiffs(firstRev, secondRev, gitItemStatuses); } Loading.Visible = false; Loading.IsAnimating = false; Stashes.Enabled = true; refreshToolStripButton.Enabled = true; }