Enlazar GitHub con RedIRIS mediante git-svn

Para participar en el VI Concurso Universitario de Software Libre es necesario trabajar en la forja de RedIRIS, que utiliza el sistema de control de versiones Subversion (SVN).

Este requisito facilita la supervisión de los proyectos por parte de la organización y no supone ningún problema para los proyectos que parten de cero, pero para los proyectos ya existentes que se presentan al concurso y que ya liberaron su código en su momento puede suponer un problema, pues ya tienen su propia forja.

Este último es el caso de SWADroid, cuyo código fuente fue publicado en la forja de GitHub, que utiliza el sistema de control de versiones Git, en el mismo momento en que comenzó su desarrollo.

Dado que la intención de SWADroid es seguir utilizando la forja de GitHub tal y como ha venido haciendo hasta ahora y dejar la forja de RedIRIS únicamente para su participación en el CUSL, durante el desarrollo del concurso será necesario publicar los cambios en ambas forjas de forma simultánea.

Aquí es donde entra en juego git-svn.

git-svn es un componente de Git que ejerce de puente entre éste y SVN. Se utiliza principalmente para trabajar de forma local con Git y subir los cambios a un servidor remoto que utilice SVN y para realizar migraciones entre ambos sistemas.

La forja de RedIRIS se proporciona totalmente vacía, sin ninguna estructura de directorios, por lo que el primer paso es crear la estructura básica estándar de un repositorio SVN:

  1. Crear un directorio temporal vacío en el que se inicializará el repositorio SVN: mkdir rediris
  2. cd rediris
  3. Crear la estructura básica estándar de un repositorio SVN: mkdir branches tags trunk
  4. Subir los cambios a la forja de RedIRIS: svn commit -m “Create repository structure”
  5. Borrar el directorio rediris, pues ya no se necesitará más.

Para enlazar las dos forjas de SWADroid se han dado los siguientes pasos:

  1. Crear un directorio vacío en el que se inicializará la copia local de trabajo: mkdir cusl6-swadroid
  2. cd cusl6-swadroid
  3. Clonar el repositorio SVN ya inicializado en el repositorio Git: git svn clone –username NOMBRE_DESARROLLADOR –stdlayout https://forja.rediris.es/svn/cusl6-swadroid/trunk .
  4. Añadir la forja de GitHub como origen remoto: git remote add origin git@github.com:Amab/SWADroid.git
  5. Obtener la información del origen remoto, este paso creará las ramas remotas necesarias para el siguiente paso: git fetch origin
  6. Crear la rama local de desarrollo enlazándola con la rama remota de desarrollo: git checkout -b develop origin/develop
  7. Subir los cambios a la forja de RedIRIS: git svn dcommit

NOTA: Subir los cambios a la forja de RedIRIS puede tardar mucho tiempo, ya que git-svn recrea todo el historial de cambios realizando todos los commits en SVN uno a uno y el protocolo utilizado por SVN es bastante lento, por lo que si hay muchos commits el proceso será largo.

En este momento ya estará lista la copia local de trabajo, que estará enlazada tanto con la forja de GitHub como con la forja de RedIRIS. Además, la forja de RedIRIS contendrá una copia exacta del historial de cambios, ya que se han recreado todos los commits del repositorio original con sus respectivos mensajes.

Lo único que no se habrá recreado son los nombres de los autores de cada commit, ya que mientras que Git utiliza el nombre y la dirección de correo electrónico, SVN sólo utiliza el nombre. Al utilizar sistemas distintos para referenciar a los autores de los commits, la migración efectiva de dichas referencias entre ambos sistemas de control de versiones es una tarea muy complicada.

Una vez preparada la copia local de trabajo, el flujo de trabajo diario es el siguiente:

  1. Obtener los últimos cambios de la forja de GitHub: git pull origin develop
  2. Obtener los últimos cambios desde la forja de RedIRIS e integrarlos en la copia local de trabajo: git svn rebase
  3. Continuar el desarrollo y realizar los commits necesarios en Git.
  4. Subir los cambios realizados a la forja de RedIRIS: git svn dcommit
  5. Subir los cambios realizados a la forja de GitHub: git push origin develop

