void AddStagedList(LibGit2Sharp.StatusEntry filestatus, SelectionRecover backup_selection) { FileStatus status = new FileStatus(); status.Status = filestatus.State.ToString(); status.FilePath = filestatus.FilePath; status.Display = status.FilePath; if ((filestatus.State == LibGit2Sharp.FileStatus.RenamedInIndex) | (filestatus.State == (LibGit2Sharp.FileStatus.RenamedInIndex | LibGit2Sharp.FileStatus.Staged))) { status.Display = string.Format(" {0} -> {1} [{2}%]", filestatus.HeadToIndexRenameDetails.OldFilePath, filestatus.HeadToIndexRenameDetails.NewFilePath, filestatus.HeadToIndexRenameDetails.Similarity); } status.IsSelected = backup_selection.WasSelected(filestatus.FilePath); StagedList.Add(status); PropertyChanged(this, new PropertyChangedEventArgs("StagedList")); }
void RefreshPending() { var filelist = git_.GetModifiedFileList(); var modified_backup = new SelectionRecover(ModifiedList); var staged_backup = new SelectionRecover(StagedList); this.ModifiedList.Clear(); this.StagedList.Clear(); foreach (var filestatus in filelist) { switch (filestatus.State) { case LibGit2Sharp.FileStatus.Ignored: continue; case LibGit2Sharp.FileStatus.Added: goto case LibGit2Sharp.FileStatus.Staged; case LibGit2Sharp.FileStatus.Staged: AddStagedList(filestatus, staged_backup); break; case LibGit2Sharp.FileStatus.Added | LibGit2Sharp.FileStatus.Modified: AddStagedList(filestatus, staged_backup); AddModifiedList(filestatus, modified_backup); break; case LibGit2Sharp.FileStatus.Untracked: goto case LibGit2Sharp.FileStatus.Modified; case LibGit2Sharp.FileStatus.Modified: AddModifiedList(filestatus, modified_backup); break; case LibGit2Sharp.FileStatus.Staged | LibGit2Sharp.FileStatus.Modified: AddModifiedList(filestatus, modified_backup); AddStagedList(filestatus, staged_backup); break; // renamed case LibGit2Sharp.FileStatus.Staged | LibGit2Sharp.FileStatus.RenamedInIndex: AddStagedList(filestatus, staged_backup); break; case LibGit2Sharp.FileStatus.RenamedInIndex: AddStagedList(filestatus, staged_backup); break; case LibGit2Sharp.FileStatus.RenamedInIndex | LibGit2Sharp.FileStatus.Missing: AddStagedList(filestatus, staged_backup); AddModifiedList(filestatus, modified_backup); break; case LibGit2Sharp.FileStatus.RenamedInIndex | LibGit2Sharp.FileStatus.Modified: AddStagedList(filestatus, staged_backup); AddModifiedList(filestatus, modified_backup); break; case LibGit2Sharp.FileStatus.Staged | LibGit2Sharp.FileStatus.RenamedInIndex | LibGit2Sharp.FileStatus.Modified: AddModifiedList(filestatus, modified_backup); AddStagedList(filestatus, staged_backup); break; case LibGit2Sharp.FileStatus.Missing: AddModifiedList(filestatus, modified_backup); break; case LibGit2Sharp.FileStatus.Removed: AddStagedList(filestatus, staged_backup); break; default: System.Diagnostics.Debug.Assert(false); AddLog("Cannot execute for filestatus:" + filestatus.State.ToString()); break; } } if (ModifiedList.Count == 0 && StagedList.Count == 0) { AddLog("Nothing changed"); } }
void AddModifiedList(LibGit2Sharp.StatusEntry filestatus, SelectionRecover backup_selection) { FileStatus status = new FileStatus(); status.Status = filestatus.State.ToString(); status.FilePath = filestatus.FilePath; status.Display = status.FilePath; status.IsSelected = backup_selection.WasSelected(filestatus.FilePath); ModifiedList.Add(status); PropertyChanged(this, new PropertyChangedEventArgs("ModifiedList")); }