Your SlideShare is downloading. ×
Uso de git para el mantenimiento  de parches locales o públicos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

2,147
views

Published on

Uso de git para el mantenimiento …

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

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,147
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
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