2008-11-29 15 views
19

Estoy pensando en pedir a mis alumnos que utilicen git para la programación de pares. Debido a que el trabajo de los estudiantes tiene que ser secreto, un repositorio público está fuera de cuestión. En cambio, cada estudiante tendrá un repositorio privado que ellos mismos mantendrán, y deberán intercambiar parches usando el parche de formato git. He leído la página del manual, pero estoy un poco incierto , que se enviarán parches. Lo obvio para los estudiantes sería enviar todos los parches desde el último envío o (si git no le importa recibir los mismos parches de forma redundante) enviar todos los parches desde el principio de los tiempos. (Recuerde que estos son proyectos de estudiantes, duran un par de semanas y son pequeños, y el rendimiento de no es un criterio.) Nuestro mejor amigo es simplicidad y también nos gusta la fuerza bruta.Buscando ejemplos de flujo de trabajo usando git-format-patch y git am

¿Alguien me puede dar una breve serie de ejemplos que muestran a dos personas, cada una con un repositorio privado de git, intercambiando parches usando git-format-patch y git-am? ¿O, como alternativa, apúntame a la documentación y/o tutorial existente de git?

+0

git-paquete http://stackoverflow.com/questions/2175961/git-keeping-a-project-synced-via-mail/2188030#2188030 – ijk

Respuesta

21

Funciona mejor si pueden ver los repositorios git de los demás. El propio git se gestiona de esta manera (hay un repositorio público al que la gente puede hacer referencia, y luego formatean el parche desde allí). Si las personas nunca se miran mutuamente, las cosas son un poco más difíciles ...

Lo único que deben hacer es mantener una referencia a la última vez que hicieron un parche de formato. Digamos que comienzan con sólo el envío de la totalidad de su árbol (incluyendo .git):..

tar cvf - mytree | gzip -9vc > /tmp/mytree.tgz 
# mail /tmp/mytree.tgz 
git tag last-send 
# hack, commit, hack, commit 
git format-patch -M -C last-send.. 
# mail 00* && rm 00* 
git tag -f last-send 

git tag en esta forma crea una "etiqueta de peso ligero Es una especie de marcador Esta será una manera fácil para las personas para realizar un seguimiento de lo enviaron para que puedan enviar la próxima vez

Por otro lado:..

# get patches from mail and place in /tmp 
git am /tmp/00* 
rm /tmp/00* 
+0

tristemente, nunca ven repos-- del otro -aunque pueden estar ambos frente a una computadora trabajando en uno de los dos repos. Pero esto se ve como lo que esperaba, así que me pone al día. –

+0

Gracias por esta respuesta. Me ayudó a convertir un desordenado repositorio SVN en Git. Mis experiencias están en http://blog.orfjackal.net/2009/05/converting-confused-svn-repositories-to.html –

+0

¿Qué pasa con 'git bundle'? Parece que es el mejor método para este flujo de trabajo de código compartido. A diferencia del formato-parche, se trata más de un flujo de trabajo de comunicación en un solo sentido. – Sukima

0

parece que git bundle es la mejor opción a diferencia git format-patch que es un flujo de trabajo de comunicación unidireccional, Bulto te permite para aprovechar el mismo flujo de trabajo que utiliza con controles remotos públicos, pero están separados del acceso directo.

Está diseñado para sneaker-nets y sería perfecto para los estudiantes a ahorrar en paquetes USB o de correo electrónico.

parches son más para enviar para su aprobación por un estilo de comunicación líder del proyecto.

Cuestiones relacionadas