LoginSignup
0

More than 3 years have passed since last update.

対象githubアカウントの、全てのリポジトリから、指定したCollaboratorsを削除する。

Last updated at Posted at 2019-07-23

対象githubアカウントの、全てのリポジトリから、指定したCollaboratorsを削除する。

こんにちは,Rinと申します。

今回は、githubアカウント内の全てのリポジトリから同一Collaboratorsを一括削除するスクリプトを作成しました。
社内共有しているアカウントからメンバーの離脱があった場合などに有効かと思います。
(自分が退職するので、Collaboratorsを手動で外すのが面倒で作成しましたw)

詳しくはこちらのGithubをご確認ください。

全体像

remove.php

 /**
     * GLOBAL
     * gitアカウントのメールアドレス
     * ログインパスワード
     * githubのアカウント名
     * 削除したいユーザー
     * を入力してください。
     */
    $Email = '';
    $PASS = '';
    $USER = '';
    $DELTE_USER = '';


    /**
     * 下記のAPIを実行し、api.jsonを作成してください。別途アクセストークンが必要です。
     * curl  "https://api.github.com/user/repos?access_token={token}&per_page=100&page=1&sort=created" > api.json
     */

    $url = './api.json';
    $json = file_get_contents($url);
    $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
    $arr = json_decode($json,true);
    echo $count = count($arr);


    for ($i = 0; $i < $count; ++$i) {
        $repoName = $arr[$i]['name'];

        $cmd = "curl -X DELETE -u $Email:$PASS 'https://api.github.com/repos/$USER/$repoName/collaborators/$DELTE_USER'";
        echo $repoName;
        echo exec($cmd);
    }

使い方

まず始めにGithubのsettingからAPIKEYを作成します。
その際にSelect scopesのrepoをチェックしておいてください。
img.png

アクセストークンを入手したら下記コマンドを実行しapi.jsonを作成します。

.bash
curl  "https://api.github.com/user/repos?access_token={token}&per_page=100&page=1&sort=created" > api.json

remove.phpの変数を指定します。

remove.php
$Email = 'hoge@gmail.com';
$PASS = 'password';
$USER = 'MYACCOUNT';
$DELTE_USER = 'user_id';

remove.phpを実行します。

.bash
php remove.php

留意点

  • リポジトリは最大で、100個までしか取得できないようです。
    100個以上のリポジトリを取得する場合は、下記の様に別途追加のjsonファイルを生成し、
    ファイルを指定して再度PHPを実行する必要があります。
.bash

curl  "https://api.github.com/user/repos?access_token={token}&per_page=100&page=2&sort=created" > api_2.json

remove.php
$url = './api_2.json';
  • organizationアカウントについて
    このスクリプトは通常のuserアカウントで動作を保証していますが、おそらく、
    下記のAPIを使用すれば同様のことが可能だと思います。(検証はしておりません。)
    参照: GitHub Developer
.bash

curl  "https://api.github.com/orgs/repos?access_token={token}&per_page=100&page=1&sort=created" > api.json

ハマりどころ

アクセストークンを使用した場合、-uオプションなどで、ユーザを指定する必要ありません。
(むしろ指定すると、うまく取得できませんでした。)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0