Descripción general
El conector Git proporciona la funcionalidad para obtener archivos de repositorios Git y registrarlos en el índice de Fess.
Esta funcionalidad requiere el plugin fess-ds-git.
Repositorios compatibles
GitHub (público/privado)
GitLab (público/privado)
Bitbucket (público/privado)
Repositorios Git locales
Otros servicios de alojamiento Git
Requisitos previos
Es necesario instalar el plugin
Para repositorios privados, se requieren credenciales de autenticación
Se necesita acceso de lectura al repositorio
Instalación del plugin
Instale desde la pantalla de administración en «Sistema» -> «Plugins».
O consulte Complemento para más detalles.
Configuración
Configure desde la pantalla de administración en «Crawler» -> «Data Store» -> «Crear nuevo».
Configuración básica
| Campo | Ejemplo |
|---|---|
| Nombre | Project Git Repository |
| Handler | GitDataStore |
| Habilitado | Activado |
Configuración de parámetros
Ejemplo de repositorio público:
Ejemplo de repositorio privado (con autenticación):
Lista de parámetros
| Parámetro | Requerido | Descripción |
|---|---|---|
uri | Si | URI del repositorio Git (para clonar) |
base_url | No | URL base para visualización de archivos. Si no se configura, las URL estarán vacías y la eliminación automática de archivos borrados estará desactivada |
username | No | Nombre de usuario para autenticación Git. Se usa con password como alternativa a incluir credenciales en la URI |
password | No | Contraseña o token para autenticación Git. Se usa con username |
extractors | No | Configuración de extractores por tipo MIME |
default_extractor | No | Extractor de respaldo cuando ningún patrón MIME coincide (predeterminado: tikaExtractor) |
prev_commit_id | No | ID del commit anterior (para crawl diferencial). Se actualiza automáticamente después de un crawl exitoso |
commit_id | No | ID de commit objetivo (predeterminado: HEAD). Se puede especificar rama o etiqueta |
ref_specs | No | Git ref specs (predeterminado: +refs/heads/*:refs/heads/*) |
repository_path | No | Ruta del repositorio local. Si no se configura, se crea un directorio temporal que se elimina después del crawl |
include_pattern | No | Filtro de inclusión de rutas de archivo (regex) |
exclude_pattern | No | Filtro de exclusión de rutas de archivo (regex) |
max_size | No | Tamaño máximo de archivo para indexar en bytes (predeterminado: 10000000) |
cache_threshold | No | Umbral en bytes para cambiar entre buffering en memoria y disco (predeterminado: 1000000) |
readInterval | No | Intervalo de procesamiento entre cada archivo (en milisegundos, predeterminado: 0) |
Configuración de scripts
Campos disponibles
| Campo | Descripción |
|---|---|
url | URL del archivo |
path | Ruta del archivo en el repositorio |
name | Nombre del archivo |
content | Contenido de texto del archivo |
contentLength | Longitud del contenido |
timestamp | Fecha y hora de última modificación |
mimetype | Tipo MIME del archivo |
author | Información del último autor del commit (PersonIdent) |
committer | Información del committer (PersonIdent). Puede diferir del autor |
uri | URI del repositorio Git |
Autenticación en repositorios Git
GitHub Personal Access Token
1. Generar Personal Access Token en GitHub
Acceda a https://github.com/settings/tokens:
Haga clic en «Generate new token» -> «Generate new token (classic)»
Ingrese el nombre del token (ej: Fess Crawler)
Marque «repo» en los scopes
Haga clic en «Generate token»
Copie el token generado
2. Incluir credenciales en la URI
GitLab Private Token
1. Generar Access Token en GitLab
En GitLab User Settings -> Access Tokens:
Ingrese el nombre del token
Marque «read_repository» en los scopes
Haga clic en «Create personal access token»
Copie el token generado
2. Incluir credenciales en la URI
Autenticación con nombre de usuario y contraseña
En lugar de incluir credenciales en la URI, también puede especificar credenciales usando los parámetros username y password:
Las credenciales se usan solo cuando tanto username como password están especificados.
Nota
El conector Git admite únicamente autenticación HTTP/HTTPS (nombre de usuario y contraseña, o un token de acceso). La autenticación con clave SSH (URI con formato git@...) no está soportada. Utilice una URI con formato HTTPS.
Configuración de extractores
Extractores por tipo MIME
Especifique extractores por tipo de archivo con el parámetro extractors:
Formato: <regex_tipo_MIME>:<nombre_extractor>,
Extractores predeterminados
textExtractor- Para archivos de textotikaExtractor- Para archivos binarios (PDF, Word, etc.)
Solo archivos de texto
Todos los archivos
Solo tipos de archivo específicos
Crawl diferencial
Crawl solo de cambios desde el último commit
Después del primer crawl, configure prev_commit_id con el ID del commit anterior:
Nota
prev_commit_id se actualiza automáticamente al último ID de commit después de un crawl exitoso. Déjelo vacío para el crawl inicial para procesar todos los archivos; los crawls posteriores solo procesarán los cambios.
Procesamiento de archivos eliminados
Cuando base_url está configurado, los archivos detectados como eliminados a través de Git DiffEntry (ChangeType.DELETE) se eliminan automáticamente del índice.
Cuando un archivo es renombrado (ChangeType.RENAME), el documento en la ruta antigua se elimina del índice y el archivo en la nueva ruta se reindexiza.
Nota
La eliminación automática de archivos eliminados solo es efectiva cuando base_url está configurado. Si base_url no está configurado, la URL del documento estará vacía y la eliminación no se realizará.
Ejemplos de uso
Repositorio público de GitHub
Parámetros:
Script:
Repositorio privado de GitHub
Parámetros:
Script:
GitLab (self-hosted)
Parámetros:
Script:
Solo documentos (archivos Markdown)
Parámetros:
Script:
Solo directorios específicos
Filtrado con script:
Solución de problemas
Error de autenticación
Síntoma: Authentication failed o Not authorized
Verificaciones:
Verificar que el Personal Access Token sea correcto
Confirmar que el token tenga los permisos apropiados (scope
repo)Verificar que el formato de la URI sea correcto:
Verificar la fecha de expiración del token
Repositorio no encontrado
Síntoma: Repository not found
Verificaciones:
Verificar que la URL del repositorio sea correcta
Confirmar que el repositorio existe y no ha sido eliminado
Verificar que las credenciales sean correctas
Confirmar que tiene acceso al repositorio
No se pueden obtener archivos
Síntoma: El crawl tiene éxito pero hay 0 archivos
Verificaciones:
Verificar que la configuración de
extractorssea apropiadaConfirmar que existen archivos en el repositorio
Verificar que la configuración del script sea correcta
Confirmar que existen archivos en la rama objetivo
Error de tipo MIME
Síntoma: Ciertos archivos no se procesan
Solución:
Ajustar la configuración de extractores:
Repositorio grande
Síntoma: El crawl toma mucho tiempo o hay memoria insuficiente
Solución:
Limitar archivos objetivo con
extractorsFiltrar solo directorios específicos con script
Usar crawl diferencial (configurar
prev_commit_id)Ajustar el intervalo de crawl
Especificación de rama
Para rastrear una rama diferente a la predeterminada, especifique el nombre de la rama o etiqueta usando el parámetro commit_id:
Generación de URL
Patrones de configuración de base_url
GitHub:
GitLab:
Bitbucket:
La URL se genera concatenando directamente base_url con la ruta del archivo (sin insertar ningún separador). Por lo tanto, base_url debe terminar con una barra diagonal /.
Generación de URL en script
O con URL personalizada:
Información de referencia
Descripción General de los Conectores de Almacén de Datos - Descripción general de conectores de Data Store
Conector de Base de Datos (Búsqueda en Bases de Datos) - Conector de base de datos
Rastreo de Almacén de Datos - Guía de configuración de Data Store