+ All Categories
Home > Documents > JdeRobot talks - An advanced intro to...

JdeRobot talks - An advanced intro to...

Date post: 22-Sep-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
18
29/03/2016 © 2015 Victor Arribas <[email protected]> 1 GIT: UNA INTRODUCCIÓN AVANZADA JDEROBOT TALKS
Transcript
Page 1: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

29/03/2016 © 2015 Victor Arribas <[email protected]>

1 G I T : U N A I N T R O D U C C I Ó N A V A N Z A D A

JDEROBOT TALKS

Page 2: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

AVISO A PRINCIPIANTES

• Esta presentación no está planteada para explicar los

conceptos elementales de Git. Sin embargo podéis

planteárosla como la motivación de porqué usar Git.

• Internet está repleto de guías y tutoriales:

• https://git-scm.com/book/es/v2

• http://marklodato.github.io/visual-git-guide/index-es.html

• https://training.github.com/kit/downloads/es/github-git-cheat-

sheet.pdf

• http://www.tutorialspoint.com/git/index.htm

• https://help.github.com

• https://www.youtube.com/watch?v=fBRE5zuYUlI (videos 1 y 3)

29/03/2016 © 2015 Victor Arribas <[email protected]> 2

Page 3: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

ÍNDICE

• Intro

• Revision of Git commands

• Git vs SVN

• Develop scheme

• Git branching model

• Git branch lifecycle

• Daily

• gitconfig

• gitignore

• Inline extensions

• Branch naming

• Review changes (github)

• Complex repos

• Subtrees, submodules, subrepos

• Powerful examples

• Gitignore automation

• Merge without branches

• Remove untracked files

• Remove big/sensitive files

• Patchs: creation & apply

• Rebase tip: committer date

• More than hooks

29/03/2016 © 2016 Victor Arribas <[email protected]> 3

Page 5: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

GIT VS SVN

• Tésis simplificativa: todo lo que es dificil de hacer en SVN Git lo hace fácil, y viceversa.

29/03/2016 © 2015 Victor Arribas <[email protected]> 5

Acción Git SVN

Descargar el repositorio Expensive Trivial

Tamaño del repo Compact Exponential

Revisar los cambios y el historial Trivial Expensive

Commit Trivial Conficts

Push (only at git) Conflicts = Commit

Ramas Trivial Expensive

Etiquetas Trivial (feature) = Branch

Archivos grandes Killer Linear

Varios proyectos en el mismo repo Killer Easy

Copia de seguridad Trivial Moderate

Page 7: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

GIT AND BRANCHES

• En su lugar solo se pantea cuál es la configuración

canónica para Git.

29/03/2016 © 2015 Victor Arribas <[email protected]> 7

Page 8: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

.GITCONFIG

• Uno de los archivos más importantes en el

ecosistema Git.

• Guarda tu identidad

• Guarda tus preferencias de git

• También actúa como .bashrc

• Permite inline extensions!

• Dos posibles localzaciones:

• $HOME/.gitconfig

• $repo/.git/config

29/03/2016 © 2015 Victor Arribas <[email protected]> 8

Page 9: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

.GITCONFIG II

• He creado un instalador para simplificar mi vida cada vez que

cambio de máquina o contexto (chroot)

• https://github.com/varhub/my-gitconfig

• Hay algún voluntario?

29/03/2016 © 2015 Victor Arribas <[email protected]> 9

Live example

Page 10: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

GITIGNORE

• Una de las partes más importantes que suele olvidarse

• Git almacena el historial completo de desarrollo para

siempre.

• Si uno añade un fichero incorrecto, este permanecerá ahñi para

siempre incluso tras borrarlo.

• Es la respuesta lógica a “por qué mi repositorio pesa tanto”?

• Recordar que el checkout puede duplicar el tamaño efectivo.

• Un gitignore adecuado debe ser una prioridad

• Hacerlo a posteriori puede ser doloroso

29/03/2016 © 2015 Victor Arribas <[email protected]> 10

Live example

Herramienta de simplificación:

git-ignore-add

Page 11: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

GITIGNORE II

• Qué debe estar dentro de un gitignore?

• Artefactos generados por el proyect (siempre)

• Lenguaje de programación

• Herramientas de compilación

• Datos sensibles descargados por otros medios

• IDE/editores (nunca excepto para proyectos expuestos al

público y/o a novatos)

