El gitignore es un archivo en el que se declaran rutas a ignorar para que nunca se metan cuando se hace un git add, entre otras cosas. Tienes una lista de ejemplos de gitignore en https://github.com/github/gitignore.
git-grep es un comando que toda la vida ha estado ahí, pero que hace unas versiones fue mejorado para dotarle de más rendimiento, y ahora es un comando ideal para buscar código en un repositorio porque los resultados son rápidos.
Con el comando git-restore se pueden deshacer modificaciones hechas a archivos. Como ya se podía hacer con git-checkout, pero sin utilizar un comando que vale para ocho cosas diferentes. Otros flags de restore que cuento hoy: --staged, --workdir, --source.
Con git switch podemos cambiar de rama. Un poco como con git checkout, pero sin usar git checkout.
Master, main y otros nombres de rama
Arrancamos con un tema fresco. Hace ya un tiempo que se empezó a recomendar no usar "master" como nombre de la rama principal, por lo que hoy día Git tiene ajustes para cambiar el nombre de la rama, y también hay que estar pendiente de lo que se clona.
Más particularidades de ExUnit
ExUnit no es la librería de TDD más sofisticada del mundo, pero ofrece pequeños apoyos para facilitar escribir tests. Tenemos otros asertos para comprobar que algo es falso o que el intercambio de mensajes entre procesos de OTP se hace bien, así como hooks adicionales.
ExUnit es un framework para escribir tests en Elixir. En este vídeo, por qué los tests nos vienen bien, y un ejemplo rápido de cómo crear tests con Elixir que profundizaremos en siguientes episodios.
Un sigilo es un símbolo que insertamos junto a una expresión para que Elixir la trate de forma especial. Normalmente se usan para crear listas de átomos o cadenas de caracteres sin escribir tanta comilla o para no tener que escapar las comilas en una string o una charlist, pero Elixir permite extender el lenguaje creando sigilos personalizados, como te cuentan aquí: https://elixir-lang.org/getting-started/sigils.html#custom-sigils.
with permite agrupar múltiples expresiones de tipo pattern matching en un único bloque do-end, de tal manera que la única forma de evaluar su interior es que todos los matches sean válidos a la vez. Con esto podemos desplegar cómodamente expresiones envueltas en tuplas sin crear un excesivo número de cases.
Cuando encontramos una situación anómala en nuestras funciones, podemos interrumpir la evaluación del resto de la función mediante el comando `raise`, que nos permite lanzar hacia fuera un Error que puede ser tratado en otro bloque try-rescue.