Open ahcarlos opened 6 years ago
Parece una buena aproximación al problema. Habrá que hacer pruebas. 👍
Hola @alu0100816167,
foreach_eval
trabaja sobre el repo del directorio en el que estás en el momento de ejecutar (en la bash) ghedsh
.
Me parece mas natural que ghedsh lo hiciera cuando estás posicionado en un repo:
crguezl> ULL-ESIT-PL-1718> cd repo alberto
crguezl> ULL-ESIT-PL-1718> alberto> foreach_eval git pull origin master
Por cierto, sería posible hacer un alais de foreach_eval
a simplemente foreach
?
Probando la nueva conducta de foreach
:
crguezl> ULL-ESIT-PL-1718> <-- pulso CTRL-Z para ir a la shell y suspender ghedsh
[1]+ Detenido ghedsh
[/tmp/ale]$ pwd
/tmp/ale <-- se ve claramente que el directorio actual no es el repo de evaluación
[/tmp/ale]$ fg <--- vuelvo a ghedsh con el comando foreground
ghedsh
crguezl> ULL-ESIT-PL-1718> cd repo alejandro-eval <-- me cambio en ghedsh al repo de evaluación
crguezl> ULL-ESIT-PL-1718> alejandro-eval> foreach npm test <-- le mando a ejecutar las pruebas
alejandro-eval
Fetching origin
Fetching submodule Egg-en-Pegg-AlejandroLF
Fetching submodule OOP-AlejandroLF
Fetching submodule a-programming-language-AlejandroLF
Fetching submodule analizador-lexico-para-js-AlejandroLF
Fetching submodule egg-2-AlejandroLF
Fetching submodule egg-3-AlejandroLF
Fetching submodule egg-4-AlejandroLF
Fetching submodule iaas-AlejandroLF
...
Fetching submodule npm-modules-AlejandroLF
ssh_exchange_identification: read: Operation timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Fetching submodule prueba-modulo-AlejandroLF
Fetching submodule regexp-alu0100845808-alejandro
Fetching submodule regexp-alu0100973792-alejandro
Fetching submodule tfa-AlejandroLF
Entering 'Egg-en-Pegg-AlejandroLF'
> egg-en-pegg-alejandrolf@1.4.6 test /private/tmp/ale/alejandro-eval/Egg-en-Pegg-AlejandroLF
> mocha
sh: mocha: command not found
npm ERR! Test failed. See above for more details.
Entering 'OOP-AlejandroLF'
> oop@1.0.0 test /private/tmp/ale/alejandro-eval/OOP-AlejandroLF
> NODE_PATH=./src mocha
sh: mocha: command not found
Parece que vuele a cargar los submódulos ¿Donde? y los tests fallan!
Parece que la forma anterior en la que lo habías hecho es la correcta.
El usuario de ghedsh
debe estar posicionado en el repo local de evaluación.
Sorry. My fault!
😭 😞 😢
Quiero decir que el fetching adicional hace la cosa mas lenta
No hay problema 👍, volvemos a la conducta anterior, que era estar dentro del super-repo de evaluación para ejecutar el comando del foreach y no se hará el fetching adicional.
En cuanto al vídeo, una buena manera de explicar la parte de submodules de git y hacer la demo con ghedsh
. En cuanto realice los cambios se lo hago saber.
@crguezl he creado una primera aproximación del repositorio de evaluación (ghedsh version 2.2.0). Funciona de la siguiente manera:
Dentro de una organización hacemos:
User > Org > new_eval <repo_name> /<grading-repos>/
, en el querepo_name
es el nombre del repositorio de evaluación y/grading-repos/
es la expresión regular de los submodules que componen el 'super-repo'.Lo que lleva a cabo el comando es: crea un repositorio privado dentro de la organización en la que se encuentre y un directorio en su máquina local con el nombre
repo_name
en el directorio actual y añade como submodules los repositorios (de la organización) que casen con la Regexp. Lo siguiente que se lleva a cabo es la inicialización de git dentro del directorio local y se hace un push al repositorio de evaluación creado, así si lo desea puede clonarlo.En relación con el comando
new_eval
, he definido otro comando llamadoforeach_eval
que permite ejecutar un comando bash sobre cada submodule. Hay que tener en cuenta que, para que el comando funcione, el directorio actual de la máquina tiene que ser dentro del repositorio de evaluación (y estar dentro de la organización en ghedsh). Un ejemplo de uso sería ejecutar sobre cada submodule unnpm install
o unnpm test
(puede ser cualquier otro comando bash).User > Org > foreach_eval npm install