2009-09-04 8 views
13

Estoy impartiendo un nuevo curso en una nueva universidad este semestre, y estoy realmente interesado en poner en marcha a mis alumnos utilizando las mejores prácticas. De esta manera, me gustaría asignar y recibir tareas de ellos usando repositorios git. Lamentablemente, uso git, pero no lo entiendo lo suficiente como para saber cuáles son los potenciales agujeros de seguridad y cómo evitarlos. Además, solo he usado git para el control de versiones personales, y nunca en un grupo o equipo.¿Puedo usar git para enviar trabajos?

Mi plan actual es configurar la máquina A con los usuarios del 1 al 12, correspondientes a cada uno de mis alumnos. Generaré un par de claves públicas/privadas ssh para cada alumno y un repositorio inicial de git también. Luego, los estudiantes pueden acceder al repositorio para nuevas asignaciones e ingresar a él cuando se presenten.

Idealmente, sin demasiados problemas, podré pasar de un repositorio principal a los repositorios de estudiantes cuando estoy asignando tareas. Si fuera posible extraer de sus repositorios en el repositorio principal, también sería claro.

Editar: Este texto no estaba claro. Tengo la intención de que empujen/tiren a su repositorio individual cuando completan una tarea o se les da una nueva. No creo que pueda enviar tareas a sus laptops :)

Entonces, ¿dónde empiezo? ¿Qué busco? ¿Es una mala idea? Si es así, ¿por qué?

+5

Creo que es una buena idea. Estoy deprimido por la poca exposición que tuve a las mejores prácticas de herramientas como el control de versiones mientras estudiaba. Si es una buena idea es diferente. –

+1

Creo que deberías ir por tener que sacar de un repositorio para obtener la tarea. De esa manera ellos son los que hacen el trabajo, no tú. –

+0

Es una idea brillante. Tal vez incluso configure un área en http://github.com/ para incluir instrucciones de asignación, etc. ... – grenade

Respuesta

5

Puede utilizar Gitosis para administrar el acceso SSH a los repositorios, como se describe en scie.nti.st: Hosting Git repositories, The Easy (and Secure) Way y Tv's cobweb: Snakepit and gitosis, things I've been working on blogs, y en Chapter 4.7: Gitosis de "Pro Git: control de versión profesional" libro. Está en Python y requiere herramientas de configuración. O puede intentar encontrar su equivalente, como gitolite (anteriormente gitosis-lite) en Perl.

La solución alternativa sería que cada uno de los estudiantes tenga su propio repositorio, o un par de repositorios: uno privado en el que esté trabajando, y (semi) público uno con acceso SSH empuja para completar el trabajo terminado . Usted actuaría como mantenedor/integrador y extraería los cambios de sus repositorios públicos en su repositorio (o sus repositorios). Los estudiantes sacarían de su repositorio público (o repositorios).

+0

Gracias Jakub. ¿Recomiendas gitosis o cuentas de usuario para mantener los repositorios por separado? Ambas parecen opciones viables y no estoy seguro de cuál será más fácil y más seguro. –

+0

No tengo la necesidad de configurar repositorios git multiusuario, así que no puedo decírtelo; No tengo experiencia personal con dicha configuración. Recomiendo leer capítulos relevantes de "Pro Git" (y tal vez también "Manual de usuario de Git" y "Libro comunitario de Git"). –

+2

gitosis es una solución bastante cómoda para administrar los repositorios de git y el acceso de los usuarios. Puede gestionar todos los repositorios y acceder a los permisos a través de 1 archivo de configuración. He estado usando la gitosis durante aproximadamente un año y la administración y el uso son muy sencillos. Definitivamente vale la pena echarle un vistazo. – maff

2

Para que ingrese en sus repositorios (que son propiedad de su usuario) implica que necesita usar el privilegio de root para ingresar al suyo. ¿Por qué no publicar la ruta a la tarea y hacer que la tiren?

Por supuesto, también puede restringir las claves ssh para que solo se ejecute un comando determinado; quizás podría restringir las rutas en un único repositorio propiedad de un único usuario en función de la clave proporcionada.

Git es un DCVS, así que me gusta su idea de cuentas múltiples.

+0

"Para que ingrese a sus repositorios (que son propiedad de su usuario) implica que necesita usar el privilegio de root para impulsar el suyo". Espero poder solucionar esto al sumarme al grupo de cada alumno. Por supuesto, no tengo ningún reparo en usar sudo en este caso :) –

+0

Sí, tal vez solo forzar su umask a 002 haría el truco (haciendo que el grupo de archivos creados se pueda escribir). –

+1

'git init' tiene una opción' --shared' solo para esta situación. Git configurará los bits de acceso del grupo en el repositorio a algo que tenga sentido (para el grupo). –

2

Si usa Git, sus estudiantes deberán aprender muchos conceptos relacionados con la administración de la configuración del software, control de versiones, etc. que no es necesario para enseñar, por ejemplo, un curso de Geografía. ¿Estás enseñando un curso SCM? Si es así, tu idea suena bien. De lo contrario, podría considerar algo como Moodle. Si sus usuarios están en Windows, recuerde que Git no está en su mejor momento en ese entorno.

+0

Acepto, realmente debes asegurarte de que dominan la herramienta, para que no pierdan datos, etc. Por lo tanto, debes dedicar unas horas a enseñar los primeros conceptos básicos de VCS/DVCS, luego detalles de git (reflog, índice, etc.)) – tonfa

+0

Esto podría ser un factor decisivo. Aunque la clase se imparte en un nivel de postgrado a estudiantes con una formación de pregrado en ciencias de la computación, no habrá material sobre el control de versiones. Espero que puedan usar MUY básico git add/commit/push para entregar sus asignaciones. Podría asignar una hora en un laboratorio para que se familiaricen con git, pero no más. –

Cuestiones relacionadas