Лицензионные соглашения для соавторов (CLA)
Прежде чем мы сможем принять ваши исправления кода, вам необходимо отправить индивидуальное или корпоративное лицензионное соглашение для авторов (CLA):
- Если вы физическое лицо, которое пишет исходный код, и вы уверены, что интеллектуальная собственность принадлежит вам, отправьте индивидуальное соглашение CLA.
- Если вы работаете в компании, она должна отправить корпоративное лицензионное соглашение, чтобы подтвердить, что вы можете вносить свой вклад в эту клиентскую библиотеку.
Перейдите по одной из двух ссылок выше, чтобы ознакомиться с текстом соответствующего CLA и инструкциями по его подписанию и отправке. После этого мы сможем добавить вас в официальный список участников.
Общие сведения об отправке исправлений
Чтобы внести свой вклад в этот проект, выполните следующие общие шаги:
- Подпишите Лицензионное соглашение для авторов, как описано выше.
- Присоединитесь к группе обсуждения.
- Настройте среду разработки.
- Свяжите каждый набор изменений с проблемой (отчетом об ошибке или запросом на добавление функции) в нашей системе отслеживания ошибок GitHub. Создайте новую проблему, если ее ещё нет, и назначьте ее себе.
- Проверьте код, создайте новую проблему на сайте codereview.appspot.com и завершите процесс проверки кода. Подробные инструкции по всем этим процессам приведены ниже.
- После того как код будет проверен и одобрен, зафиксируйте его. Если вы не являетесь официальным участником, то участник перенесет ваш набор изменений в официальный репозиторий.
Для этого мы используем следующие инструменты и процессы:
- В качестве системы управления версиями мы используем Git.
- В качестве системы сборки и распространения двоичных файлов мы используем Maven.
- Для проверки кода мы используем codereview.appspot.com. (Обратите внимание, что в инструменте codereview.appspot.com термин "issue" означает запрос на проверку кода, а в системе отслеживания ошибок GitHub – запрос на добавление функции или отчет об ошибке.)
Если вы работаете в Eclipse, используйте форматирование кода, заданное в каталоге .settings, который автоматически обрабатывается Eclipse.
Как настроить среду разработки
Требования
- Установите Java 6. Возможно, вам потребуется задать переменную
JAVA_HOME. - Установите Maven. (В этом документе предполагается, что вы знакомы с основными командами Maven.)
- Необязательно: установите Android SDK и задайте для переменной ANDROID_HOME путь к папке, в которую он установлен.
- Установите Git.
Настройка Git
Используйте команду git config, чтобы задать отображаемое имя и адрес электронной почты по умолчанию:
git config --global user.name "YOUR NAME" git config --global user.email "YOUR EMAIL ADDRESS"
Аутентификация в GitHub из Git
Чтобы получить код из GitHub, необходимо пройти аутентификацию в GitHub по протоколу HTTP или SSH. Прежде чем продолжить, ознакомьтесь с инструкциями GitHub по клонированию с помощью HTTPS или SSH. Если вы хотите узнать больше о Git в целом, Pro Git – хороший ресурс.
Проверяю код
Использование HTTPS
Чтобы извлечь репозиторий библиотеки в ветви master, выполните следующую команду:
git clone https://github.com/google/google-api-java-client.git
Использование SSH
Чтобы проверить репозиторий библиотеки в ветке разработки master, убедитесь, что у вас есть доступ на запись в репозиторий GitHub, а затем выполните следующую команду:
git clone git@github.com:google/google-api-java-client.git
Чтобы переключиться на альтернативную ветку, например 1.12:
git checkout --track origin/1.12
Чтобы вернуться к основной ветке, выполните следующую команду:
git checkout master
Чтобы получить последние изменения из репозитория GitHub и обновить локальное рабочее дерево до последнего коммита, выполните следующую команду:
git pull
Maven
Установите сервисы Google Play
При первой настройке проекта необходимо установить файл google-play-services.jar. Вот как это сделать:
- Запустите Eclipse и выберите Window > Android SDK Manager (Окно > Менеджер Android SDK) или введите
androidв командной строке. - Прокрутите список пакетов вниз и выберите Extras (Дополнительно) > Google Play services (Сервисы Google Play).
mvn install:install-file \ -Dfile=$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar \ -DgroupId=com.google.android.google-play-services \ -DartifactId=google-play-services \ -Dversion=1 \ -Dpackaging=jar
Компиляция проекта
mvn clean install
Maven устанавливает скомпилированные двоичные файлы в локальный репозиторий (например, ~/.m2/repository). Поиск двоичных файлов выполняется сначала в этом репозитории, а затем в центральном репозитории Maven.
Примечание. Эта библиотека зависит от google-http-java-client и google-oauth-java-client. Если вы работаете над новой версией всех трех библиотек, которые ещё не опубликованы в центральном репозитории Maven, их нужно компилировать в следующем порядке:
- google-http-java-client
- google-oauth-java-client
- google-api-java-client Компиляция в таком порядке гарантирует, что Maven выберет скомпилированные двоичные файлы для компиляции зависимых библиотек.
Процесс код-ревью
Как скачать скрипт upload.py
Скачайте скрипт upload.py и при необходимости добавьте его в переменную PATH.
При первом запуске upload.py вам будет предложено ввести пароль приложения.
Email (login for uploading to codereview.appspot.com): your_email_address@yourdomain.com Password for your_email_address@yourdomain.com:
Подготовка кода к проверке
Прежде чем отправлять код на проверку, запустите Clirr, чтобы выявить проблемы с обратной совместимостью. Если вы обнаружите ошибки, исправьте их или обновите файл clirr-ignored-differences.xml.
mvn -q clirr:check
Вы также должны запустить инструмент FindBugs, чтобы найти ошибки в коде. Если будут обнаружены ошибки, исправьте их или обновите файл findbugs-exclude.xml. (Обратите внимание, что FindBugs работает очень медленно.)
mvn findbugs:check
Если все тесты пройдены, добавьте изменение в индекс (область подготовки Git):
git add .
Убедитесь, что все добавленные, измененные или удаленные файлы отражены в индексе.
git status
В выходных данных git status найдите раздел Changes to be committed (Изменения, которые будут зафиксированы).
Начинаю код-ревью
Когда все будет готово к проверке, создайте новую проблему на сайте codereview.appspot.com:
upload.py --rev=HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
После внесения дополнительных изменений подготовьте их. Чтобы загрузить новый патч, например для проблемы 123456, выполните следующую команду:
upload.py --rev=HEAD -i 123456
Чтобы посмотреть другие варианты, выполните команду upload.py --help.
Если вы предпочитаете стандартный рабочий процесс GitHub, то, скорее всего, вы создали форк хранилища GitHub и ветвь для новой функции или исправления ошибки. Когда вы отправляете запросы на проверку кода из своего форка, убедитесь, что он синхронизирован с вышестоящим репозиторием. Дополнительную информацию о том, как синхронизировать форк, можно найти в справочном центре GitHub.
Вы также можете использовать upload.py для локально зафиксированных наборов изменений.
upload.py --rev=upstream/master:HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
Проверяющий код
Если вы проверяете код, импортируйте и тестируйте наборы изменений, прежде чем одобрить их, а затем зафиксируйте и отправьте наборы изменений в удаленное хранилище.
Импорт набора изменений
Чтобы вовремя выявлять ошибки, не забывайте переносить последние изменения из удаленного репозитория в рабочее дерево. Убедитесь, что ваше рабочее дерево чистое, а индекс пуст.
Чтобы получить и объединить последние коммиты из удаленного репозитория:
git pull
Чтобы проверить, что находится в рабочем дереве и индексе:
git status
Чтобы импортировать исправление в локальный клон Git, выполните следующие действия:
- Откройте проблему на сайте codereview.appspot.com.
- Найдите нужный патч и нажмите "Скачать необработанные данные" в правом верхнем углу спецификации.
- Нажмите "raw", чтобы получить URL файла для импорта.
- Сохраните файл diff на локальном компьютере, например под именем issue123456.diff.
- Перейдите в локальное рабочее дерево Git и примените diff с помощью команды
patch:
patch -p1 < issue123456.diff
Чтобы убедиться, что вы импортировали правильный diff-файл, выполните команду git diff в рабочем дереве.
Тестирование набора изменений
Чтобы запустить тесты и установить пакет, используйте следующую команду:
mvn clean install checkstyle:check
Подтверждение набора изменений на сайте codereview.appspot.com
В целом, код не может быть отправлен в репозиторий GitHub, пока рецензент кода не убедится, что код готов. В этот момент принято отвечать сообщением "LGTM" (Looks Good To Me).
Фиксация кода
Важно! Перед фиксацией кода перенесите последние изменения в рабочее дерево и обновите его до последней фиксации из репозитория GitHub.
git pull
Если возникнут конфликты, устраните их и убедитесь, что все тесты снова пройдены.
Чтобы зафиксировать код локально:
git commit
Введите сообщение, например следующее (предполагается, что вы исправляете или реализуете проблему № 123, указанную в системе отслеживания ошибок GitHub):
#123: NullPointerException when passing null to processFoo() http://codereview.appspot.com/123456/
Перед первым двоеточием и описанием:
- Если это исправление проблемы в системе отслеживания ошибок, укажите номер ошибки, как показано на примере.
- Если изменение касается определенного филиала, укажите его номер.
- Вы будете
committerэтой фиксации, но укажите автора изменения, отметив его какauthor(--author=<author>).
После описания всегда добавляйте ссылку на проблему на сайте codereview. Эта ссылка важна, потому что без нее нет удобного способа выяснить, какое код-ревью связано с фиксацией, что полезно для ведения истории обсуждения.
Чтобы отправить изменения в хранилище GitHub, выполните следующие действия:
git push
Если во время выполнения команды git push вы получите сообщение об ошибке, в котором говорится, что обновления отклонены (возможно, вы забыли запустить git pull), вот как объединить изменения с последними и отправить их в удаленный репозиторий:
git pull git commit git push
Закрытие проблемы
Не забудьте закрыть проблему в инструменте проверки кода. Вот как это сделать:
- Выберите проблему на сайте codereview.appspot.com.
- Нажмите на значок "X" в левом верхнем углу перед идентификатором.
Отмена набора изменений
Если по какой-то причине вы решите не фиксировать импортированный набор изменений, используйте следующую команду, чтобы избавиться от него. Будьте осторожны: все локальные изменения будут удалены.
git checkout -- .