• Estas reglas deberían trasladarse a un gitignore global

• Añádelas al projecto cuando no puedes asegugar el

conocimiento sobre Git de tu equipo de desarrollo.

• Siempre es mejor un .gitignore sucio que un repositorio sucio.

29/03/2016 © 2015 Victor Arribas <[email protected]> 11

Page 12: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

INLINE EXTENSIONS

• Equivalente a los alias de bash y .profile/.bashrc

• Aquí tienes algunos ejemplos: • https://github.com/varhub/my-gitconfig/blob/master/.gitconfig

• https://github.com/alikins/gitconfig/blob/master/gitconfig

• Demostraciones para esta charla: • treegraph

• Logmerges

• También existen las “external extensions” (avanzado) • Cualquier ejecutable llamado git-<whatever> en el $PATH puede ser

invocado por git como:

• git <whatever>

29/03/2016 © 2015 Victor Arribas <[email protected]> 12

Live example

Page 13: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

REPOSITORIOS COMPLEJOS

• Hay básicamente 3 formas de manejar repositorios

complejos:

• Subtrees

• Subprojects/subrepos

• Submodules

29/03/2016 © 2015 Victor Arribas <[email protected]> 13

Page 14: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

COMPLEX REPOS: SUBMODULES

• Submodules fue el primero en hacerse oficial.

• Requiere trabajo adicional en el clonado.

• Cada proyecto tiene su propio .git pero el repo raíz gobierna al resto.

• Requiere actualización de versión continua.

• Encaja a la perfección con frameworks de composición: • El framework es un proyecto que actúa como un concentrador

• La versión de cada subproyecto está siempre traqueada y firmada • versiones estables explícitas

• Los commits sobre el Framework son simplemente actualizaciones de los componentes • actualización implícita del framework

29/03/2016 © 2015 Victor Arribas <[email protected]> 14

Page 15: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

COMPLEX REPOS: SUBTREES

• Subtrees es la aproximación opuesta.

• Un único .git que condensa el árbol de desarrollo

de cada proyecto en un único y gigantesco árbol.

• El historial del proyecto puede ser compactado

(squash) o integrado en su totalidad.

• Es la mejor forma de desacoplar o extraer un

proyecto.

• See git subtree split

29/03/2016 © 2015 Victor Arribas <[email protected]> 15

Page 16: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

COMPLEX REPOS: SUBPROJECTS

• Subprojects es la forma agnóstica de hacerlo (fuera de git). • Se parece a los submódulos, pero el control es manual.

• Los proyectos son inconscientes del nexo de unión excepto por dos hechos: • Algunos proyectos van dentro de otros, y por tanto, dentro de su árbol

de ficheros y de git. • Los proyectos anfitriones deben añadir entradas al gitignore para

mantener a los huéspedes (subprojects) fuera del control de versiones.

• El flujo de trabajo es completamente aislado. • Ejecutar git clean es extremadamente destructivo.

• Useful for framework customization and sandboxing

29/03/2016 © 2015 Victor Arribas <[email protected]> 16

Page 17: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

POWERFUL EXAMPLES

• Gitignore automation • https://github.com/varhub/my-gitconfig/blob/master/bin/git-ignore-add

• Merge without branches • https://github.com/varhub/my-gitconfig/blob/master/bin/git-lazy-merge

• Remove untracked files • http://stackoverflow.com/questions/61212/how-do-i-remove-local-untracked-files-from-my-current-

git-branch

• Remove big/sensitive files • https://help.github.com/articles/removing-files-from-a-repository-s-history

• Patchs: creation & apply • https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/

• Rebase tip: committer date • http://stackoverflow.com/questions/2973996/git-rebase-without-changing-commit-timestamps

• More than hooks • http://stackoverflow.com/questions/2293383/hide-a-string-in-a-file-before-git-commit/2294246

29/03/2016 © 2015 Victor Arribas <[email protected]> 17

Page 18: JdeRobot talks - An advanced intro to Gitwiki.jderobot.org/store/jmplaza/uploads/charlas/traspas-git-victor.pdf · Title: JdeRobot talks - An advanced intro to Git Author: Victor

¿PREGUNTAS?

Gracias por su atención

Alguna pregunta?

29/03/2016 © 2015 Victor Arribas <[email protected]> 18


Recommended