Example #1
0
function work($scope, $username, $repository, $developer)
{
    // Get some basic data
    $forks = get_forks($username, $repository);
    $collaborators = get_collaborators($username, $repository);
    if ($forks === false || $collaborators === false) {
        echo "Error: failed to retrieve forks or collaborators\n";
        return 1;
    }
    switch ($scope) {
        case 'collaborators':
            $remotes = array_intersect_key($forks, $collaborators);
            break;
        case 'organisation':
            $remotes = array_intersect_key($forks, get_organisation_members($username));
            break;
        case 'contributors':
            $remotes = array_intersect_key($forks, get_contributors($username, $repository));
            break;
        case 'forks':
            $remotes = $forks;
            break;
        default:
            show_usage();
    }
    if (file_exists('.git')) {
        add_remote($username, $repository, isset($collaborators[$developer]));
    } else {
        clone_repository($username, $repository, isset($collaborators[$developer]));
    }
    // Add private security repository for developers
    if ($username == 'phpbb' && $repository == 'phpbb3' && isset($collaborators[$developer])) {
        run("git remote add {$username}-security " . get_repository_url($username, "{$repository}-security", true));
    }
    // Skip blessed repository.
    unset($remotes[$username]);
    foreach ($remotes as $remote) {
        add_remote($remote['username'], $remote['repository'], $remote['username'] == $developer);
    }
    run('git remote update');
}
function clone_repositories($repository_list)
{
    foreach ($repository_list as $repository) {
        clone_repository($repository);
    }
}