Документ описывает некоторые конвенции относительно рабочего процесса разработки, форматирования сообщений о коммитах, контактные точки и другие ресурсы, чтобы сделать проще принятие вашего вклада.
Прежде чем приступить к работе, вам потребуется настроить среду разработки на языке Go.
Установите версию Go
1.14 или выше. Для получения более подробной информации обратитесь к руководству How to Write Go Code.
Определите переменную окружения GOPATH
и модифицируйте переменную PATH
, чтобы иметь доступ к исполняемым файлам Go. Обычное расположение следующее:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Примечание: TiDB использует
Go Modules
для управления зависимостями.
Теперь вы должны иметь возможность использовать команду make build
для сборки TiDB.
По указаниям Go о рабочих пространствах, расположите код TiDB в вашем GOPATH
, используя следующий процесс клонирования.
Определите локальную рабочую директорию:
# Установите `user` так, чтобы он совпадал с вашим именем профиля GitHub:
export user=ваше_имя_профиля_GitHub
export working_dir=$GOPATH/src/github.com/$user
Оба $working_dir
и $user
упомянуты выше на диаграмме.
Создайте свой клон:
mkdir -p $working_dir
cd $working_dir
git clone https://github.com/$user/goInception.git
# или: git clone git@github.com/$user/goInception.git
cd $working_dir/goInception
git remote add upstream https://github.com/hanchuanchuan/goInception.git
# или: git remote add upstream git@github.com/hanchuanchuan/goInception.git
# Никогда не отправляйте изменения в основной ветке upstream.
git remote set-url --push upstream no_push
# Подтвердите, что ваши удалённые репозитории корректны:
# Это должно выглядеть как:
# origin git@github.com:$(user)/goInception.git (fetch)
# origin git@github.com:$(user)/goInception.git (push)
# upstream https://github.com/hanchuanchuan/goInception (fetch)
# upstream no_push (push)
git remote -v
Установите хук pre-commit
. Этот хук проверяет ваши коммиты на соответствие формату, сборке, генерации документации и т.д.:
cd $working_dir/goInception/
ln -s `pwd`/hooks/pre-commit .git/hooks/
chmod +x $working_dir/goInception/.git/hooks/pre-commit
```### Шаг 3: Создание ветки
Приведите вашу локальную мастер-ветку в актуальное состояние:
```sh
cd $working_dir/goInception
git fetch upstream
git checkout master
git rebase upstream/master
Создайте ветку от мастера:
git checkout -b feature-test
Вы можете теперь редактировать код в ветке feature-test
.
Для выполнения локальных тестов проверки аудита, выполнения и резервного копирования требуется экземпляр MySQL.
5.7
mysqld --log-bin=on --server-id=111 --character-set-server=utf8mb4
mysql -e "CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET utf8; CREATE DATABASE IF NOT EXISTS test_inc DEFAULT CHARACTER SET utf8;"
mysql -e "GRANT ALL ON *.* TO test@'127.0.0.1' IDENTIFIED BY 'test'; FLUSH PRIVILEGES;"
Сборка и запуск всех тестов:
# сборка и запуск юнит-тестов, чтобы убедиться, что все тесты пройдены.
make dev
# Проверьте список задач перед тем, как продолжить работу.
make checklist
Вы также можете запустить отдельный юнит-тест в одном файле. Например, чтобы запустить тест TestToInt64
в файле types/datum.go
:
GO111MODULE=on go test types/datum.go
# или:
GO111MODULE=on go test types/datum_test.go
Ветка должна быть слита с последней версией goInception перед отправкой запроса на слияние, чтобы избежать проблем при слиянии.```sh
git fetch upstream git rebase upstream/master
Пожалуйста, не используйте `git pull` вместо вышеупомянутого `fetch`/`rebase`. `git pull` выполняет слияние, что оставляет слияющие коммиты. Это делает историю коммитов запутанной и нарушает принцип, согласно которому каждый коммит должен быть понятным и полезным самостоятельно (см. ниже). Вы также можете рассмотреть возможность изменения файла конфигурации `.git/config` через `git config branch.autoSetupRebase`, чтобы всегда менять поведение `git pull`.
### Шаг 6: Коммит
Коммитируйте свои изменения.
```sh
git commit
Вероятнее всего, вам придется несколько раз вернуться и снова редактировать/собирать/тестировать, а затем использовать commit --amend
в нескольких циклах.
Когда изменения готовы для проверки (или вы просто хотите создать внешний бэкап своей работы), отправьте свою ветку на ваш форк на github.com
:
git push --set-upstream ${your_remote_name} feature-test
https://github.com/$user/goInception
.Compare & Pull Request
рядом со своей веткой feature-test
.После отправки запроса на слияние (PR) автоматически будут выполнены тесты Travis CI и CircleCI. Во время рецензии любые изменения могут быть непосредственно внесены и отправлены на ветку; запрос на слияние будет использовать последний коммит, и нет необходимости заново отправлять запрос на слияние. Если запрос на слияние затрагивает несколько функций или исправлений, рекомендуется разделить его на несколько веток для упрощения рецензирования и объединения.## Стиль кода
Вы можете обратиться к рекомендациям по стилю кодирования, предложенным сообществом Golang документация по стилю.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )