Uso de git para el mantenimiento  de parches locales o públicos Iñaki Arenaza [email_address] [email_address] (Creative Co...
Contenidos <ul><li>Premisas y modelo de trabajo propuesto.
Creación de los diferentes repositorios.
Trabajo con ramas.
Operaciones en el área de trabajo.
Creación de parches y series de parches.
Exportación de cambios a cvs.moodle.org. </li></ul>
Premisas del modelo de trabajo Repositorio 'compartido' de referencia
Premisas del modelo de trabajo A provechar el repositorio de git.moodle.org No usar 'git clone' para la importación desde ...
Premisas del modelo de trabajo Repositorio compartido sólo con ramas locales
Premisas del modelo de trabajo Desarrollo siempre en las ramas locales
Premisas del modelo de trabajo Ramas estándar sólo en repositorios de los  desarrolladores
cvs.moodle.org git.moodle.org pasarela de importación de cvs a git  @moodle.org repositorio compartido @mondragon.edu copi...
Creación repositorio compartido Crear repositorio desarrollador  git config --global user.name 'Desarrollador-1' git confi...
Creación repositorio compartido Importar repositorio de moodle.org git remote add -t  cvshead  -t  MOODLE_19_STABLE   -m c...
Creación repositorio compartido Ramas locales de seguimiento (opcional) git branch --track cvshead  moodle-org /cvshead gi...
Creación repositorio compartido Ramas locales de trabajo git branch mdl19-ldap-refactor  moodle-org /MOODLE_19_STABLE
Creación repositorio compartido Crear repositorio compartido cd /ruta/repositorio/compartido mkdir compartido.git cd compa...
Creación repositorio compartido Enviar rama local al repositorio compartido cd /ruta/repositorio/desarrollador/desarrollad...
Creación repositorio compartido Configurar rama local para hacer  pull  desde repositorio compartido git config branch.mdl...
Creación repo nuevo desarrollador Clonar repositorio compartido git config --global user.name 'Desarrollador-2' git config...
Creación repo nuevo desarrollador Importar ramas estándar (opcional) cd desarollador-2.git git remote add -t  cvshead  -t ...
Creación repo nuevo desarrollador Ramas locales de trabajo git branch mdl19-ldap-refactor  compartido /mdl19-ldap-refactor...
Operaciones en el área de trabajo <ul><li>Crear nuevas ramas locales (ultra rápido y barato en disco):  </li></ul><ul><li>...
Operaciones en el área de trabajo <ul><li>Mostrar diferencias con el el índice o con HEAD:  </li></ul><ul><li>Mostrar dife...
Operaciones en el área de trabajo <ul><li>Enviar  nueva  rama de repositorio local al repositorio compartido:  </li></ul><...
Creación de parches y series Creación de parches monolíticos git checkout mdl19-enrol-database-refactor git diff  MOODLE_1...
Creación de parches y series Creación de serie de parches git checkout mdl19-enrol-database-refactor git format-patch -o  ...
Exportación directa a cvs.moodle.org Preparar entorno de trabajo y buscar cambio a aplicar cd /ruta/copia/trabajo/CVS/con/...
Exportación directa a cvs.moodle.org Aplicar el cambio git cvsexporcommit -p -v  4e976e4114beea9f82420bf0c66edb2494d0272a
Exportación directa a cvs.moodle.org Verificar los cambios y hacer commit en CVS ...verificar los cambios en la copia ...d...
Agradecimientos <ul><li>Gracias a: </li><ul><li>La comunidad de Moodle
Próxima SlideShare
Cargando en…5
×

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

2.447 visualizaciones

Publicado el

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

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.447
En SlideShare
0
De insertados
0
Número de insertados
19
Acciones
Compartido
0
Descargas
35
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

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

  1. 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. 2. Contenidos <ul><li>Premisas y modelo de trabajo propuesto.
  3. 3. Creación de los diferentes repositorios.
  4. 4. Trabajo con ramas.
  5. 5. Operaciones en el área de trabajo.
  6. 6. Creación de parches y series de parches.
  7. 7. Exportación de cambios a cvs.moodle.org. </li></ul>
  8. 8. Premisas del modelo de trabajo Repositorio 'compartido' de referencia
  9. 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. 10. Premisas del modelo de trabajo Repositorio compartido sólo con ramas locales
  11. 11. Premisas del modelo de trabajo Desarrollo siempre en las ramas locales
  12. 12. Premisas del modelo de trabajo Ramas estándar sólo en repositorios de los desarrolladores
  13. 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. 14. Creación repositorio compartido Crear repositorio desarrollador git config --global user.name 'Desarrollador-1' git config --global user.email <ul>'desarrollador-1@mondragon.edu' </ul>cd /ruta/repositorio/desarrollador mkdir desarrollador-1.git cd desarrollador-1.git git init
  15. 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. 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. 17. Creación repositorio compartido Ramas locales de trabajo git branch mdl19-ldap-refactor moodle-org /MOODLE_19_STABLE
  18. 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. 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. 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. 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. 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. 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. 24. Operaciones en el área de trabajo <ul><li>Crear nuevas ramas locales (ultra rápido y barato en disco): </li></ul><ul><li>Extraer una rama al área de trabajo: </li></ul><ul><li>Consultar la rama activa: </li></ul><ul><li>Mostrar el estado del área de trabajo: </li></ul><ul><li>Marcar cambios para commit : </li></ul>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. 25. Operaciones en el área de trabajo <ul><li>Mostrar diferencias con el el índice o con HEAD: </li></ul><ul><li>Mostrar diferencias con otras ramas: </li></ul><ul><li>Hacer commit de los cambios (marcados): </li></ul><ul><li>Enviar cambios locales al repositorio compartido: </li></ul><ul><li>Actualizar repositorio local desde repositorio compartido: </li></ul>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. 26. Operaciones en el área de trabajo <ul><li>Enviar nueva rama de repositorio local al repositorio compartido: </li></ul><ul><li>Configurar rama para poder hacer pull desde repositorio compartido: </li></ul><ul><li>Incorporar nueva rama del repositorio compartido al repositorio local </li></ul><ul><li>Usar gitk para visualizar el historial de una rama: </li></ul>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. 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. 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. 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. 30. Exportación directa a cvs.moodle.org Aplicar el cambio git cvsexporcommit -p -v 4e976e4114beea9f82420bf0c66edb2494d0272a
  31. 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. 32. Agradecimientos <ul><li>Gracias a: </li><ul><li>La comunidad de Moodle
  33. 33. La comunidad de git
  34. 34. La gente de Catalyst </li></ul><li>Esta presentación:
  35. 35. El artículo completo: </li></ul>http://tinyurl.com/5q2k9f http://tinyurl.com/4eyj3s
  36. 36. Algunos trucos bajo la manga (bonus track ☺ ) <ul><li>git add --interactive
  37. 37. git rebase </li></ul><ul><li>git stash [save | list | show | apply | remove | clear] </li></ul><ul><li>git bisect, git blame
  38. 38. .git/hooks/* </li></ul><ul><li>git gc, git prune, git fsck </li></ul>
  39. 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. 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. 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. 42. Limpieza del historial de una rama Podemos abortar en todo momento git rebase --abort

×