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

  • 2,134 views
Uploaded on

Uso de git para el mantenimiento …

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,134
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
33
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Uso de git para el mantenimiento de parches locales o públicos Iñaki 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. Creación de los diferentes repositorios.
    • 4. Trabajo con ramas.
    • 5. Operaciones en el área de trabajo.
    • 6. Creación de parches y series de parches.
    • 7. Exportación 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 importación desde git.moodle.org
  • 10. Premisas del modelo de trabajo Repositorio compartido sólo con ramas locales
  • 11. Premisas del modelo de trabajo Desarrollo siempre en las ramas locales
  • 12. Premisas del modelo de trabajo Ramas estándar sólo en repositorios de los desarrolladores
  • 13. cvs.moodle.org git.moodle.org pasarela de importación de cvs a git @moodle.org 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. Creación repositorio compartido Crear repositorio desarrollador git config --global user.name 'Desarrollador-1' git config --global user.email
      'desarrollador-1@mondragon.edu'
    cd /ruta/repositorio/desarrollador mkdir desarrollador-1.git cd desarrollador-1.git git init
  • 15. Creación repositorio compartido Importar repositorio de moodle.org git remote add -t cvshead -t MOODLE_19_STABLE -m cvshead moodle-org git ://git.moodle.org/moodle.git git fetch moodle-org
  • 16. Creación repositorio compartido Ramas locales de seguimiento (opcional) git branch --track cvshead moodle-org /cvshead git branch --track MOODLE_19_STABLE moodle-org /MOODLE_19_STABLE
  • 17. Creación repositorio compartido Ramas locales de trabajo git branch mdl19-ldap-refactor moodle-org /MOODLE_19_STABLE
  • 18. Creación 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. Creación 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. Creación repositorio compartido Configurar rama local para hacer pull desde repositorio compartido git config branch.mdl19-ldap-refactor.remote compartido git config branch.mdl19-ldap-refactor.merge refs/heads/mdl19-ldap-refactor
  • 21. Creación repo nuevo desarrollador Clonar repositorio compartido git config --global user.name 'Desarrollador-2' git config --global user.email 'desarrollador-2@mondragon.edu' cd /ruta/repositorio/desarrollador git clone -o compartido /ruta/repositorio/compartido/compartido.git desarrollador-2.git
  • 22. Creación repo nuevo desarrollador Importar ramas estándar (opcional) cd desarollador-2.git git remote add -t cvshead -t MOODLE_19_STABLE -m cvshead moodle-org git://git.moodle.org/moodle.git git fetch moodle-org
  • 23. Creación repo nuevo desarrollador Ramas locales de trabajo git branch mdl19-ldap-refactor compartido /mdl19-ldap-refactor git checkout mdl19-ldap-refactor
  • 24. Operaciones en el área de trabajo
    • Crear nuevas ramas locales (ultra rápido y barato en disco):
    • Extraer una rama al área de trabajo:
    • Consultar la rama activa:
    • Mostrar el estado del área de trabajo:
    • Marcar cambios para commit :
    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 diff MOODLE_19_STABLE git diff MOODLE_19_STABLE .. mdl19-ldap-refactor git commit git push compartido git fetch compartido git pull compartido
  • 26. Operaciones en el área de trabajo
    • Enviar nueva rama de repositorio local al repositorio compartido:
    • Configurar rama para poder hacer pull desde 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.remote compartido git config branch.mdl19-nested-groups.merge refs/heads/mdl19-nested-groups git fetch compartido git branch mdl19-enrol-database-refactor compartido/mdl19-enrol-database-refactor gitk -n 50 mdl19-nested-groups
  • 27. Creación de parches y series Creación de parches monolíticos git checkout mdl19-enrol-database-refactor git diff MOODLE_19_STABLE > mdl19-enrol-database-refactor.diff
  • 28. Creación de parches y series Creación de serie de parches git checkout mdl19-enrol-database-refactor git format-patch -o serie-enrol-db-refactor MOODLE_19_STABLE
  • 29. Exportación 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 con gitk, git log o similares; Supongamos que hemos cambiado el fichero ' auth/ldap/auth.php ' y el SHA1 del commit es: 4e976e4114beea9f82420bf0c66edb2494d0272a
  • 30. Exportación directa a cvs.moodle.org Aplicar el cambio git cvsexporcommit -p -v 4e976e4114beea9f82420bf0c66edb2494d0272a
  • 31. Exportación 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 presentación:
    • 35. El artículo 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 Sólo se puede aplicar a la rama activa git checkout mdl19-enrol-database-refactor git rebase MOODLE_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.html enrol/database/enrol.php git rebase --continue
  • 42. Limpieza del historial de una rama Podemos abortar en todo momento git rebase --abort