GitHubのリポジトリをDeprecatedにするスクリプト
GitHubのリポジトリを別の場所に移す場合、リポジトリまるごと移動できるならrepository transfersを利用するのが正解です。
しかし、既存のリポジトリをmonorepoの一部として取り込む場合はそのようなことができません。リポジトリの履歴はLernaなどではlerna import
で取り込むことができますが、既に作ったリポジトリからリダイレクトさせることができません。
既存のリポジトリを消してしまうと、既に貼ったリンクなどが404になるためあまり良くありませんし、そのままにしておくと紛らわしいです。
そのため、よく取られるのはリポジトリは空にしてDescriptionなどで移動したことを書いておく手法です。
これをやるmove-github-repositoryというツールを書きました。
move-github-repository
move-github-repositoryは、コマンド一発で次のようなことをします。
- リポジトリのdescriptionを更新する
- リポジトリhomepageを移動先のURLに更新する
301_moved_permanently
ブランチを作る- このブランチは移転してことを書いたREADME.mdのみがある
301_moved_permanently
をデフォルトブランチにする- リポジトリをアーカイブにします(read onlyとなる)
これによって既存のブランチは維持されるので、リンクなどは切れません。
追記: リポジトリのアーカイブに対応しました。 IssueやPRなどが出せなくなるread onlyモードとなります。
インストール
npmでインストールできます。
npm install -g move-github-repository
GitHubのTokenと更新後に付けたいdescriptionとhomepageを引数に渡して実行できます。
Usage
$ GH_TOKEN=xxx move-github-repository --description "[[MOVED]]" --homepage http://example.com/new
Options
--description -d Description repository
--homepage -h New URL
Env
GH_TOKEN=xxx move-github-repository --description "[[MOVED]]" --homepage http://example.com/new
Examples
$ GH_TOKEN=xxx move-github-repository --description "[[MOVED]]" --homepage http://example.com/new
サンプル
textlintをmonorepoに移動させていたので、実際に移動させたリポジトリなどは次のような感じです。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。