Index: third_party/gsutil/gslib/addlhelp/dev.py |
diff --git a/third_party/gsutil/gslib/addlhelp/dev.py b/third_party/gsutil/gslib/addlhelp/dev.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..180c66341bcfe163d41d8c1361be3863e993d420 |
--- /dev/null |
+++ b/third_party/gsutil/gslib/addlhelp/dev.py |
@@ -0,0 +1,148 @@ |
+# -*- coding: utf-8 -*- |
+# Copyright 2012 Google Inc. All Rights Reserved. |
+# |
+# Licensed under the Apache License, Version 2.0 (the "License"); |
+# you may not use this file except in compliance with the License. |
+# You may obtain a copy of the License at |
+# |
+# http://www.apache.org/licenses/LICENSE-2.0 |
+# |
+# Unless required by applicable law or agreed to in writing, software |
+# distributed under the License is distributed on an "AS IS" BASIS, |
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+# See the License for the specific language governing permissions and |
+# limitations under the License. |
+"""Additional help about contributing code to gsutil.""" |
+ |
+from __future__ import absolute_import |
+ |
+from gslib.help_provider import HelpProvider |
+ |
+_DETAILED_HELP_TEXT = (""" |
+<B>OVERVIEW</B> |
+ We're open to incorporating gsutil code changes authored by users. Here |
+ are some guidelines: |
+ |
+ 1. Before we can accept code submissions, we have to jump a couple of legal |
+ hurdles. Please fill out either the individual or corporate Contributor |
+ License Agreement: |
+ |
+ - If you are an individual writing original source code and you're |
+ sure you own the intellectual property, |
+ then you'll need to sign an individual CLA |
+ (https://cla.developers.google.com/about/google-individual). |
+ - If you work for a company that wants to allow you to contribute your |
+ work to gsutil, then you'll need to sign a corporate CLA |
+ (https://cla.developers.google.com/about/google-corporate) |
+ |
+ Follow either of the two links above to access the appropriate CLA and |
+ instructions for how to sign and return it. Once we receive it, we'll |
+ add you to the official list of contributors and be able to accept |
+ your patches. |
+ |
+ 2. If you found a bug or have an idea for a feature enhancement, we suggest |
+ you check https://github.com/GoogleCloudPlatform/gsutil/issues to see if it |
+ has already been reported by another user. From there you can also |
+ subscribe to updates to the issue by clicking the "Watch thread" button at |
+ the bottom of the page. |
+ |
+ 3. It's usually worthwhile to send email to gs-team@google.com about your |
+ idea before sending actual code. Often we can discuss the idea and help |
+ propose things that could save you later revision work. |
+ |
+ 4. We tend to avoid adding command line options that are of use to only |
+ a very small fraction of users, especially if there's some other way |
+ to accommodate such needs. Adding such options complicates the code and |
+ also adds overhead to users having to read through an "alphabet soup" |
+ list of option documentation. |
+ |
+ 5. While gsutil has a number of features specific to Google Cloud Storage, |
+ it can also be used with other cloud storage providers. We're open to |
+ including changes for making gsutil support features specific to other |
+ providers, as long as those changes don't make gsutil work worse for Google |
+ Cloud Storage. If you do make such changes we recommend including someone |
+ with knowledge of the specific provider as a code reviewer (see below). |
+ |
+ 6. You can check out the gsutil code from the GitHub repository: |
+ |
+ https://github.com/GoogleCloudPlatform/gsutil |
+ |
+ To clone a read-only copy of the repository: |
+ |
+ git clone git://github.com/GoogleCloudPlatform/gsutil.git |
+ git submodule update --init --recursive |
+ |
+ To push your own changes to GitHub, click the Fork button on the |
+ repository page and clone the repository from your own fork. |
+ |
+ 7. The gsutil git repository uses git submodules to pull in external modules. |
+ After checking out the repository, make sure to also pull the submodules |
+ by entering into the gsutil top-level directory and run: |
+ |
+ git submodule update --init --recursive |
+ |
+ 8. Please make sure to run all tests against your modified code. To |
+ do this, change directories into the gsutil top-level directory and run: |
+ |
+ ./gsutil test |
+ |
+ The above tests take a long time to run because they send many requests to |
+ the production service. The gsutil test command has a -u argument that will |
+ only run unit tests. These run quickly, as they are executed with an |
+ in-memory mock storage service implementation. To run only the unit tests, |
+ run: |
+ |
+ ./gsutil test -u |
+ |
+ If you made changes to boto, please run the boto tests. For these tests you |
+ need to use HMAC credentials (from gsutil config -a), because the current |
+ boto test suite doesn't import the OAuth2 handler. You'll also need to |
+ install some python modules. Change directories into the boto root |
+ directory at third_party/boto and run: |
+ |
+ pip install -r requirements.txt |
+ |
+ (You probably need to run this command using sudo.) |
+ Make sure each of the individual installations succeeded. If they don't |
+ you may need to run the install command again. |
+ |
+ Then ensure your .boto file has HMAC credentials defined (the boto tests |
+ don't load the OAUTH2 plugin), and then change directories into boto's |
+ tests directory and run: |
+ |
+ python test.py unit |
+ python test.py -t s3 -t gs -t ssl |
+ |
+ 9. Please consider contributing test code for your change, especially if the |
+ change impacts any of the core gsutil code (like the gsutil cp command). |
+ |
+ 10. When it's time to send us code, please use the Rietveld code review tool |
+ rather than simply sending us a code patch. Do this as follows: |
+ |
+ - Check out the gsutil code from your fork of the gsutil repository and |
+ apply your changes. |
+ - Download the "upload.py" script from |
+ https://github.com/rietveld-codereview/rietveld |
+ - Run upload.py from your git directory with the changes. |
+ - Click the codereview.appspot.com link it generates, click "Edit Issue", |
+ and add mfschwartz@google.com as a reviewer, and Cc gs-team@google.com. |
+ - Click Publish+Mail Comments. |
+ - Once your changes are accepted, submit a pull request on GitHub and we |
+ will merge your commits. |
+""") |
+ |
+ |
+class CommandOptions(HelpProvider): |
+ """Additional help about contributing code to gsutil.""" |
+ # TODO: gsutil-beta: Add lint .rc file and linting instructions. |
+ |
+ # Help specification. See help_provider.py for documentation. |
+ help_spec = HelpProvider.HelpSpec( |
+ help_name='dev', |
+ help_name_aliases=[ |
+ 'development', 'developer', 'code', 'mods', 'software'], |
+ help_type='additional_help', |
+ help_one_line_summary='Contributing Code to gsutil', |
+ help_text=_DETAILED_HELP_TEXT, |
+ subcommand_help_text={}, |
+ ) |