/// <summary>Update status.</summary> public void Refresh() { StatusData status; var parameters = new QueryStatusParameters(); if (Repository.Monitor != null) { using (Repository.Monitor.BlockNotifications( RepositoryNotifications.IndexUpdated, RepositoryNotifications.WorktreeUpdated)) { status = Repository.Accessor.QueryStatus.Invoke(parameters); } } else { status = Repository.Accessor.QueryStatus.Invoke(parameters); } var stagedRoot = BreakIntoTree(status.StagedFiles, StagedStatus.Staged); var unstagedRoot = BreakIntoTree(status.UnstagedFiles, StagedStatus.Unstaged); bool m1, m2, m3; lock (SyncRoot) { m1 = Merge(_stagedPlainList, _stagedRoot, status.StagedFiles, stagedRoot); m2 = Merge(_unstagedPlainList, _unstagedRoot, status.UnstagedFiles, unstagedRoot); m3 = _stagedAddedCount != status.StagedAddedCount || _stagedModifiedCount != status.StagedModifiedCount || _stagedRemovedCount != status.StagedRemovedCount || _unmergedCount != status.UnmergedCount || _unstagedUntrackedCount != status.UnstagedUntrackedCount || _unstagedModifiedCount != status.UnstagedModifiedCount || _unstagedRemovedCount != status.UnstagedRemovedCount; if (m3) { _stagedAddedCount = status.StagedAddedCount; _stagedModifiedCount = status.StagedModifiedCount; _stagedRemovedCount = status.StagedRemovedCount; _unmergedCount = status.UnmergedCount; _unstagedUntrackedCount = status.UnstagedUntrackedCount; _unstagedModifiedCount = status.UnstagedModifiedCount; _unstagedRemovedCount = status.UnstagedRemovedCount; } if (m1 || m2 || m3) { InvokeChanged(); } } }
public Command GetQueryStatusCommand(QueryStatusParameters parameters) { Assert.IsNotNull(parameters); var args = new List<ICommandArgument>(7); args.Add(StatusCommand.Porcelain()); args.Add(StatusCommand.UntrackedFiles(parameters.UntrackedFilesMode)); args.Add(StatusCommand.NullTerminate()); if(_gitCLI.GitVersion >= SubmodulesStatusArgVersion) { if(parameters.IgnoreSubmodulesMode != StatusIgnoreSubmodulesMode.Default) { args.Add(StatusCommand.IgnoreSubmodules(parameters.IgnoreSubmodulesMode)); } } if(!string.IsNullOrEmpty(parameters.Path)) { args.Add(StatusCommand.NoMoreOptions()); args.Add(new PathCommandArgument(parameters.Path)); } return new StatusCommand(args); }