👻
GitHub のリポジトリを掃除しよう
tl;dr
- 振り返りの一環でスキルの再チェック
- GitHub の掃除をしながら GitHub CLI gh を使いこなす
リポジトリを掃除する
主な目的や効能
- 要らないものを捨てる(archive or delete)
- 整ってないものを整える
- 見逃していたものを見つける
- ちょっとしたスキルアップ(gh コマンドの使い方や最新化)
手順
省略: gh コマンドのインストールやログイン
- gh コマンドは GitHub CLI のこと
- インストールはバージョンマネージャー経由にすると楽
gh auth login
# active user の確認
gh auth status
# ユーザー切り替え(個人のアカウントとは別に EMU などを利用している時に便利)
gh auth switch
gh コマンドでリポジトリ一覧を取得する
gh repo list
-
Showing 30 of 137 repositories inのように出たら全部リストできていない
リポジトリ一覧を最大 1000 件まで取得する
gh repo list --limit 1000
-
UPDATEDが年単位のものはアーカイブを検討する -
archivedになっているものは削除を検討する
余談:アーカイブとフォークのフィルター
gh repo list --archived
gh repo list --fork
# archived ではないのは --no-archived だが、fork ではないのは --source
gh repo list --no-archived --source
気を取り直して現在有効なリポジトリを一覧
gh repo list --no-archived --source --limit 1000
# 毎回打つのは面倒なので alias にして楽をする
gh alias list
gh alias set 'repo mine' 'repo list --no-archived --source --limit 1000'
gh repo mine
各リポジトリの掃除を検討する
-
DESCRIPTIONには説明を追加する -
privateとpublicのバランスを考える -
UPDATEDが古いものはメンテナンスを検討する
# リポジトリを指定してブラウザで開く
gh browse --repo officel/zenn
# アーカイブする
gh repo archive my/old-repo
Topics を活用する(今日の本題)
- リポジトリに Topics を設定しておくと、あとで探しやすくなる。整理するのにも使える
- ChatGPT に聞いたら間違いばっかりで、仕方がないのでシェルを書いた
test.sh
#! /bin/env bash
# Repositories owner (user or organization). Empty means current user.
SHOPT_OWNER=""
# Repository visibility: none or --visibility="PUBLIC|PRIVATE|INTERNAL"
SHOPT_VISIBILITY=""
# SHOPT_VISIBILITY="--visibility=public"
# SHOPT_VISIBILITY="--visibility=private"
# SHOPT_VISIBILITY="--visibility=internal"
# Filter by topic name. required.
FILTER_TOPIC="terraform"
gh repo list $SHOPT_OWNER $SHOPT_VISIBILITY -L 1000 --json name,visibility,repositoryTopics \
| jq -r '.[]
| select(
((.repositoryTopics // []) | any(.name == "'$FILTER_TOPIC'"))
)
| .'
- いったん満足した
- jq 部分の改行方法や、環境変数の組み込み方などを再整理できた
- で、調べている最中に、topics を指定してリストできることに気がついた
gh repo mine --topic terraform
まとめ
- GitHub のリポジトリの定期的な掃除をしよう
- gh コマンドを使うと楽
- 掃除のついでにドキュメントを確認したりブログ書いたりスキルアップしたりしよう
Discussion
本文には書かなかったけど、アイコンは 👻GHost ですw