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\\";
            //using (var repository = GetRepository())
            //{
            //    this.workingDirectory = repository.Info.WorkingDirectory;
            //    repositoryPath = repository.Info.Path;
            //}

            _cachedBranchOperation = CurrentOperation.None;
            //_changesetManager = new GitChangesetManager();
            //_lastTipId = repository.Head.Tip.sha;
            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()));
        }
        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()));

        }