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

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

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

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

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

  • Мы используем JIRA для управления проектом MariaDB. Перейдите по ссылке https://jira.mariadb.org и кликните "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...