Внесение изменений в код

You are viewing an old version of this article. View the current version here.

Эта страница содержит главные принципы и процедуры для внесения изменений в код. Если у вас есть любые вопросы мы ждем их в MariaDB-разработчики рассылке или на #maria IRC канале Freenode. А еще несколько e-mail адресов и других мест вы можете найти тут

Главная информация о внесении изменений в код MariaDB (для разработчиков и не только) может быть найдена на странице Внесение изменений в проект MariaDB.

Как найти наш проект и начать уже разрабатывать что-нибудь

У нас есть множество открытых для разработки проектов для MariaDB в которых вы можете поучаствовать(в дополнение к тем что вы сами придумаете)

  • Мы используем JIRA для управления проектом MariaDB. Перейдите по ссылке http://mariadb.org/jira и кликните "Projects" чтобы получить наш проект MariaDB. еще можете поискать там неисправленные и незанятые проблемы, если это то что вам интересно. Некоторые уязвимости имеют спонсоров, и вы можете получить плату за исправление!
  • Подписывайтесь на MariaDB-разработчики рассылку пишите на maria-developers \сабака\ lists.launchpad.net и предлагайте те задачи которые нужны именно вам. Пожалуйста включите ваш опыт, ваши знания исходников MariaDB и то что вы знаете о использовании MySQL/MariaDB в рассылку, именно так мы узнаем какие задачи можно предложить вам.
  • Если вы первый раз в нашем проекте ознакомьтесь с Suggested Development. Эти проекты могут стать хорошим стартом.
  • Вступайте в irc:irc.freenode.net/maria на Freenode IRC и вносите свои предложения.

Если у вас есть какие то идеи отправляйте их сюда JIRA чтобы другие MariaDB-разработчики могли их прокомментировать и предложить как применить их к делу. Вы так же можете так же использовать maria-developers список для этого.

MariaDB исходники теперь есть и на Github: Исходники на Github. Смотри Использование Git. Информация ниже устарела и будет переписана когда дойдут руки.

Предварительные требования

Вам нужно иметь Bazaar для контроля версий.

Установка логина для Bazaar

  • Получите launchpad аккаунт на Регистрация на Launchpad
  • Когда вы войдете, установите SSH keys
    • Кликните на ваше имя (верхний правый угол)
    • Нажмите Change Details ссылку (сверху справа)
    • Нажмите SSH Keys кнопку (центр страницы)
    • Загрузите ваш публичный SSH ключ (Как получить публичный ключ?)
  • Регистрация при помощи launchpad с вашей командной строки: bzr launchpad-login [Ваш-логин-id]

Получение кода MariaDB

  1. Первым делом, получаем чистую копию MariaDB-кода (для некоторых, быстрей будет использовать инструкции из секции "Source Tree Tarball").
  1. Однажды сделав чистую копию, создайте рабочую копию для ваших изменений:
cd $maria-repo # ex: ~/repos/maria
bzr branch trunk maria-fix-bugNNNNNN
cd maria-fix-bugNNNNNN

