private void updateChangesBrowser(final ChangeInfo changeDetails, final Project project) {
    myRepositoryChangesBrowser.getViewer().setEmptyText("Loading...");
    myRepositoryChangesBrowser.setChangesToDisplay(Collections.<Change>emptyList());
    final GitRepository gitRepository = GerritGitUtil.getFirstGitRepository(project);
    final VirtualFile virtualFile = gitRepository.getGitDir();
    final FilePathImpl filePath = new FilePathImpl(virtualFile);

    String ref = GerritUtil.getRef(changeDetails);

    GerritGitUtil.fetchChange(
        project,
        ref,
        new Callable<Void>() {
          @Override
          public Void call() throws Exception {
            final List<GitCommit> gitCommits;
            try {
              gitCommits =
                  GitHistoryUtils.commitsDetails(
                      project,
                      filePath,
                      new SymbolicRefs(),
                      Collections.singletonList(changeDetails.getCurrentRevision()));
            } catch (VcsException e) {
              throw new RuntimeException(e);
            }
            final GitCommit gitCommit = Iterables.get(gitCommits, 0);

            ApplicationManager.getApplication()
                .invokeLater(
                    new Runnable() {
                      @Override
                      public void run() {
                        myRepositoryChangesBrowser.setChangesToDisplay(gitCommit.getChanges());
                      }
                    });
            return null;
          }
        });
  }