GitScc.GitRepository.GitFileEventUpdate C# (CSharp) Method

GitFileEventUpdate() private method

This is not very dry.. but It seems to cause a bunch of issues opening repos so fast.
private GitFileEventUpdate ( ) : Task
return Task
        private async Task GitFileEventUpdate()
        {
            using (await _gitStatusMutex.LockAsync())
            {
                Debug.WriteLine("Git File Event Update");
                bool supressBranchEvent = false;
                var files = new Dictionary<string, GitFile>();
                Repository repository = null;
                try
                {
                    //repository = _statusRepository;
                    repository = GetRepository();
                    files = GetCurrentChangedFiles();

                    //logic getting complicated time to break it out
                    if (_savedState.Operation != repository.Info.CurrentOperation)
                    {
                        _savedState.Operation = repository.Info.CurrentOperation;
                        _savedState.Sha = null;
                        _savedState.BranchName = null;
                    }

                    if (string.IsNullOrWhiteSpace(_savedState.Sha) ||
                        !string.Equals(_savedState.Sha, repository.Head.Tip.Sha))
                    {
                        _savedState.Sha = repository.Head.Tip.Sha;
                        FireCommitShaChangedEvent(_savedState.Sha);
                    }

                    if (string.IsNullOrWhiteSpace(_savedState.BranchName) ||
                        !string.Equals(_savedState.BranchName, repository.Head.FriendlyName))
                    {
                        var newBranchName = string.IsNullOrWhiteSpace(repository.Head.FriendlyName)
                            ? "master"
                            : repository.Head.FriendlyName;
                        if (string.Equals(_savedState.BranchName, newBranchName))
                        {
                            supressBranchEvent = true;
                        }
                        else
                        {
                            _savedState.BranchName = newBranchName;
                            _branchDisplayName = null;
                        }

                        if (!supressBranchEvent)
                        {
                            FireBranchChangedEvent(_savedState.BranchName);
                        }

                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Error In GetCurrentChangedFiles: " + ex.Message);
                    Thread.Sleep(2000);
                }
                finally
                {
                    repository?.Dispose();
                }
                 _changedFiles = files;
                FireFileStatusUpdateEvent(files.Values.ToList());
            }
        }