Hound é um mecanismo de pesquisa de código fonte extremamente rápido. O núcleo é baseado neste artigo (e código) de Russ Cox: Expressão regular correspondente a um índice de trigramas. O próprio Hound é um front -end estático do React que fala com um back -end. O back-end mantém um índice atualizado para cada repositório e responde a pesquisas através de uma API mínima. Aqui está em ação:

Instale Go (versão mínima necessária: 1.16) e NPM
Clone o repositório e faça uma marca.
git clone https://github.com/hound-search/hound.git
cd hound
make
Os binários resultantes ( hound , houndd ) podem ser encontrados no .build/ bin/ diretório.
{
"dbpath" : " db " ,
"repos" : {
"Hound" : {
"url" : " https://github.com/hound-search/hound.git " ,
"vcs-config" : {
"ref" : " main "
}
}
}
}Uma lista completa das opções de configuração disponíveis pode ser encontrada aqui.
houndd no mesmo diretório que o seu config.json . Você deve ver a saída semelhante a: 2015/03/13 09:07:42 Searcher started for statsd
2015/03/13 09:07:42 Searcher started for Hound
2015/03/13 09:07:42 All indexes built!
2015/03/13 09:07:42 running server at http://localhost:6080
Instale o Docker se você não o tiver. Precisamos de pelo menos Docker >= 1.14 .
Crie um arquivo config.json e use -o para listar seus repositórios. Confira nosso exemplo-config.json para ver como configurar vários tipos de repositórios. Por exemplo, podemos configurar o Hound para pesquisar seu próprio código-fonte usando a configuração encontrada no default-config.json.
docker run -d -p 6080:6080 --name hound -v $(pwd):/data ghcr.io/hound-search/hound:latest
Você deve navegar para http: // localhost: 6080/como de costume.
git clone https://github.com/hound-search/hound.git
cd hound
docker build . --tag=hound
docker create -p 6080:6080 --name hound -v $(pwd):/data hound
docker start hound
docker stop hound
Não há bandeiras especiais para correr Hound na produção. Você pode usar o sinalizador --addr=:6880 para controlar a porta à qual o servidor se liga. Atualmente, o Hound não suporta o TLS, pois a maioria dos usuários simplesmente corre atrás do Apache ou do Nginx. No entanto, estamos abertos a contribuições para adicionar suporte ao TLS.
Usamos muitas ferramentas semelhantes no passado, e a maioria delas é muito lenta, muito difícil de configurar ou exigir muito software para ser instalado. O que nos leva a ...
Sim, é isso. Você pode solicitações proxy para o serviço Go através do Apache/Nginx/etc., mas isso não é necessário.
Atualmente, o Hound é testado apenas no macOS e no CentOS, mas deve funcionar em qualquer sistema *nix. O Hound no Windows não é suportado, mas ouvimos isso compilar e funciona muito bem (embora ajude a excluir sua pasta de dados do Indexador de Pesquisa do Windows).
Hound suporta os seguintes sistemas de controle de versão:
"vcs" : "hg" na configuração"vcs" : "svn" na configuração"vcs" : "bzr" na configuração"vcs" : "local" na configuraçãoConsulte Config-Exemple.json para obter exemplos de como usar cada VCS.
Existem algumas maneiras de fazer Hound para indexar repositórios privados:
local . Isso permite indexar um diretório local. Você pode definir "watch-changes" : true para calcular um hash recursivo de todos os arquivos no diretório e re-index automaticamente.file:// protocolo. Isso permite indexar um clone local de um repositório. A desvantagem aqui é que a pesquisa para manter o repositório atualizado não funcionará. (Isso também não funciona em pastas locais que não são do tipo repositório suportado.) Se você estiver usando o Docker, deve montar um volume no seu repositório (por exemplo, -v $(pwd)/src:/src ) e usar o caminho relativo para o repo em sua configuração."url" : "[email protected]:foo/bar.git" . Contanto que você tenha suas teclas SSH configuradas na caixa onde a Hound está executando isso funcionará. Por padrão, as pesquisas de Hound o URL na configuração de atualizações a cada 30 segundos. Você pode substituir esse valor definindo a tecla ms-between-poll em uma base por repositório na configuração. Se você estiver indexando um grande número de repositórios, também poderá estar interessado em ajustar a propriedade max-concurrent-indexers . Você pode ver como eles funcionam na configuração de exemplo.
Atualmente, os seguintes editores têm plugins que suportam Hound:
git clone https://github.com/hound-search/hound.git
cd hound
make
Os executáveis de Hound estarão disponíveis no .build/bin .
Há um número crescente de testes em cada um dos pacotes em cão. Certifique -se de que eles passe antes de enviar sua solicitação de tração. Você pode executar os testes com o seguinte comando. Para executar o conjunto de testes inteiro, use:
make test
Se você deseja executar o conjunto de testes JavaScript, use:
npm test
Os arquivos GO que terminam em _test.go são assumidos como arquivos de teste. Da mesma forma, quaisquer arquivos JavaScript que terminem no .test.js são executados automaticamente pelo JEST, nosso corredor de teste. Os testes devem viver ao lado dos arquivos que eles cobrem. Confira os documentos do JEST para obter mais detalhes sobre a redação de testes de brincadeira e confira os documentos de teste do Go para obter mais detalhes sobre o código do teste.
Você precisa instalar Node.js >= 12 e instalar jest pelo npm install jest para executar os testes JS.
Hound inclui uma interface do usuário da web composta de vários arquivos (HTML, CSS, JavaScript, etc.). Para compilar mudanças na interface do usuário, use:
make ui
Para facilitar o desenvolvimento, há um sinalizador que lerá os arquivos do sistema de arquivos (permitindo o muito amado ciclo de edição/atualização).
Primeiro, você deve garantir que você tenha todas as dependências instaladas que você precisa executando:
make dev
Em seguida, execute o servidor Hound com a opção - -dev:
.build/bin/houndd --dev
Criado no Etsy por:
Hound é mantido por: