def run_watchers():
        #hipalert.send(Alert("Running watchers", level=Alert.DEBUG))
        logger.info("Running watchers")

        plugins = loaded_plugins.enabled_plugins()

        repositories = loaded_plugins.get_repositories(plugins["repositories"])        
        watchers = loaded_plugins.get_watchers(plugins["watchers"])
        tracker = repotracker.RepoTracker();
        tracker.update_identifier("github-Pardot/pardot::", str(datetime.datetime.utcnow().replace(tzinfo=pytz.UTC) - datetime.timedelta(hours = 48)))

        for repository_name, repository_data in repositories.items():
            repository_watchers_by_path = watchers.get(repository_name)
            if repository_watchers_by_path is None:
                continue
            for repository_path, repo_watchers in repository_watchers_by_path.items():
                repository_db_identifier = repository_name
                if repository_path is not None:
                    repository_db_identifier += "::" + repository_path
                def commit_started_callback(repo_commit):
                    if repo_watchers:
                        for repo_watcher in repo_watchers:
                            plugin = repo_watcher.plugin
                            if hasattr(plugin, 'commit_started'):
                                plugin.commit_started(repository_name, repo_commit)
                def commit_finished_callback(repo_commit):
                    if repo_watchers:
                        for repo_watcher in repo_watchers:
                            plugin = repo_watcher.plugin
                            if hasattr(plugin, 'commit_finished'):
                                plugin.commit_finished(repository_name, repo_commit)
                    if repo_commit.identifier:
                        new_identifier = repo_commit.identifier
                        tracker.update_identifier(repository_db_identifier, new_identifier)
                def patch_callback(repo_patch):
                    if repo_watchers:
                        for repo_watcher in repo_watchers:
                            plugin = repo_watcher.plugin
                            if hasattr(plugin, 'patch'):
                                plugin.patch(repository_name, repo_patch)

                last_run_completed = tracker.last_run_completed(repository_db_identifier)
                if repository_data.get("check-every-x-minutes"):
                    now = datetime.datetime.utcnow()
                    if last_run_completed:
                        if (now - last_run_completed) != datetime.timedelta(minutes=repository_data.get("check-every-x-minutes")):
                            #continue;
                            pass;
                try:
                    last_identifier = tracker.last_identifier(repository_db_identifier)
                    repository_data["source"].processSinceIdentifier(last_identifier, 
                                                                     commit_started_callback=commit_started_callback,
                                                                     patch_callback=patch_callback,
                                                                     commit_finished_callback=commit_finished_callback,
                                                                     path=repository_path);

                    tracker.update_last_run_completed(repository_db_identifier, datetime.datetime.utcnow())
                except Exception, e:
                    logger.exception("Exception running repository: %s" % (repository_db_identifier))
dataset/ETHPy150Open SalesforceEng/Providence/providence.py/run_watchers/operator `<` -> `!=`