マスターブランチを削除する方法
カテゴリ

Selenium プロジェクトでは、トランクベース開発を実践しており、そこではtrunk
がリポジトリのデフォルトの git ブランチの通常の名前です。ただし、プロジェクトが GitHub に移行した際、リポジトリは従来のmaster
をデフォルトの git ブランチの名前として使用することに従いました。
Selenium プロジェクトを誰でも歓迎されるさらにインクルーシブな場所にするという意図をもって、デフォルトの git ブランチとしてtrunk
を使用し、切り替え後にmaster
ブランチを削除することが決定されました。この変更により、いくつかの課題が発生しました。このブログ記事では、GitHub リポジトリで同じ変更を行いたい場合に注意すべき点をいくつか指摘します。
リンク切れ
ドキュメント内のコードの特定の部分にリンクすることは一般的であり、そのリンクには通常ブランチ名が含まれています。ドキュメント内でmaster
ブランチ上のファイルへのリンクをダブルチェックしてください。変更後、リンク切れになる可能性があります。
ブランチ名の言及
同様に、ブランチ名は、コードコメント、貢献手順、Issue およびプルリクエストテンプレート、readme など、リポジトリのさまざまな部分で言及されています。これらの場所を確認することを忘れないでください。
GitHub リポジトリバッジ
私たちは皆、できるだけ多くのバッジを追加することで、GitHub リポジトリがどのように動作しているかを示したいと思っています。多くの場合、これらのバッジは、ビルドが実行されたブランチに依存するビルドステータスを報告します。Travis/CircleCI/GitHub Actions バッジが新しいブランチを指していることを確認してください。
継続的インテグレーションのセットアップ
オープンソースでの良い習慣は、ビルドを実行し、テストを実行し、場合によっては自動リリースを実行するための継続的インテグレーションのセットアップを持つことです。今日、CI 構成はファイル(例:Travis の場合は .travis.yml)で行われ、その構成の重要な部分の 1 つは、ビルドを実行する必要があるブランチの名前です。前の点と同様に、新しいブランチ名が CI インテグレーションで適切に構成されていることをダブルチェックしてください。
ビルドスクリプト
Selenium プロジェクトでは、継続的インテグレーションのセットアップを通じて実行されるカスタムビルドスクリプトがいくつかあります。例として、Java、Ruby、Python バインディングのドキュメントを生成するスクリプトがあります。このスクリプトは、ドキュメントを生成するためにコードのブランチ名を知る必要があります。同様の目的を持つスクリプトがある場合は、ブランチ名を変更した後に確認してください。
オープンなプルリクエスト
上記のタスクはすべて、おそらくテキストエディタと、リポジトリ内のすべてのファイルに対する大規模だが注意深い「検索と置換」で実現できるでしょう。簡単に言うと、新しいブランチtrunk
に移行するために私たちが従ったプロセスは次のとおりでした。
master
ブランチに基づいて、trunk
という名前の新しいブランチを作成します。- 前のポイントで説明したすべての項目を実行します。
- これらの変更をコミットしてプッシュします。
master
ブランチを削除します。
それにもかかわらず、予想外のことが 1 つ起こりました。master
ブランチを削除した後、すべてのオープンなプルリクエストがクローズされました。これらはすべてmaster
ブランチをターゲットにしていたため、理にかなっています。したがって、master
ブランチを削除する前に、オープンなプルリクエストをダブルチェックし、必要に応じて、新しいブランチをターゲットにするように編集してください。

言うまでもなく、新しいブランチの名前は、コンテキストと環境に適した任意の名前を使用できます。たとえば、Selenium ウェブサイトのコンテンツを持つリポジトリは、現在、ウェブサイトのソースファイルを持つブランチとしてdev
を使用し、公開される生成された静的ウェブサイトを持つブランチとしてpublish
を使用しています。
これらは、SeleniumHQ GitHub組織下のすべての主要なリポジトリでmaster
ブランチを削除するプロセス中に学んだ教訓です。デフォルトブランチの名前としてmaster
から移行することを決定した場合、これらが役立つことを願っています。
これはもともとhttps://opensource.saucelabs.com/blog/how_to_delete_your_master_branch/に投稿されたものです