コード例 #1
0
ファイル: setup-mirror.py プロジェクト: Fiware/tools.Webhook
def setup_mirror(repo_clone_url, mirror_remote_url, token_file, pr_hook_url):

    directory = os.path.dirname(os.path.abspath(__file__))

    with open(directory+"/conf.yaml", "r") as f:
        config = yaml.load(f)
        config["workspace"] = os.path.expanduser(config["workspace"])
        pr_hook_url = config["pr_hook_url"]

    mirror_user_repo_name = get_user_repo_from_github_url(mirror_remote_url)
    clone_user_repo_name = get_user_repo_from_github_url(repo_clone_url)
    repository_folder = "{}/{}_{}".format(config["workspace"],
                                          mirror_user_repo_name['user'],
                                          mirror_user_repo_name['repo'])

    g = GithubMirrorUtils(token_file)

    if not os.path.exists(repository_folder):

        g.create_update_mirror_repo(mirror_user_repo_name['user'],
                                    mirror_user_repo_name['repo'],
                                    repo_clone_url,
                                    pr_hook_url)

        os.makedirs(repository_folder)

        if not ("source_repo_urls" in config):
            config["source_repo_urls"] = {}

        config["source_repo_urls"][repo_clone_url] = {"mirror_remote_url":
                                                      mirror_remote_url}

        with open(directory+"/conf.yaml", "w") as f:
            yaml.dump(config, f, default_flow_style=False)

    call(["git", "clone", "--mirror", repo_clone_url, repository_folder])

    with cd(repository_folder):
        call(["git", "remote", "set-url", "--push", "origin",
              mirror_remote_url])

        call(["git", "fetch", "-p", "origin"])
        call(["git", "push", "--mirror"])

    g.recreate_releases(clone_user_repo_name['user'],
                        clone_user_repo_name['repo'],
                        mirror_user_repo_name['user'],
                        mirror_user_repo_name['repo'])
コード例 #2
0
def recreate_releases(token_file):

    directory = os.path.dirname(os.path.abspath(__file__))

    with open(directory+"/conf.yaml", "r") as f:
        config = yaml.load(f)
        config["workspace"] = os.path.expanduser(config["workspace"])

    for repo_clone_url in config['source_repo_urls']:
        mirror_remote_url =\
            config['source_repo_urls'][repo_clone_url]["mirror_remote_url"]
        mirror_user_repo_name =\
            get_user_repo_from_github_url(mirror_remote_url)
        clone_user_repo_name = get_user_repo_from_github_url(repo_clone_url)

        g = GithubMirrorUtils(tokenfile=token_file)
        g.recreate_releases(clone_user_repo_name['user'],
                            clone_user_repo_name['repo'],
                            mirror_user_repo_name['user'],
                            mirror_user_repo_name['repo'])