public void OpenRepositoryAt(Path path)
        {
            DisposeWatcher();

            var repositoryRoot = FindTopLevelDirectory(path);

            Git = new GitApplication(repositoryRoot ?? path);
            RepositoryDirectory = BaseDirectory.Combine(".git");
            IsGitRepository = !ReferenceEquals(repositoryRoot, null);

            if (!IsGitRepository)
                Log.Info("Directory {0} is not in a Git working tree", path);
            else
            {
                Log.Debug("Found Git repository at {0}", repositoryRoot);
                CreateFileWatcher();
            }

            // Notify everyone that the repository has changed
            OnRepositoryChanged(null);
        }
        public void DisplayUnstagedChangesAsync(Path file)
        {
            var command = new Diff
            {
                ViewInTool = true,
                FilePath = file.GetRelativeTo(BaseDirectory).ActualPath
            };

            Git.ExecuteAsync(command);
        }