Las bibliotecas estáticas nos permiten reutilizar código entre proyectos fabricando un archivo que empaqueta distintos módulos de código objeto. El propósito de este capítulo es enseñaros cómo se pueden fabricar bibliotecas estáticas con GCC y AR, y cómo luego podemos incluir un archivo .a en GCC para compilar programas que usen bibliotecas estáticas.
Los tipos de datos opacos permiten crear punteros a estructuras de datos donde realmente no sabes lo que hay dentro de la estructura, porque todo lo que puedes ver es un puntero. Se trata de una característica avanzada de C que tiene uso principalmente en bibliotecas multiplataforma o en aquellos sitios donde se quiera ocultar la implementación a otros módulos de software.
Otros clientes Git (último episodio)
Se cierra aquí la temporada 2 de Git hablando de diferentes plugins que sirven para hacer que se pueda usar Git desde otro programa, o bien programas independientes que han sido creados expresamente para poder trabajar con Git.
Ahora que han pasado varios días, podemos continuar grabando la segunda parte de este tutorial presentando los comandos para poner al día un submódulo acoplado a un repositorio, o para poner al día un repositorio con submódulos.
En esta primera parte (lógicamente, como no tengo máquina del tiempo, la segunda parte la tengo que grabar otro día), vamos a ver qué es un submódulo, cómo acoplar un submódulo a un repositorio, y cómo clonar un repo con submódulos.
Un pequeño vídeo de regalo para quienes quieran configurar su prompt de Bash con los scripts de Git que permiten mostrar el nombre de la rama en Bash. La función __git_ps1 te permite mostrar la rama en la que estás, y es fácil de insertar en el PS1. Además, git-completion.
El reflog es un log especial donde se incorporan commits cada vez que se hace un cambio de rama o un reset, lo que puede ser usado en caso de emergencia para recuperar un estado anterior de la rama si la liamos con el rebase, reset o checkout.
git-blame es un comando de diagnóstico que analiza un archivo y te dice en qué commit, cuándo y quien, se modificó cada línea de un archivo, para poder identificar el commit concreto en el que se tomó ese cambio. Podemos usar el comando git-show para ver ese commit concreto y así entender el razonamiento detrás de ese cambio (si la descripción del commit está bien hecha, claro).
git-bisect es un comando de diagnóstico muy potente que permite identificar en un log de Git el momento exacto en el que se introduce un bug (o ya puestos, lo que sea que estemos buscando). Podemos iniciar un bisect con `git bisect start`, y luego ir etiquetando commits con el sub-sub-comando "good" como "buenos", o con el sub-sub-comando "bad" como malos.
El botón squash de las interfaces web está bien, pero ¿cómo haríamos un squash desde la línea de comandos usando nuestro propio cliente de Git? El squash es un flag del comando git-merge, por lo que para hacer un squash tenemos que solicitar esta estrategia al realizar un merge.