Совет: Используйте понятные имена вроде maria-fix-bugNNNNNN (где NNNNNN это баг # конечно).

  1. Теперь вы должны быть готовы к Компиляции MariaDB. Это хорошая идея скомпилировать на этом этапе чтобы подтвердить что ваше дерево исходников готово к активным действиям во время работы . . . перед тем как делать что либо.

Следующие страницы могут помочь тебе получить и запустить MariaDB из исходников:

Проведение тестов

MariaDB обвес тестировщика содержится в ./mysql-test/ подпапки нашего дерева исходников. В ней находятся две подпапки которым ты, ловец багов, должен уделить внимание: t/ подпапка и r/ папка(для "тестов" и "результатов" соответственно) Будьте внимательны, проверяйте и смотрите результаты если ваш баг уже был протестирован или все еще тестируется.

Все тесты вы можете найти в t/ папке. Откройте файл который описывает ваш функционал(или добавьте новый файл) и добавьте команды которые воспроизведут баг или проверят новую фичу.

Например, тест ниже создает новую тестовую таблицу "t1"; показывает результат выражения "CREATE TABLE" выражения; и наконец мы очищаем результаты теста удаляя эту тестовую таблицу:

#
# Bug #XXXXXX: INET_ATON() returns signed, not unsigned
#
create table t1 select INET_ATON('255.255.0.1') as `a`;
show create table t1;
drop table t1;

При добавлении вашего теста, сначала вспомним что твоего теста надо будет позже переписать выходной файл.(и описать ожидаемые будущие последствия в выходном в файле конечно) Теперь время что-нибудь сделать.

Неплохо бы изучить те тесты что уже есть, чтобы понять каким должен быть ваш тест.

Мы всегда отслеживаем более подходящие тесты, и если вы создали тест или улучшили существующий, пожалуйста загрузите его в "private" папку на наш FTP сервер и когда загрузите, стукните нам в IRC или пришлите сообщение в нашу MariaDB-разработчики рассылку чтобы дать нам знать о этом событии.

Редактирование и добавление вашего кода.

С рабочей версией, уже можно начать делать изменения в вашей локальной ветке, коммитить код регулярно в вашу локальную "рабочую" копию репозитария; чувствуйте себя свободно, легко и часто делая коммиты так как сможете сформулировать ваш вклад позже, когда будете выполнять команду "push" и задавать представление.

cd $maria-repo/maria-fix-bugNNNNNN
# Сделаны какие-то изменения
bzr commit -m "Merge comment"

Перед тем как провести публикацию завершенной работы, нужно подтвердить что ваша ветка работает как ожидается, прогнать тесты и получить их результаты.

Чтобы разрешить другим смотреть на твои коммиты, надо сконфигурировать Bazaar чтобы посылать письма на коммиты 'сабака' mariadb 'точка' org список email'ов

Тестирование вашей ветки

Убедитесь, что у вас есть по установлен libtool 1.5.22 (скачать libtool можно тут).

Первым делом проверьте что все тесты пройдены (помните те тесты которые мы проходили ранее? Могут быть ошибки. А если все хорошо, то всегда можно мгновенно переписать их)

cd $maria-repo/mysql-test
./mysql-test-run

В случае сбоя нужно будет заново записываться.

cd $maria-repo/mysql-test
./mysql-test-run --record $test # где $test это имя теста который прошел со сбоем

Теперь все готово к слиянию с главной линией проекта.

Слияние последних изменений

Важно проводить слияние любых изменений с главной линией в локальном репозитарии перед тем как отправлять в удаленное хранилище и публиковать.

Обновим локальную копию репозитария.

cd $maria-repo 
cd trunk
bzr pull   

Обновим твою локальную ветку.

cd $maria-repo
cd maria-fix-bugNNNNNN
bzr merge ../trunk
bzr commit -m "Merged from trunk"

Конфликты могут быть решены в Bazaar через:

bzr resolve $filename

Чтобы откатить твой последний коммит на твоей ветке используй:

bzr revert $filename

(Напомню ты должен заново накатить из удаленного репозитария копию кода, перед тем как отправлять туда что-то.)

Проверяем различия, будьте осторожны.

bzr diff

Публикация твоей ветки

Когда все мелкие изменения слиты в единую массу можно отправить твою ветку в LaunchPad

cd $maria-repos/$your-branch # where $your-branch is the branch you want to push (ex: maria-bugNNNN)
bzr push lp:~[yourloginid]/maria/$your-branch

Если ты решишь что это занимает много времени(бывает >30 минут), можно попытаться использовать команду 'bzr init-repo --format=1.9' чтобы инициализировать новый репозитарий и слить сделаные изменения в него, тогда можно использовать команду "push" снова.

Как создать "рекомендацию" слияние ветки.

На вашей Launchpad странице https://code.launchpad.net/~{yourloginid}/maria/{branch-name} нажмите Propose for merging into another branch ссылку чтобы создать "рекомендацию" для ветки и предложить основателям проекта произвести слияния с главной веткой проекта.

Передача кода в главное дерево MariaDB.

Весь код в MariaDB попал туда из одного из нижеописанных источников:

  • MySQL
  • Код разработанный людьми работающими в MariaDB Foundation.
  • Код разработанный людьми работающими в MariaDB Corporation.
  • Код переданный в MariaDB Foundation через MCA лицензию.
  • Код известного происхождения который распространяется с лицензией BSD или "общественное достояние"

Если ты хочешь быть частью главного MariaDB дерева, ты тоже можешь передать копирайт своего кода в MariaDB Foundation. Это нужно чтобы организация могла предложить твой код в другие проекты. (как MySQL)

Это можно сделать так, либо:

  1. Подписать "Договор Вкладчика MariaDB" (MCA) отсканировать и выслать нам в организацию.
  2. Послать по email вот сюда maria-developers где сказать что твой патч и все фиксы для него передаются в "MariaDB Foundation" под лицензией MCA.
  3. Лицензировать свой код используя BSD license.

Нам потребуются общие права в следующих случаях:

  1. чтобы защитить копирайт или GPL если кто-то нарушит его (это одна из причин из-за которой почему Free Software Foundation требует передачи копирайта для своего кода)
  2. чтобы сделать возможным вознаграждение за написание кода MySQL (например за исправление проблем с безопасностью или новым функционалом)
  3. чтобы позволить людям которые имеют отличную от открытой лицензию для MySQL кода тоже использовать MariaDB (MCA/BSD лицензии позволяют нам передать этим компаниям права на все изменения MySQL и MariaDB, так же они могут использовать MariaDB вместо MySQL)

Больше информации о MCA вы можете найти тут MCA FAQ

Исправление ветви(если нужно)

Если требуются исправления для твоей ветки, тебе надо: сделать изменения перезалить любые новые изменения в (локальный?)репозитарий, сделать коммит снова отправить в удаленный репозитарий; тебе не нужно снова делать "рекомендацию". После пересылки LaunchPad должен подтянуть все изменения автоматически.

Пожалуйста будьте осторожны с этим изменением, оно может занять несколько минут для LaunchPad чтобы слить ваши новые изменения в вашу "рекомендацию"

Как повторно представить "рекомендацию"

На данный момент, это сложный процесс, и нет никакой ссылки вроде "Предложить другой отзыв" для проектов на Launchpad.

Чтобы снова сделать "рекомендацию" слияния, совершите следующие шаги:

  1. На главной странице "рекомендации" слияния, на самом верху будет что-то типа "Status: Needs Review". А еще справа будет маленькая кнопка; нажмите на нее чтобы изменить статус.
  2. Выберите "Resubmit" из выпадающего списка, и нажмите "Change Status".
  3. На следующей странице должны предупредить о повторной отправке "рекомендации" о слиянии, и сообщить что новая "рекомендация" вытеснит предыдущую старую.
  4. Нажмите "Resubmit".

Пара простых путей привлечь внимание к продвигаемому тобой слиянию:

  • Заходи на канал #maria [[IRC] на Freenode поболтать с людьми, показать и обсудить слияние с твоей работой.

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.