Example #1
0
        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;
        }