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); } }