contrib/ do repositório do ClickHouse.
Dependendo das opções de compilação, algumas dessas bibliotecas podem não ter sido compiladas e, por isso, sua funcionalidade pode não estar disponível em tempo de execução.
Exemplo
Adicionando e mantendo bibliotecas de terceiros
contrib/ do repositório ClickHouse.
Evite simplesmente copiar código externo para o diretório da biblioteca.
Em vez disso, crie um Git submodule para obter código de terceiros de um repositório upstream externo.
Todos os submodules usados pelo ClickHouse estão listados no arquivo .gitmodule.
- Se a biblioteca puder ser usada como está (o caso padrão), você pode referenciar diretamente o repositório upstream.
- Se a biblioteca precisar de patches, crie um fork do repositório upstream na organização ClickHouse no GitHub.
ClickHouse/ a partir da branch ou tag que você deseja integrar, por exemplo, ClickHouse/2024_2 (para a branch 2024_2) ou ClickHouse/release/vX.Y.Z (para a tag release/vX.Y.Z).
Evite acompanhar branches de desenvolvimento do upstream, como master/ main / dev (isto é, branches com prefixo ClickHouse/master / ClickHouse/main / ClickHouse/dev no fork).
Essas branches são alvos móveis, o que dificulta um versionamento adequado.
As “branches com prefixo” garantem que pulls do repositório upstream para o fork não afetem as branches personalizadas ClickHouse/.
Os submodules em contrib/ devem rastrear apenas branches ClickHouse/ de repositórios de terceiros com fork.
Os patches são aplicados apenas sobre branches ClickHouse/ de bibliotecas externas.
Há duas maneiras de fazer isso:
- você quer criar uma nova correção em uma branch com prefixo
ClickHouse/no repositório com fork, por exemplo, uma correção de sanitizer. Nesse caso, envie a correção como uma branch com prefixoClickHouse/, por exemplo,ClickHouse/fix-sanitizer-disaster. Depois, crie um PR da nova branch para a branch personalizada de rastreamento, por exemplo,ClickHouse/2024_2 <-- ClickHouse/fix-sanitizer-disaster, e faça merge do PR. - você atualiza o submodule e precisa reaplicar patches anteriores. Nesse caso, recriar PRs antigos é exagero. Em vez disso, simplesmente faça cherry-pick de commits antigos para a nova branch
ClickHouse/(correspondente à nova versão). Fique à vontade para squash dos commits de PRs que tinham vários commits. No melhor cenário, já contribuímos os patches personalizados de volta para o upstream e podemos omitir os patches na nova versão.