0.9.2-alpha • Published 4 months ago

edu-git v0.9.2-alpha

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

edu-git

Sobre este proyecto

edu-git es un toolkit o conjunto de scripts que facilitan la sincronización de repositorios bajo un supuesto ambiente académico, en el que hay una relación instructor/profesor con alumnos. Esta utilidad se basa en tener un repositorio base, donde se planteará la actividad, y un conjunto de FORKs donde se espera el trabajo desenvuelto por el alumnado.

El toolkit edu-git se plantea en un conjunto de script que faciliten y automaticen las tareas más frecuentes y repetitivas, como añadir en el repositorio del instructor/profesor el resto de repositorios remotos correspondientes a todos los FORKs de los alumnos. A través de un fichero CVS, se dispondrán de los datos suficientes para realizar esta tarea así como una sucesión de scripts para realizar las operaciones más frecuentes (sincronización o fetch de ramas, checkouts con acciones asociadas, archivo de soluciones para auditoría, etc.)

Quizá se pueda utilizar para otros propósitos, pero se insiste en el que el objeto es fundamentalmente para un ambiente académico.

Instalación

Ya sea mediante clonación con git o usando npm (la forma recomendada):

npm install -g edu-git

Se instala de forma global porque el propósito de los scripts edu-git es utilizarlo repositorios repartidos por diferentes paths del sistema.

Uso

Añadir de forma automatizada los repositorios remotos

El primer paso es añadir un conjunto más o menos grande de cadenas de conexión a repositorios remotos (generalmente serán de alumnos). Para ello, debe existir un fichero CSV con los datos necesarios para añadir estos repositorios remotos.

El fichero estárá ubicado por defecto en la ruta interna del propio reto exactamente con este nombre .git/people.csv. Un ejemplo de este fichero podría ser:

default_release_branch ,acount     ,prefix      ,suffix     ,platform       ,surname  ,name   ,
main                   ,faiadolabs ,COURSE2324- ,-2021-dist ,git@github.com ,Martinez ,Kike   ,
main                   ,faiadolabs ,COURSE2324- ,-2021-dist ,git@github.com ,Perez    ,Pepe   ,
main                   ,faiadolabs ,COURSE2324- ,-2021-dist ,git@github.com ,Álvarez  ,Manolo ,
master                 ,faiadolabs ,COURSE2324- ,-2021-dist ,git@github.com ,Inválido ,Paco   ,

En este fichero se pueden ver los campos necesarios evitentes para realizar una sincronización de un repo con sus remotos, y además, un campo denominado como default_release_branch, que será la rama por defecto en la que los alumnos dejen planteada su propia solución, su propia release branch o rama de entrega.

Un consejo sobre la generación de este fichero es que sea creado por los propios alumnos en una hoja de cálculo colaborativa en una Hoja de Cálculo de Google para que esta luego sea exportada en formato .csv. La rama de entrega o release branch por otra parte, conviene que sea con un formato normalizado. Por ejemplo rb/nameSurname/develop.

El script utilizado en este caso será edu-git-remote y se podrá consultar su uso con la opción --help, empleando esta para su uso general o para su subcomando específico en particular:

# edu-git remote --help
edu-git-remote <command> [args]

Comandos:
  edu-git-remote add     Agrega los repositorios remotos a partir de un fichero
                         csv
  edu-git-remote remove  Elimina los repositorios remotos

Opciones:
  --version  Muestra número de versión                                [booleano]
  --help     Muestra ayuda                                            [booleano]
# edu-git remote add --help
edu-git-remote add

Agrega los repositorios remotos a partir de un fichero csv

Opciones:
      --version         Muestra número de versión                     [booleano]
      --help            Muestra ayuda                                 [booleano]
  -f, --file            Fichero de importación
      --default-branch  Añade como rama por defecto la indicada en el fichero

A continuación y partiendo de un repositorio donde se plantee un ejercicio académico, y se deseen añador los FORKs de los alumnos se realizaría la siguiente operación:

# Situándose por ejemplo en ~/git/programming-exercise-01/
edu-git-remote add

El resultado que arrojaría el script es:

[ADDED] git remote add COURSE2324-MartinezKike ssh://git@github.com/faiadolabs/programming-exercise-01
[ADDED] git remote add COURSE2324-PerezPepe ssh://git@github.com/faiadolabs/programming-exercise-01
[ADDED] git remote add COURSE2324-ÁlvarezManolo ssh://git@github.com/faiadolabs/programming-exercise-01
[ADDED] git remote add COURSE2324-InválidoPaco ssh://git@github.com/faiadolabs/programming-exercise-01

Sincronización de los repositorios

Una vez añadidas las cadenas de conexión a los repositorios remotos, se puede proceder a la sincronización con el siguiente script:

# edu-git-fetch --help
edu-git-fetch <command> [args]

Opciones:
      --version  Muestra número de versión                            [booleano]
  -p, --prefix
  -b, --branch
      --help     Muestra ayuda                                        [booleano]

Para realizar una sincronización básica:

# Situándose por ejemplo en ~/git/programming-exercise-01/
edu-git-fetch
[REF] git remote update COURSE2324-InválidoPaco
[FETCHED] git remote update COURSE2324-MartinezKike
[FETCHED] git remote update COURSE2324-PerezPepe
[FETCHED] git remote update COURSE2324-ÁlvarezManolo
[FETCHED] git remote update origin

Nótese que en la salida se puede apreciar la correcta sincronización o no de cada uno de los remotos. Puede haberse sincronizado (FETCHED), hacer fallado por credenciales o mala cadena de conexión (FAIL) o puede haberse producido la conexión pero no ser posible la sincronización de la rama por un problema de nombrado de esta ([REF])

Licencia

MIT especificada en LICENCE.txt

Contacto

Project Link: https://github.com/faiadolabs/edu-git