public GitRepository(string directory)
{
_gitDirectory = Repository.Discover(directory);
_savedState = new GitHeadState();
_statusRepository = GetRepository();
this.workingDirectory = _statusRepository.Info.WorkingDirectory;
_repositoryPath = _statusRepository.Info.Path;
_objectPath = _repositoryPath + "objects\\";
//_cachedBranchOperation = CurrentOperation.None;
Refresh();
_gitEventObservable = Observable.FromEventPattern(ev => _gitfileEvent += ev, ev => _gitfileEvent -= ev)
.Throttle(TimeSpan.FromMilliseconds(2000));
_gitEventObservable.Subscribe(x => Task.Run(async () => await DecodeGitEvents()));
_fileChangedEventObservable = Observable.FromEventPattern(ev => _fileEvent += ev, ev => _fileEvent -= ev)
.Throttle(TimeSpan.FromMilliseconds(250));
_fileChangedEventObservable.Subscribe(x => Task.Run(async () => await FileChangedEvent()));
}