Hound - это чрезвычайно быстрая поисковая система исходного кода. Ядро основано на этой статье (и коде) от Russ Cox: регулярное соответствие выражения с индексом триграммы. Сам гончик - это статический фронт реагирования, который разговаривает с бэкэнд. Бэкэнд сохраняет актуальный индекс для каждого репозитория и отвечает на поиск через минимальный API. Вот в действии:

Установить GO (требуется минимальная версия: 1.16) и NPM
Клонировать хранилище и запустить.
git clone https://github.com/hound-search/hound.git
cd hound
make
Полученные двоичные файлы ( hound , houndd ) можно найти в каталоге .build/ Bin/.
{
"dbpath" : " db " ,
"repos" : {
"Hound" : {
"url" : " https://github.com/hound-search/hound.git " ,
"vcs-config" : {
"ref" : " main "
}
}
}
}Полный список доступных параметров конфигурации можно найти здесь.
houndd в том же каталоге, что и ваш config.json . Вы должны увидеть вывод, похожий на: 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
Установите Docker, если у вас его нет. Нам нужен хотя бы Docker >= 1.14 .
Создайте файл config.json и используйте его для перечисления ваших репозиториев. Проверьте наш пример config.json, чтобы увидеть, как настроить различные типы репозитории. Например, мы можем настроить Hound для поиска собственного исходного кода, используя конфигурацию, найденную в default-config.json.
docker run -d -p 6080:6080 --name hound -v $(pwd):/data ghcr.io/hound-search/hound:latest
Вы должны быть в состоянии перейти к http: // localhost: 6080/как обычно.
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
Там нет особых флагов, чтобы запустить Hound в производстве. Вы можете использовать флаг --addr=:6880 для управления портом, с которым связывает сервер. В настоящее время Hound не поддерживает TLS, так как большинство пользователей просто запускают Hound за Apache или Nginx. Тем не менее, мы открыты для вклада, чтобы добавить поддержку TLS.
В прошлом мы использовали много подобных инструментов, и большинство из них либо слишком медленные, слишком сложно для настройки, либо требуют слишком большого количества программного обеспечения для установки. Что приводит нас к ...
Да, вот и все. Вы можете прокси -запросы в службу GO через Apache/Nginx/и т. Д., Но это не требуется.
В настоящее время Hound проверяется только на MacOS и CentOS, но она должна работать над любой системой *NIX. Hound на Windows не поддерживается, но мы слышали, как она компилируется и работает просто отлично (хотя это помогает исключить вашу папку данных из индексера поиска Windows).
Гончая поддерживает следующие системы управления версиями:
"vcs" : "hg" в конфигурации"vcs" : "svn" в конфигурации"vcs" : "bzr" в конфигурации"vcs" : "local" в конфигурацииСм. Config-example.json для примеров того, как использовать каждый VCS.
Есть несколько способов получить гончие для индексации частных репозиториев:
local драйвер псевдо-VCS. Это позволяет индексировать локальный каталог. Вы можете установить "watch-changes" : true для расчета рекурсивного хэша всех файлов в каталоге и автоматически повторно индекс.file:// protocol. Это позволяет индексировать локальный клон репозитория. Недостатком здесь является то, что опрос, чтобы поддерживать репо, не будет работать. (Это также не работает на локальных папках, которые не имеют поддерживаемого типа репозитория.) Если вы используете Docker, вы должны установить том в свой репозиторий (например, -v $(pwd)/src:/src ) и использовать относительный путь к репо в вашей конфигурации."url" : "[email protected]:foo/bar.git" . Пока у вас есть свои клавиши SSH на коробке, где работает Hound, это будет работать. По умолчанию Hound Opplys URL в конфигурации для обновлений каждые 30 секунд. Вы можете переопределить это значение, установив клавишу ms-between-poll на основе репо в конфигурации. Если вы индексируете большое количество репозиториев, вам также может быть заинтересован в настройке свойства max-concurrent-indexers . Вы можете увидеть, как они работают в примере конфигурации.
В настоящее время у следующих редакторов есть плагины, которые поддерживают гончие:
git clone https://github.com/hound-search/hound.git
cd hound
make
Представители Hound будут доступны в .build/bin .
В каждом из пакетов в гонке все большее количество тестов. Пожалуйста, убедитесь, что они проходят перед загрузкой запроса на привлечение. Вы можете запустить тесты со следующей командой. Чтобы запустить весь тестовый набор, используйте:
make test
Если вы хотите просто запустить набор тестов JavaScript, используйте:
npm test
Любые файлы GO, которые заканчиваются в _test.go предполагаются, что являются тестовыми файлами. Точно так же любые файлы JavaScript, которые заканчиваются .test.js автоматически запускаются на нашем тесте. Тесты должны жить рядом с файлами, которые они охватывают. Ознакомьтесь с документами Jest для получения более подробной информации о написании Jest Tests и проверьте тестирование Go для получения более подробной информации о коде тестирования GO.
Вам нужно установить Node.js >= 12 и установить jest , npm install jest для запуска тестов JS.
Hound включает в себя веб -интерфейс, который состоит из нескольких файлов (HTML, CSS, JavaScript и т. Д.). Для составления изменений пользовательского интерфейса использования:
make ui
Чтобы упростить разработку, есть флаг, который будет читать файлы из файловой системы (позволяя очень любимый цикл редактирования/обновления).
Сначала вы должны убедиться, что у вас установлены все зависимости, которые вам нужны, запустив:
make dev
Затем запустите сервер Hound с опцией -dev:
.build/bin/houndd --dev
Создан в Etsy by:
Собака поддерживается: