Uso de git para el mantenimiento de parches locales o públicos

download Uso de git para el mantenimiento  de parches locales o públicos

If you can't read please download the document

description

Uso de git para el mantenimiento de parches locales o públicos

Transcript of Uso de git para el mantenimiento de parches locales o públicos

  • 1. Uso de git para el mantenimientode parches locales o pblicos Iaki Arenaza [email_address] [email_address] (Creative Commons Attribution-Share Alike 2.5 Spain License) http://tinyurl.com/5q2k9f

2. Contenidos

  • Premisas y modelo de trabajo propuesto.

3. Creacin de los diferentes repositorios. 4. Trabajo con ramas. 5. Operaciones en el rea de trabajo. 6. Creacin de parches y series de parches. 7. Exportacin de cambios a cvs.moodle.org. 8. Premisas del modelo de trabajo Repositorio 'compartido' de referencia 9. Premisas del modelo de trabajo A provechar el repositorio de git.moodle.org No usar 'git clone' para la importacin desde git.moodle.org 10. Premisas del modelo de trabajo Repositorio compartido slo con ramas locales 11. Premisas del modelo de trabajo Desarrollo siempre en las ramas locales 12. Premisas del modelo de trabajo Ramas estndar slo en repositorios de losdesarrolladores 13. cvs.moodle.org git.moodle.org pasarela de importacin de cvs a [email protected] repositorio compartido @mondragon.edu copia de trabajo + repositorio desarrollador git-remote + git-push git-fetch git-push git-pull git-fetch git-push git-pull git-remote + git-fetch git-fetch / git-pull git-clone git-clone git-remote + git-fetch git-fetch / git-pull git-fetch git-push git-pull 14. Creacin repositorio compartido Crear repositorio desarrolladorgit config --global user.name 'Desarrollador-1' git config --global user.email

cd /ruta/repositorio/desarrollador mkdir desarrollador-1.git cd desarrollador-1.git git init 15. Creacin repositorio compartido Importar repositorio de moodle.org git remote add -tcvshead-tMOODLE_19_STABLE -m cvshead moodle-org git ://git.moodle.org/moodle.git git fetch moodle-org 16. Creacin repositorio compartido Ramas locales de seguimiento (opcional) git branch --track cvsheadmoodle-org /cvshead git branch --track MOODLE_19_STABLEmoodle-org /MOODLE_19_STABLE 17. Creacin repositorio compartido Ramas locales de trabajo git branch mdl19-ldap-refactormoodle-org /MOODLE_19_STABLE 18. Creacin repositorio compartido Crear repositorio compartido cd /ruta/repositorio/compartido mkdir compartido.git cd compartido.git git --bare init --shared=all chmod g=rwxs,o=rx . sudo chgrp -R git-moodle . 19. Creacin repositorio compartido Enviar rama local al repositorio compartido cd /ruta/repositorio/desarrollador/desarrollador-1.git git remote add compartido/ruta/repositorio/compartido/compartido.git git push compartido+ mdl19-ldap-refactor:mdl19-ldap-refactor 20. Creacin repositorio compartido Configurar rama local para hacerpulldesde repositorio compartido git config branch.mdl19-ldap-refactor.remotecompartido git config branch.mdl19-ldap-refactor.mergerefs/heads/mdl19-ldap-refactor 21. Creacin repo nuevo desarrollador Clonar repositorio compartido git config --global user.name 'Desarrollador-2' git config --global user.email'[email protected]' cd /ruta/repositorio/desarrollador git clone -o compartido/ruta/repositorio/compartido/compartido.gitdesarrollador-2.git 22. Creacin repo nuevo desarrollador Importar ramas estndar (opcional) cd desarollador-2.git git remote add -tcvshead-tMOODLE_19_STABLE -m cvshead moodle-orggit://git.moodle.org/moodle.git git fetch moodle-org 23. Creacin repo nuevo desarrollador Ramas locales de trabajo git branch mdl19-ldap-refactorcompartido /mdl19-ldap-refactor git checkout mdl19-ldap-refactor 24. Operaciones en el rea de trabajo

  • Crear nuevas ramas locales (ultra rpido y barato en disco):
  • Extraer una rama al rea de trabajo:
  • Consultar la rama activa:
  • Mostrar el estado del rea de trabajo:
  • Marcar cambios paracommit :

git branch mdl19-nested-groups mdl19-ldap-refactor git checkout mdl19-nested-groups git branch git status git add fichero1 fichero2 ... git rm fichero3 fichero4 ... 25. Operaciones en el rea de trabajo

  • Mostrar diferencias con el el ndice o con HEAD:
  • Mostrar diferencias con otras ramas:
  • Hacer commit de los cambios (marcados):
  • Enviar cambios locales al repositorio compartido:
  • Actualizar repositorio local desde repositorio compartido:

git diff git diff HEAD git diffMOODLE_19_STABLE git diffMOODLE_19_STABLE .. mdl19-ldap-refactor git commit git push compartido git fetch compartido git pull compartido 26. Operaciones en el rea de trabajo

  • Enviarnuevarama de repositorio local al repositorio compartido:
  • Configurar rama para poder hacerpulldesde repositorio compartido:
  • Incorporar nueva rama del repositorio compartido al repositorio local
  • Usar gitk para visualizar el historial de una rama:

git push compartido+mdl19-nested-groups:mdl19-nested-groups git config branch.mdl19-nested-groups.remotecompartido git config branch.mdl19-nested-groups.mergerefs/heads/mdl19-nested-groups git fetch compartido git branch mdl19-enrol-database-refactorcompartido/mdl19-enrol-database-refactor gitk -n 50 mdl19-nested-groups 27. Creacin de parches y series Creacin de parches monolticos git checkout mdl19-enrol-database-refactor git diffMOODLE_19_STABLE>mdl19-enrol-database-refactor.diff 28. Creacin de parches y series Creacin de serie de parches git checkout mdl19-enrol-database-refactor git format-patch -oserie-enrol-db-refactor MOODLE_19_STABLE 29. Exportacin directa a cvs.moodle.org Preparar entorno de trabajo y buscar cambio a aplicar cd /ruta/copia/trabajo/CVS/con/rama/adecuada export GIT_DIR=/ruta/repo/desa-1.git/.git ...obtener SHA1 del commit a exportar congitk, git log o similares; Supongamos que hemos cambiado el fichero ' auth/ldap/auth.php ' y el SHA1 del commit es: 4e976e4114beea9f82420bf0c66edb2494d0272a 30. Exportacin directa a cvs.moodle.org Aplicar el cambio git cvsexporcommit -p -v4e976e4114beea9f82420bf0c66edb2494d0272a 31. Exportacin directa a cvs.moodle.org Verificar los cambios y hacer commit en CVS ...verificar los cambios en la copia ...de trabajo de CVS y luego ejecutar: cvs commit -F .msg ' auth/ldap/auth.php ' 32. Agradecimientos

  • Gracias a:
  • La comunidad de Moodle

33. La comunidad de git 34. La gente de Catalyst Esta presentacin: 35. El artculo completo: http://tinyurl.com/5q2k9f http://tinyurl.com/4eyj3s 36. Algunos trucos bajo la manga (bonus track )

  • git add --interactive

37. git rebase

  • git stash[save | list | show | apply | remove | clear]
  • git bisect, git blame

38. .git/hooks/*

  • git gc, git prune, git fsck

39. Limpieza del historial de una rama IMPORTANTE : No re-basar los cambios de una rama si sta ha sido publicada en otro repositorio. 40. Limpieza del historial de una rama Slo se puede aplicar a la rama activa git checkout mdl19-enrol-database-refactor git rebaseMOODLE_19_STABLE 41. Limpieza del historial de una rama Si hay conflictos, solucionar a mano, y decirle a git qu hemos arreglado git update-index enrol/database/config.htmlenrol/database/enrol.php git rebase --continue 42. Limpieza del historial de una rama Podemos abortar en todo momento git rebase --abort