¿Forma de search fuente en repositorys Gitolite?

Hay un montón de proyectos de git en un par de repositorys de Gitolite. ¿Hay alguna manera de search la palabra key contenida en un repository Gitolite?

Me gustaría poder search palabras key en todos los proyectos de git sin tener que clonarlos manualmente cada uno de ellos localmente primero. Para los proyectos que construye Jenkins, la fuente está expuesta en directorys que se pueden search. Pero no todos están construidos de esta manera.

Un ex compañero de trabajo que le envié un correo electrónico sabía cómo hacerlo. En la máquina donde se almacena el repository, cd en el directory del repository que contiene los proyectos. Dentro del directory .git de un proyecto individual, puede usar "git grep" en HEAD o en una twig. Para search en todos los directorys, use un ciclo desde el directory de dirs del proyecto:

for x in *; do cd $x git grep "MyString" HEAD cd .. done 

Un ejemplo con más opciones, incluido el nombre del proyecto que contiene cada coincidencia:

 for x in *; do cd $x git grep -i "mystring" HEAD -- '*.java' | sed "s|\(.*\)|$x-->\1|" cd .. done 

Gitolite es solo una capa de autorización , que intercepta:

  • command git
  • identidad de usuario

y decide si el command git puede continuar.

No tiene nada que ver con la function de búsqueda en sí.

Necesitas otra aplicación para implementar la búsqueda en tu repository git, como Elasticsearch .
Consulte " Buscar en un repository git con ElasticSearch ".

A continuación, puede acoplarlo con gitolite (para permitir la búsqueda o filtrar los resultados de búsqueda, según las reglas de acceso de gitolite).

Bueno, siempre puedes crear un command "grep". Después de todo, si puedes ejecutar 'symbolic-ref', ¿qué es grep?

Un problema será que las restricciones de gitolite sobre los caracteres permitidos pondrían un freno a las expresiones arbitrarias arbitrarias. (Si alguien realmente quiere esto, y con eso quiero decir que preguntan en la list de correo y al less un par de personas más repiten diciendo "¡Sí, lo queremos!"), Podría crear una forma de permitir que algunos progtwigs tener arguments sin restricciones. Ese código solo está esperando ser retirado de la sucursal 'git-annex', pero hasta ahora no le han gustado las testings).

Incluso puedes hacer que busque en varios proyectos. Por ejemplo, para hacer que busque todos los proyectos a los que el usuario tiene acceso de lectura, puede comenzar con esto:

 gitolite list-phy-repos | gitolite access % $GL_USER W any | grep -v DENIED | cut -f1 

y luego, para cada repository que surja, lo cd en él y ejecuta 'git grep'

La próxima etapa en complejidad sería una list de repos que desea search / no search (porque usted es el tipo que tiene acceso a todos los repos, ¡y eso no es realmente lo que quiere!). Esto se vuelve un poco más difícil de diseñar de manera efectiva. Puede ser más fácil marcar los repos disponibles en el file conf, usando un nombre de grupo de algún tipo. El command grep podría verificar fácilmente la membresía en ese grupo especial como una restricción adicional.

Sitaram