gsutil へのコードの投稿

概要

Google では、ユーザーが作成した gsutil のコードの変更を受け付けています。以下では、いくつかのガイドラインを説明します。

  1. Google では、送信されたコードを承認する前に、いくつかの法的な問題を解決しなければなりません。個人用または法人用の投稿者使用許諾契約に記入してください。

    上記のいずれかのリンクをクリックして該当する CLA を取得し、署名と返信の方法を確認してください。Google で署名入りの CLA を受領後、投稿者の公式リストに追加されます。この段階でパッチの送信が可能になります。

  2. コードのバグを見つけた場合や、機能強化のアイデアがある場合は、https://github.com/GoogleCloudPlatform/gsutil/issues で別のユーザーが同じ報告をすでに行っていないかどうか確認してください。このリンクで、問題の更新情報を購読できます。

  3. GitHub に問題が投稿されていない場合には、実際のコードを送信する前にアイデアを投稿してください。以降の改訂作業をスムーズに進めるため、頂いたアイデアを Google 検討する場合があります。

  4. 少数のユーザーしか利用しないコマンドライン オプションの追加はしないようにしています。特に、他に解決策がある場合には、このような修正は行いません。このようなオプションを追加することで、コードが複雑になります。また、オプションのドキュメントのリストも紛らわしくなるため、リストを確認するユーザーの負担が増えることになります。

  5. gsutil には Cloud Storage 固有の機能が多数ありますが、他のクラウド ストレージ プロバイダでも使用できます。他のプロバイダに固有の gsutil サポート機能の変更に対して、その変更が Cloud Storage での gsutil の動作を悪化させない限り、Google では変更を受け付けています。このような変更を行う場合には、特定のプロバイダに精通している方をコード レビューア(以下を参照)として追加することをおすすめします。

  6. gsutil のコードは GitHub レポジトリで確認できます。

    https://github.com/GoogleCloudPlatform/gsutil
    

    レポジトリの読み取り専用コピーを複製するには:

    git clone git://github.com/GoogleCloudPlatform/gsutil.git
    

    独自の変更を GitHub に送信する場合には、リポジトリ ページで [Fork] ボタンをクリックして、自身のフォークからリポジトリを複製してください。

  7. gsutil git リポジトリは、git サブモジュールを使用して外部モジュールを取り込みます。リポジトリを確認したら、gsutil トップレベル ディレクトリに移動して次のコマンドを実行し、サブモジュールも取得してください。

    git submodule update --init --recursive
    
  8. 変更したコードに対しては、すべてのテストを行ってください。gsutil トップレベル ディレクトリに移動して、次のコマンドを実行してください。

    ./gsutil test
    

    上記のテストでは、多くのリクエストを本番環境のサービスに送信するため、完了までに時間がかかります。gsutil test コマンドの -u 引数を使用すると、単体テストだけを実行できます。このテストは、メモリ内に実装した仮のストレージ サービスで実行されるため、迅速に行うことができます。単体テストを実行するには、次のコマンドを実行します。

    ./gsutil test -u
    

    boto に変更を行った場合には、boto のテストを実行します。現在の boto テストスイートでは OAuth2 ハンドラーをインポートできないため、このテストでは HMAC 認証情報を使用する必要があります(gsutil config -a で取得してください)。また、python モジュールのインストールも必要です。boto root ディレクトリ(third_party/boto)に移動して、次のコマンドを実行します。

    pip install -r requirements.txt
    

    このコマンドを実行するために sudo が必要になる場合があります。個々のインストールが成功していることを確認します。成功していない場合は、インストール コマンドの再実行が必要になる場合があります。

    .boto ファイルに HMAC 認証情報が定義されていることを確認して(boto テストでは OAUTH2 プラグインを読み込みません)、boto のテスト ディレクトリに移動して、次のコマンドを実行します。

    python test.py unit
    python test.py -t s3 -t gs -t ssl
    
  9. 特に、gsutil のコアコード(gsutil cp コマンドなど)に影響がある場合には、変更に対するテストコードの投稿をよく検討してください。

  10. GitHub リポジトリのルートで、構成ファイルを使用して yapf リンターを実行します。

    yapf -irp .

  11. Google にコードを送信するときは、gsutil GitHub リポジトリに PR を送信してください。GitHub PR の作成については、この GitHub ヘルプ ドキュメントをご覧ください。