ClickHouse/docs/ru/development/contrib.md
2021-07-29 18:20:55 +03:00

9.7 KiB
Raw Blame History

toc_priority toc_title
70 Используемые сторонние библиотеки

Используемые сторонние библиотеки

Библиотека Лицензия
base64 BSD 2-Clause License
boost Boost Software License 1.0
brotli MIT
capnproto MIT
cctz Apache License 2.0
double-conversion BSD 3-Clause License
FastMemcpy MIT
googletest BSD 3-Clause License
h3 Apache License 2.0
hyperscan BSD 3-Clause License
libcxxabi BSD + MIT
libdivide Zlib License
libgsasl LGPL v2.1
libhdfs3 Apache License 2.0
libmetrohash Apache License 2.0
libpcg-random Apache License 2.0
libressl OpenSSL License
librdkafka BSD 2-Clause License
libwidechar_width CC0 1.0 Universal
llvm BSD 3-Clause License
lz4 BSD 2-Clause License
mariadb-connector-c LGPL v2.1
murmurhash Public Domain
pdqsort Zlib License
poco Boost Software License - Version 1.0
protobuf BSD 3-Clause License
re2 BSD 3-Clause License
UnixODBC LGPL v2.1
zlib-ng Zlib License
zstd BSD 3-Clause License

Рекомендации по добавлению сторонних библиотек и поддержанию в них пользовательских изменений

  1. Весь внешний сторонний код должен находиться в отдельных папках внутри папки contrib репозитория ClickHouse. По возможности, используйте сабмодули Git.
  2. Клонируйте официальный репозиторий Clickhouse-extras. Используйте официальные репозитории GitHub, если они доступны.
  3. Создавайте новую ветку на основе той ветки, которую вы хотите интегрировать: например, master -> clickhouse/master или release/vX.Y.Z -> clickhouse/release/vX.Y.Z.
  4. Все копии Clickhouse-extras можно автоматически синхронизировать с удаленными репозиториями. Ветки clickhouse/... останутся незатронутыми, поскольку скорее всего никто не будет использовать этот шаблон именования в своих репозиториях.
  5. Добавьте сабмодули в папку contrib репозитория ClickHouse, на который ссылаются клонированные репозитории. Настройте сабмодули для отслеживания изменений в соответствующих ветках clickhouse/....
  6. Каждый раз, когда необходимо внести изменения в код библиотеки, следует создавать отдельную ветку, например clickhouse/my-fix. Затем эта ветка должна быть слита (merge) в ветку, отслеживаемую сабмодулем, например, в clickhouse/master или clickhouse/release/vX.Y.Z.
  7. Не добавляйте код в клоны репозитория Clickhouse-extras, если имя ветки не соответствует шаблону clickhouse/....
  8. Всегда вносите изменения с учетом того, что они попадут в официальный репозиторий. После того как PR будет влит из (ветки разработки/исправлений) вашего личного клона репозитория в Clickhouse-extras, и сабмодуль будет добавлен в репозиторий ClickHouse, рекомендуется сделать еще один PR из (ветки разработки/исправлений) репозитория Clickhouse-extras в официальный репозиторий библиотеки. Таким образом будут решены следующие задачи: 1) публикуемый код может быть использован многократно и будет иметь более высокую ценность; 2) другие пользователи также смогут использовать его в своих целях; 3) поддержкой кода будут заниматься не только разработчики ClickHouse.
  9. Чтобы сабмодуль начал использовать новый код из исходной ветки (например, master), сначала следует аккуратно выполнить слияние (master -> clickhouse/master), и только после этого изменения могут быть добавлены в основной репозиторий ClickHouse. Это связано с тем, что в отслеживаемую ветку (например, clickhouse/master) могут быть внесены изменения, и поэтому ветка может отличаться от первоисточника (master).