Como se puede ver, el flujo de trabajo no difiere demasiado del que se utilizaría si sólo se trabajara con Git, puesto que para trabajar con ambas forjas de forma simultánea sólo hay que realizar dos pasos adicionales: obtener e integrar los últimos cambios de la forja de RedIRIS al principio y subir los cambios realizados al final.

Un detalle a tener en cuenta a la hora de ejecutar el comando git svn dcommit para subir los cambios a la forja de RedIRIS es que éste sólo tendrá éxito si no hay ningún cambio pendiente de commit en Git. La ejecución del comando git push origin develop para subir los cambios a la forja de GitHub no tiene este problema, pues sube únicamente los cambios a los que se haya realizado commit.

SWADroid se presenta al VI Concurso Universitario de Software Libre

SWADroid es una aplicación para acceder a algunas funcionalidades de SWAD en dispositivos móviles con Android.

Nos presentamos al VI Concurso Universitario de Software Libre con la ilusión de dar a conocer el proyecto, conseguir colaboraciones, participar en los eventos locales organizados por la Oficina de Software Libre de la Universidad de Granada … y si cae algún premio tampoco le haríamos ascos.

Hasta el inicio del curso académico 2011/2012 la aplicación fue desarrollada por Juan Miguel Boyero Corral en su Proyecto Fin de Carrera, que fue tutorizado por Antonio Cañas Vargas (creador de SWAD) e incluía las siguientes funcionalidades:

  • Leer notificaciones
  • Realizar exámenes de autoevaluación
  • Enviar y responder mensajes

Las notificaciones nos permiten estar al tanto de las novedades en SWAD de una forma muy rápida y cómoda, consumiendo muy poco ancho de banda y sin necesidad de identificarnos cada vez (la identificación se guarda en la configuración de la aplicación). Al comienzo del curso 2011/2012, SWADroid admite todas las notificaciones contempladas en SWAD:

  • Nuevas actividades
  • Nuevas convocatorias de examen
  • Nuevos archivos de calificaciones
  • Nuevos avisos
  • Nuevos mensajes
  • Nuevas respuestas a mis mensajes en foros
  • Nuevas encuestas

La función de tests de autoevaluación permite descargar las preguntas de test en las asignaturas que dispongan de ellas y genera exámenes de autoevaluación con la configuración establecida por el profesor de la asignatura. El usuario podrá realizar estos exámenes para comprobar sus conocimientos y habilidades en la materia en cuestión. Los tests pueden descargarse cuando el móvil tiene conexión, y una vez descargados, se pueden realizar todos los test que se deseen sin necesidad de conexión. SWADroid admite todos los tipos de preguntas contemplados en SWAD:

  • Verdadero / Falso
  • Elección de una única respuesta correcta entre varias opciones
  • Elección de varias respuestas correctas posibles (entre 0 y todas) entre varias opciones
  • Cadena de caracteres
  • Número entero
  • Número real

En cuanto a los mensajes, es posible enviar un nuevo mensaje si se conoce el apodo del destinatario o responder a un mensaje recibido desde la notificación correspondiente.

En el curso 2011/2012 se incorpora al proyecto Helena Rodríguez Gijón para añadir diversas mejoras y ampliaciones. Entre ellas se pueden destacar la traducción de SWADroid a otros idiomas que aún no estén disponibles, la revisión del diseño de la interfaz gráfica y la implementación de nuevas funciones de acceso a SWAD:

  • Consultar calificaciones
  • Escribir avisos
  • Descargar documentos
  • Enviar trabajos
  • Ver listas de alumnos / profesores
  • Ver ficha de alumno
  • Apuntarse o borrarse de grupos
  • Leer / escribir en foros
  • Realizar encuestas
  • Cambiar datos personales
  • Enviar estadísticas de uso sobre los tests.

A las funciones ya descritas se añadirán las mejoras sugeridas por los usuarios de la aplicación a través de la comunidad creada en torno a SWADroid: