Skip to content

Commit

Permalink
Merge pull request #144 from DiegoFRamirez/new_corrections
Browse files Browse the repository at this point in the history
Pull Request updated. Finished review on Section '07-git-tools'
  • Loading branch information
andres-mancera authored Sep 10, 2019
2 parents 36c6eab + 354470b commit 1b5bf22
Show file tree
Hide file tree
Showing 8 changed files with 284 additions and 283 deletions.
158 changes: 79 additions & 79 deletions book/07-git-tools/sections/reset.asc

Large diffs are not rendered by default.

98 changes: 49 additions & 49 deletions book/07-git-tools/sections/revision-selection.asc

Large diffs are not rendered by default.

96 changes: 48 additions & 48 deletions book/07-git-tools/sections/rewriting-history.asc

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions book/07-git-tools/sections/searching.asc
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

=== Buscando

Con casi cualquier tamaño de código de base, a menudo necesitará encontrar en dónde se llama o define una función, o encontrar el historial de un método. Git proporciona un par de herramientas útiles para examinar el código y hacer commit a las almacenadas en su base de datos de forma rápida y fácil. Vamos a revisar algunos de ellos.
Con casi cualquier tamaño de código de base, a menudo necesitará encontrar en dónde se llama o define una función, o encontrar el historial de un método. Git proporciona un par de herramientas útiles para examinar el código y hacer 'commit' a las instantáneas almacenadas en su base de datos de forma rápida y fácil. Vamos a revisar algunas de ellas.

[[r_git_grep]]
==== Git Grep


Git se envía con un comando llamado `grep` que le permite buscar fácilmente a través de cualquier árbol o directorio de trabajo con commit por una cadena o expresión regular. Para estos ejemplos, veremos el código fuente de Git.
Git se envía con un comando llamado `grep` que le permite buscar fácilmente a través de cualquier árbol o directorio de trabajo con 'commit' por una cadena o expresión regular. Para estos ejemplos, veremos el código fuente de Git.

Por defecto, mirará a través de los archivos en su directorio de trabajo. Puede pasar `-n` para imprimir los números de línea donde Git ha encontrado coincidencias.
Por defecto, mirará a través de los archivos en su directorio de trabajo. Puedes pasar `-n` para imprimir los números de línea donde Git ha encontrado coincidencias.

[source,console]
----
Expand All @@ -29,7 +29,7 @@ git-compat-util.h:723:#define gmtime_r git_gmtime_r

Hay una serie de opciones interesantes que puede proporcionar el comando `grep`.

Por ejemplo, en lugar de la llamada anterior, puede hacer que Git resuma el resultado simplemente mostrándole qué archivos coinciden y cuántas coincidencias hay en cada archivo con la opción `--count`:
Por ejemplo, en lugar de la llamada anterior, puedes hacer que Git resuma el resultado simplemente mostrándote qué archivos coinciden y cuántas coincidencias hay en cada archivo con la opción `--count`:

[source,console]
----
Expand All @@ -41,7 +41,7 @@ date.c:2
git-compat-util.h:2
----

Si quiere ver qué método o función piensa que ha encontrado una coincidencia, puede pasar `-p`:
Si quieres ver en qué método o función piensa Git que ha encontrado una coincidencia, puedes pasar `-p`:

[source,console]
----
Expand All @@ -54,7 +54,7 @@ date.c: if (gmtime_r(&time, tm)) {

Así que aquí podemos ver que se llama a `gmtime_r` en las funciones `match_multi_number` y `match_digit` en el archivo date.c.

También puede buscar combinaciones complejas de cadenas con el indicador `--and`, que asegura que múltiples coincidencias estén en la misma línea. Por ejemplo, busquemos cualquier línea que defina una constante con las cadenas ``LINK'' o ``BUF_MAX'' en ellas en la base del código de Git en una versión 1.8.0 anterior.
También puedes buscar combinaciones complejas de cadenas con el indicador `--and`, que asegura que múltiples coincidencias estén en la misma línea. Por ejemplo, busquemos cualquier línea que defina una constante con las cadenas ``LINK'' o ``BUF_MAX'' en ellas en la base del código de Git en una versión 1.8.0 anterior.

Aquí también usaremos las opciones `--break` y `--heading` que ayudan a dividir el resultado en un formato más legible.

Expand Down Expand Up @@ -87,9 +87,9 @@ El comando `git grep` tiene algunas ventajas sobre los comandos de búsqueda nor

==== Búsqueda de Registro de Git

Quizás no está buscando **dónde** existe un término, sino **cuando** existió o se introdujo. El comando `git log` tiene varias herramientas potentes para encontrar commits específicas por el contenido de sus mensajes o incluso el contenido de las diferencias que introducen.
Quizás no estás buscando **dónde** existe un término, sino **cuándo** existió o se introdujo. El comando `git log` tiene varias herramientas potentes para encontrar 'commits' específicos por el contenido de sus mensajes o incluso el contenido de las diferencias que introducen.

Si queremos saber, por ejemplo, cuándo se introdujo originalmente la constante `ZLIB_BUF_MAX`, podemos decirle ac Git que solo nos muestre los commits que agregaron o eliminaron esa cadena con la opción `-S`.
Si queremos saber, por ejemplo, cuándo se introdujo originalmente la constante `ZLIB_BUF_MAX`, podemos decirle a Git que sólo nos muestre los 'commits' que agregaron o eliminaron esa cadena con la opción `-S`.

[source,console]
----
Expand All @@ -98,15 +98,15 @@ e01503b zlib: allow feeding more than 4GB in one go
ef49a7a zlib: zlib can only process 4GB at a time
----

Si miramos la diferencia de esos commits, podemos ver que en `ef49a7a` se introdujo la constante y en `e01503b` se modificó.
Si miramos la diferencia de esos 'commits', podemos ver que en `ef49a7a` se introdujo la constante y en `e01503b` se modificó.

Si necesita ser más específico, puede proporcionar una expresión regular para buscar con la opción `-G`.
Si necesitas ser más específico, puedes proporcionar una expresión regular para buscar con la opción `-G`.

===== Búsqueda de Registro de Línea

Otra búsqueda de registro bastante avanzada que es increíblemente útil es la búsqueda del historial de línea. Esta es una adición bastante reciente y no muy conocida, pero puede ser realmente útil. Se llama con la opción `-L` a `git log` y le mostrará el historial de una función o línea de código en su base de código.
Otra búsqueda de registro bastante avanzada que es increíblemente útil es la búsqueda del historial de línea. Esta es una adición bastante reciente y no muy conocida, pero puede ser realmente útil. Se llama con la opción `-L` a `git log` y te mostrará el historial de una función o línea de código en tu base de código.

Por ejemplo, si quisiéramos ver cada cambio realizado en la función `git_deflate_bound` en el archivo `zlib.c`, podríamos ejecutar `git log -L :git_deflate_bound:zlib.c`. Esto intentará descubrir cuáles son los límites de esa función y luego examinará el historial y nos mostrará cada cambio que se hizo a la función como una serie de parches de nuevo cuando se creó la función por primera vez.
Por ejemplo, si quisiéramos ver cada cambio realizado en la función `git_deflate_bound` en el archivo `zlib.c`, podríamos ejecutar `git log -L :git_deflate_bound:zlib.c`. Esto intentará descubrir cuáles son los límites de esa función y luego examinará el historial y nos mostrará cada cambio que se hizo a la función como una serie de parches de cuando se creó la función por primera vez.

[source,console]
----
Expand Down Expand Up @@ -146,4 +146,4 @@ diff --git a/zlib.c b/zlib.c
+
----

Si Git no puede encontrar la forma de relacionar una función o método en su lenguaje de programación, también puede proporcionarle una expresión regular. Por ejemplo, esto habría hecho lo mismo: `git log -L '/unsigned long git_deflate_bound/',/^}/:zlib.c`. También podría darle un rango de líneas o un único número de línea y obtendrá el mismo tipo de salida.
Si Git no puede encontrar la forma de relacionar una función o método en tu lenguaje de programación, también puedes proporcionarle una expresión regular. Por ejemplo, esto habría hecho lo mismo: `git log -L '/unsigned long git_deflate_bound/',/^}/:zlib.c`. También podrías darle un rango de líneas o un único número de línea y obtendrás el mismo tipo de salida.
24 changes: 12 additions & 12 deletions book/07-git-tools/sections/signing.asc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[[r_signing]]
=== Firmando tu trabajo

Git es criptográficamente seguro, pero no es a prueba de tontos. Si estás tomando trabajo de otros de internet y quieres verificar que los commits son realmente de fuentes seguras, Git tiene unas cuantas maneras de firmar y verificar utilizando GPG.
Git es criptográficamente seguro, pero no es a prueba de tontos. Si estás tomando trabajo de otros de Internet y quieres verificar que los 'commits' son realmente de fuentes seguras, Git tiene unas cuantas maneras de firmar y verificar utilizando GPG.

==== Introducción a GPG

Expand Down Expand Up @@ -31,11 +31,11 @@ Una vez que tengas una llave privada para firmar, puedes configurar Git para usa
git config --global user.signingkey 0A46826A
----

Ahora Git usará tu llave por defecto para firmar tags y commits si tu quieres.
Ahora Git usará tu llave por defecto para firmar 'tags' y 'commits' si tu quieres.

==== Firmando Tags

Si tienes una llave GPG privada configurada, ahora puedes usarla para firmar tags. Todo lo que tienes que hacer es usar `-s` en lugar de `-a`:
Si tienes una llave GPG privada configurada, ahora puedes usarla para firmar 'tags'. Todo lo que tienes que hacer es usar `-s` en lugar de `-a`:

[source,console]
----
Expand All @@ -46,7 +46,7 @@ user: "Ben Straub <[email protected]>"
2048-bit RSA key, ID 800430EB, created 2014-05-04
----

Si ejecutas `git show` en ese tag, puedes ver tu firma GPG adjunta a él:
Si ejecutas `git show` en ese 'tag', puedes ver tu firma GPG adjunta a él:

[source,console]
--------
Expand Down Expand Up @@ -77,7 +77,7 @@ Date: Mon Mar 17 21:52:11 2008 -0700

==== Verficando Tags

Para verificar un tag firmado, usa `git tag -v [nombre-de-tag]`. Este comando usa GPG para verificar la firma. Necesitas tener guardada la llave pública del usuario para que esto funcione de manera apropiada:
Para verificar un tag firmado, usa `git tag -v [nombre-de-tag]`. Este comando usa GPG para verificar la firma. Necesitas tener guardada la llave pública del usuario para que esto funcione de manera apropiada:

[source,console]
----
Expand Down Expand Up @@ -108,7 +108,7 @@ error: could not verify the tag 'v1.4.2.1'
[[r_signing_commits]]
==== Firmando Commits

En versiones más recientes de Git (v1.7.9 en adelante), ahora puedes firmar commits individuales. Si estás interesado en firmar commits directamente en lugar de solo los tags, todo lo que necesitas hacer es agregar un `-S` a tu comando `git commit`.
En versiones más recientes de Git (v1.7.9 en adelante), ahora puedes firmar 'commits' individuales. Si estás interesado en firmar 'commits' directamente en lugar de solo los 'tags', todo lo que necesitas hacer es agregar un `-S` a tu comando `git commit`.

[source,console]
----
Expand Down Expand Up @@ -150,19 +150,19 @@ ca82a6d N Scott Chacon changed the version number
a11bef0 N Scott Chacon first commit
----

Aquí podemos ver que solo el último commit es firmado y válido y los commits previos no.
Aquí podemos ver que sólo el último 'commit' es firmado y válido y los 'commits' previos no.

En Git 1.8.3 y posteriores, "git merge" y "git pull" pueden ser configurados para inspeccionar y rechazar cualquier commit que no adjunte una firma GPG de confianza con el comando `--verify-signatures`.
En Git 1.8.3 y posteriores, "git merge" y "git pull" pueden ser configurados para inspeccionar y rechazar cualquier 'commit' que no adjunte una firma GPG de confianza con el comando `--verify-signatures`.

Si se usa esta opción cuando se fusiona una rama y esta contiene commits que no están firmados y son válidos, la fusión no funcionará.
Si se usa esta opción cuando se fusiona una rama y esta contiene 'commits' que no están firmados, aunque sean válidos, la fusión no funcionará.

[source,console]
----
$ git merge --verify-signatures non-verify
fatal: Commit ab06180 does not have a GPG signature.
----

Si una fusión contiene solo commits válidos y firmados, el comando merge mostrará todas las firmas que ha revisado y después procederá con la fusión.
Si una fusión contiene solo 'commits' válidos y firmados, el comando `merge` mostrará todas las firmas que ha revisado y después procederá con la fusión.

[source,console]
----
Expand All @@ -174,7 +174,7 @@ Fast-forward
1 file changed, 2 insertions(+)
----

También se puede utilizar la opción `-S` junto con el mismo comando `git merge` para firmar el commit resultante. El siguiente ejemplo verifica que cada commit en la rama por ser fusionada esté firmado y también firma el commit resultado de la fusión.
También se puede utilizar la opción `-S` junto con el mismo comando `git merge` para firmar el 'commit' resultante. El siguiente ejemplo verifica que cada 'commit' en la rama por ser fusionada esté firmado y también firma el 'commit' resultado de la fusión.

[source,console]
----
Expand All @@ -192,4 +192,4 @@ Merge made by the 'recursive' strategy.

==== Todos deben firmar

Firmar tags y commits es grandioso, pero si decides usar esto en tu flujo de trabajo normal, tendrás que asegurar que todos en el equipo entiendan cómo hacerlo. Si no, terminarás gastando mucho tiempo ayudando a las personas a descubrir cómo reescribir sus commits con versiones firmadas. Asegúrate de entender GPG y los beneficios de firmar cosas antes de adoptarlo como parte de tu flujo de trabajo normal.
Firmar 'tags' y 'commits' es grandioso, pero si decides usar esto en tu flujo de trabajo normal, tendrás que asegurarte que todos en el equipo entiendan cómo hacerlo. Si no, terminarás gastando mucho tiempo ayudando a las personas a descubrir cómo reescribir sus 'commits' con versiones firmadas. Asegúrate de entender GPG y los beneficios de firmar cosas antes de adoptarlo como parte de tu flujo de trabajo normal.
Loading

0 comments on commit 1b5bf22

Please sign in to comment.