void (@NotNull Project project, @NotNull Disposable disposable) { project.getMessageBus().connect(disposable).subscribe(GitRepository.GIT_REPO_CHANGE, new GitRepositoryChangeListener() { @Override public void repositoryChanged(@NotNull GitRepository repository) { final VcsAnnotationRefresher refresher = BackgroundTaskUtil.syncPublisher(project, VcsAnnotationRefresher.LOCAL_CHANGES_CHANGED); refresher.dirtyUnder(repository.getRoot()); } }); VcsLogApplicationSettings logSettings = ApplicationManager.getApplication().getService(VcsLogApplicationSettings.class); VcsLogUiProperties.PropertiesChangeListener logSettingsListener = new VcsLogUiProperties.PropertiesChangeListener() { @Override public <T> void onPropertyChanged(VcsLogUiProperties.@NotNull VcsLogUiProperty<T> property) { if (property.equals(CommonUiProperties.PREFER_COMMIT_DATE)) { GitToggleAnnotationOptionsActionProvider.resetAllAnnotations(project, false); } } }; logSettings.addChangeListener(logSettingsListener); Disposer.register(disposable, () -> logSettings.removeChangeListener(logSettingsListener)); }