Exemple #1
0
    def pull_changes(self, repo, username):
        dbrepo = self.__get_repo(repo)
        clone_uri = dbrepo.clone_uri
        if not clone_uri:
            raise Exception("This repository doesn't have a clone uri")

        repo = dbrepo.scm_instance
        try:
            extras = {
                'ip': '',
                'username': username,
                'action': 'push_remote',
                'repository': dbrepo.repo_name,
                'scm': repo.alias,
            }
            Repository.inject_ui(repo, extras=extras)

            if repo.alias == 'git':
                repo.fetch(clone_uri)
            else:
                repo.pull(clone_uri)
            self.mark_for_invalidation(dbrepo.repo_name)
        except:
            log.error(traceback.format_exc())
            raise