Hound هو محرك البحث عن رمز المصدر السريع للغاية. يعتمد النواة على هذه المقالة (والرمز) من Russ Cox: تعبير منتظم مطابقة مع فهرس Trigram. Hound نفسها هي واجهة رد فعل ثابتة تتحدث إلى العودة. تحتفظ الواجهة الخلفية بفهرس محدث لكل مستودع ويجيب يبحث عن الحد الأدنى من واجهة برمجة التطبيقات. هنا في العمل:

تثبيت GO (الحد الأدنى للنسخة المطلوبة: 1.16) و NPM
استنساخ المستودع وتشغيل.
git clone https://github.com/hound-search/hound.git
cd hound
make
يمكن العثور على الثنائيات الناتجة ( hound ، houndd ) في. -build/ bin/ directory.
{
"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/etc. ، لكن هذا غير مطلوب.
يتم اختبار Hound حاليًا فقط على MacOS و CentOs ، ولكن يجب أن تعمل على أي نظام *NIX. لا يتم دعم Hound On Windows ، لكننا سمعنا أنه يجمع ويعمل بشكل جيد (على الرغم من أنه يساعد على استبعاد مجلد البيانات الخاص بك من Windows Search Indexer).
يدعم Hound أنظمة التحكم في الإصدار التالية:
"vcs" : "hg" في التكوين"vcs" : "svn" في التكوين"vcs" : "bzr" في التكوين"vcs" : "local" في التكوينراجع config-example.json للحصول على أمثلة حول كيفية استخدام كل VCs.
هناك عدة طرق للحصول على Hound لفهرسة المستودعات الخاصة:
local . هذا يسمح لك بفهرسة دليل محلي. يمكنك تعيين "watch-changes" : true لحساب تجزئة متكررة لجميع الملفات في الدليل وإعادة الفهرس تلقائيًا.file:// بروتوكول. هذا يتيح لك فهرسة استنساخ محلي لمستودع. الجانب السلبي هنا هو أن الاقتراع للحفاظ على repo حتى الآن لن يعمل. (هذا لا يعمل أيضًا على المجلدات المحلية التي لا تحتوي على نوع مستودع مدعوم.) إذا كنت تستخدم Docker ، فيجب عليك تركيب وحدة تخزين على مستودعك (على سبيل المثال ، -v $(pwd)/src:/src ) واستخدام المسار النسبي إلى الريبو في التكوين الخاص بك."url" : "[email protected]:foo/bar.git" . طالما أن لديك مفاتيح SSH الخاصة بك تم إعدادها على المربع حيث يعمل Hound هذا سيعمل. بشكل افتراضي ، استطلاعات الصيد عنوان URL في التكوين للحصول على التحديثات كل 30 ثانية. يمكنك تجاوز هذه القيمة عن طريق تعيين مفتاح ms-between-poll على أساس كل ريبو في التكوين. إذا كنت تقوم بفهرسة عدد كبير من المستودعات ، فقد تكون مهتمًا أيضًا بالتبديل في خاصية max-concurrent-indexers . يمكنك أن ترى كيف تعمل هذه في مثال التكوين.
حاليا المحررين التاليين لديهم ملحقات إضافية تدعم Hound:
git clone https://github.com/hound-search/hound.git
cd hound
make
ستكون Hound Executables متوفرة في .build/bin .
هناك عدد متزايد من الاختبارات في كل من الحزم في كلب الصيد. يرجى التأكد من هذه المرور قبل تحميل طلب السحب الخاص بك. يمكنك إجراء الاختبارات مع الأمر التالي. لتشغيل جناح الاختبار بأكمله ، استخدم:
make test
إذا كنت ترغب فقط في تشغيل جناح اختبار JavaScript ، فاستخدم:
npm test
من المفترض أن تكون أي ملفات GO التي تنتهي في _test.go هي ملفات اختبار. وبالمثل ، يتم تلقائيا أي ملفات javaScript التي تنتهي في .test.js بواسطة Jest ، Runner لدينا. يجب أن تعيش الاختبارات بجوار الملفات التي تغطيها. تحقق من مستندات Jest للحصول على مزيد من التفاصيل حول كتابة اختبارات Jest ، وتحقق من مستندات اختبار Go لمزيد من التفاصيل حول رمز Go Test.
تحتاج إلى تثبيت Node.js >= 12 وتثبيت jest بواسطة npm install jest لتشغيل اختبارات JS.
يتضمن Hound واجهة مستخدم الويب التي تتكون من عدة ملفات (HTML ، CSS ، JavaScript ، إلخ). لتجميع تغييرات واجهة المستخدم استخدام:
make ui
لتسهيل التطوير ، هناك علامة تقرأ الملفات من نظام الملفات (تتيح دورة التعديل/التحديث المحببة).
أولاً ، يجب عليك التأكد من تثبيت جميع التبعيات التي تحتاجها عن طريق التشغيل:
make dev
ثم قم بتشغيل خادم Hound مع خيار -dev:
.build/bin/houndd --dev
تم إنشاؤه في Etsy بواسطة:
يتم الحفاظ على كلب الصيد من قبل: