Внесение изменений в код
Contents
- Как найти наш проект и начать уже разрабатывать что-нибудь
- Предварительные требования
- Проведение тестов
- Редактирование и добавление вашего кода.
- Тестирование вашей ветки
- Слияние последних изменений
- Публикация твоей ветки
- Как создать "рекомендацию" слияние ветки.
- Передача кода в главное дерево MariaDB.
- Исправление ветви(если нужно)
- Как повторно представить "рекомендацию"
Эта страница содержит главные принципы и процедуры для внесения изменений в код. Если у вас есть любые вопросы мы ждем их в MariaDB-разработчики рассылке или на #maria IRC канале Freenode. А еще несколько e-mail адресов и других мест вы можете найти тут
Главная информация о внесении изменений в код MariaDB (для разработчиков и не только) может быть найдена на странице Внесение изменений в проект MariaDB.
Как найти наш проект и начать уже разрабатывать что-нибудь
У нас есть множество открытых для разработки проектов для MariaDB в которых вы можете поучаствовать(в дополнение к тем что вы сами придумаете)
- Мы используем JIRA для управления проектом MariaDB. Перейдите по ссылке https://jira.mariadb.org и кликните "Projects" чтобы получить наш проект MariaDB. еще можете поискать там неисправленные и незанятые проблемы, если это то что вам интересно. Некоторые уязвимости имеют спонсоров, и вы можете получить плату за исправление!
- Проверьте план разработки для следующей MariaDB версии. Текущая План для 10.x.
- Подписывайтесь на MariaDB-разработчики рассылку пишите на maria-developers \сабака\ lists.launchpad.net и предлагайте те задачи которые нужны именно вам. Пожалуйста включите ваш опыт, ваши знания исходников MariaDB и то что вы знаете о использовании MySQL/MariaDB в рассылку, именно так мы узнаем какие задачи можно предложить вам.
- Если вы первый раз в нашем проекте ознакомьтесь с Suggested Development. Эти проекты могут стать хорошим стартом.
Если у вас есть какие то идеи отправляйте их сюда 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
- Первым делом, получаем чистую копию MariaDB-кода (для некоторых, быстрей будет использовать инструкции из секции "Source Tree Tarball").
- Однажды сделав чистую копию, создайте рабочую копию для ваших изменений:
cd $maria-repo # ex: ~/repos/maria bzr branch trunk maria-fix-bugNNNNNN cd maria-fix-bugNNNNNN
Совет: Используйте понятные имена вроде maria-fix-bugNNNNNN (где NNNNNN это баг # конечно).
- Теперь вы должны быть готовы к Компиляции MariaDB. Это хорошая идея скомпилировать на этом этапе чтобы подтвердить что ваше дерево исходников готово к активным действиям во время работы . . . перед тем как делать что либо.
Следующие страницы могут помочь тебе получить и запустить MariaDB из исходников:
- Получение MariaDB исходников
- Установка твоего окружения для формирования 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)
Это можно сделать так, либо:
- Подписать "Договор Вкладчика MariaDB" (MCA) отсканировать и выслать нам в организацию.
- Послать по email вот сюда maria-developers где сказать что твой патч и все фиксы для него передаются в "MariaDB Foundation" под лицензией MCA.
- Лицензировать свой код используя BSD license.
Нам потребуются общие права в следующих случаях:
- чтобы защитить копирайт или GPL если кто-то нарушит его (это одна из причин из-за которой почему Free Software Foundation требует передачи копирайта для своего кода)
- чтобы сделать возможным вознаграждение за написание кода MySQL (например за исправление проблем с безопасностью или новым функционалом)
- чтобы позволить людям которые имеют отличную от открытой лицензию для MySQL кода тоже использовать MariaDB (MCA/BSD лицензии позволяют нам передать этим компаниям права на все изменения MySQL и MariaDB, так же они могут использовать MariaDB вместо MySQL)
Больше информации о MCA вы можете найти тут MCA FAQ
Исправление ветви(если нужно)
Если требуются исправления для твоей ветки, тебе надо: сделать изменения перезалить любые новые изменения в (локальный?)репозитарий, сделать коммит снова отправить в удаленный репозитарий; тебе не нужно снова делать "рекомендацию". После пересылки LaunchPad должен подтянуть все изменения автоматически.
Пожалуйста будьте осторожны с этим изменением, оно может занять несколько минут для LaunchPad чтобы слить ваши новые изменения в вашу "рекомендацию"
Как повторно представить "рекомендацию"
На данный момент, это сложный процесс, и нет никакой ссылки вроде "Предложить другой отзыв" для проектов на Launchpad.
Чтобы снова сделать "рекомендацию" слияния, совершите следующие шаги:
- На главной странице "рекомендации" слияния, на самом верху будет что-то типа "Status: Needs Review". А еще справа будет маленькая кнопка; нажмите на нее чтобы изменить статус.
- Выберите "Resubmit" из выпадающего списка, и нажмите "Change Status".
- На следующей странице должны предупредить о повторной отправке "рекомендации" о слиянии, и сообщить что новая "рекомендация" вытеснит предыдущую старую.
- Нажмите "Resubmit".
Пара простых путей привлечь внимание к продвигаемому тобой слиянию:
- Заходи на канал #maria IRC на Freenode поболтать с людьми, показать и обсудить слияние с твоей работой.
- Подписывайся на рассылку по этой ссылке группа MariaDB-разработчиков на Launchpad