Hound es un motor de búsqueda de código fuente extremadamente rápido. El núcleo se basa en este artículo (y código) de Russ Cox: expresión regular que coincide con un índice de trigram. Hound en sí es un frontend react estático que habla con un backend Go. El backend mantiene un índice actualizado para cada repositorio y responde las búsquedas a través de una API mínima. Aquí está en acción:

Instalar GO (requerido la versión mínima: 1.16) y NPM
Clonar el repositorio y ejecutar hacer.
git clone https://github.com/hound-search/hound.git
cd hound
make
Los binarios resultantes ( hound , houndd ) se pueden encontrar en el directorio .build/ bin/.
{
"dbpath" : " db " ,
"repos" : {
"Hound" : {
"url" : " https://github.com/hound-search/hound.git " ,
"vcs-config" : {
"ref" : " main "
}
}
}
}Puede encontrar una lista completa de las opciones de configuración disponibles aquí.
houndd en el mismo directorio que su config.json . Debería ver la salida similar 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 Docker si no lo tiene. Necesitamos al menos Docker >= 1.14 .
Cree un archivo config.json y úselo para enumerar sus repositorios. Consulte nuestro ejemplo-config.json para ver cómo configurar varios tipos de repositorios. Por ejemplo, podemos configurar Hound para buscar su propio código fuente utilizando la configuración encontrada en predeterminada-config.json.
docker run -d -p 6080:6080 --name hound -v $(pwd):/data ghcr.io/hound-search/hound:latest
Debería poder navegar a http: // localhost: 6080/como de costumbre.
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
No hay banderas especiales para ejecutar Hound en producción. Puede usar el indicador --addr=:6880 para controlar el puerto al que se une el servidor. Actualmente, Hound no admite TLS ya que la mayoría de los usuarios simplemente ejecutan Hound detrás de Apache o Nginx. Sin embargo, estamos abiertos a contribuciones para agregar soporte TLS.
Hemos utilizado muchas herramientas similares en el pasado, y la mayoría de ellas son demasiado lentas, demasiado difíciles de configurar o requieren demasiado software para instalar. Lo que nos lleva a ...
Sí, eso es todo. Puede proxy solicitudes para el servicio GO a través de Apache/Nginx/etc., pero eso no es necesario.
Actualmente, Hound solo se prueba en MacOS y CentOS, pero debería funcionar en cualquier sistema *nix. Hound en Windows no es compatible, pero hemos escuchado que se compila y funciona bien (aunque ayuda a excluir su carpeta de datos de Windows Search Indexer).
Hound admite los siguientes sistemas de control de versiones:
"vcs" : "hg" en la configuración"vcs" : "svn" en la configuración"vcs" : "bzr" en la configuración"vcs" : "local" en la configuraciónConsulte config-exame.json para ver ejemplos de cómo usar cada VCS.
Hay un par de formas de hacer que Hound indexe repositorios privados:
local . Esto le permite indexar un directorio local. Puede configurar "watch-changes" : true para calcular un hash recursivo de todos los archivos en el directorio y vuelva a indexar automáticamente.file:// protocolo. Esto le permite indexar un clon local de un repositorio. La desventaja aquí es que la encuesta para mantener el repositorio actualizado no funcionará. (Esto tampoco funciona en las carpetas locales que no tienen un tipo de repositorio compatible). Si está utilizando Docker, debe montar un volumen a su repositorio (por ejemplo, -v $(pwd)/src:/src ) y usar la ruta relativa al repositorio en su configuración."url" : "[email protected]:foo/bar.git" . Mientras tenga sus teclas SSH configuradas en la caja donde Hound está funcionando, esto funcionará. Por defecto, el sabueso encuesta la URL en la configuración para actualizaciones cada 30 segundos. Puede anular este valor estableciendo la tecla ms-between-poll sobre una repositorio en la configuración. Si está indexando una gran cantidad de repositorios, también puede estar interesado en ajustar la propiedad max-concurrent-indexers . Puede ver cómo funcionan en la configuración de ejemplo.
Actualmente, los siguientes editores tienen complementos que admiten Hound:
git clone https://github.com/hound-search/hound.git
cd hound
make
Los Ejecutables de Hound estarán disponibles en .build/bin .
Hay un número creciente de pruebas en cada uno de los paquetes en Hound. Asegúrese de que estos pasen antes de cargar su solicitud de extracción. Puede ejecutar las pruebas con el siguiente comando. Para ejecutar todo el suite de prueba, use:
make test
Si solo desea ejecutar la suite de prueba JavaScript, use:
npm test
Se supone que los archivos de GO que terminan en _test.go son archivos de prueba. Del mismo modo, cualquier archivo JavaScript que termine en .test.js se ejecuta automáticamente por Jest, nuestro corredor de prueba. Las pruebas deben vivir al lado de los archivos que cubren. Consulte los documentos de Jest para obtener más detalles sobre la redacción de pruebas de Jest, y consulte los documentos de prueba de Go para obtener más detalles sobre el código GO de pruebas.
Debe instalar Node.js >= 12 e instalar jest por npm install jest para ejecutar las pruebas JS.
Hound incluye una interfaz de usuario web que se compone de varios archivos (HTML, CSS, JavaScript, etc.). Para compilar los cambios en la interfaz de usuario.
make ui
Para facilitar el desarrollo, hay un indicador que leerá los archivos del sistema de archivos (permitiendo el ciclo de edición/actualización muy querido).
Primero debe asegurarse de tener todas las dependencias instaladas que necesita ejecutando:
make dev
Luego ejecute el servidor Hound con la opción --dev:
.build/bin/houndd --dev
Creado en Etsy por:
Hound se mantiene por: