You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/09-git-and-other-scms/sections/client-hg.asc
+33-33
Original file line number
Diff line number
Diff line change
@@ -1,19 +1,19 @@
1
1
==== Git y Mercurial
2
2
3
-
(((Interoperation with other VCSs, Mercurial)))
3
+
(((Interoperación con otros VCS, Mercurial)))
4
4
(((Mercurial)))
5
5
El universo DVCS es más grande que el de Git.
6
6
De hecho, hay muchos otros sistemas en este espacio, cada uno con su propio ángulo sobre cómo hacer el control de versión distribuida correctamente.
7
7
Aparte de Git, el más popular es Mercurial, y los dos son muy similares en muchos aspectos.
8
8
9
-
La buena noticia, si prefiere el comportamiento del cliente de Git pero que está trabajando con un proyecto cuyo código fuente está controlado con Mercurial, es que hay una manera de usar Git como cliente para un repositorio alojado en Mercurial.
9
+
La buena noticia, si prefiere el comportamiento del cliente de Git pero está trabajando con un proyecto cuyo código fuente está controlado con Mercurial, es que hay una manera de usar Git como cliente para un repositorio alojado en Mercurial.
10
10
Dado que la forma en que Git habla con los repositorios del servidor es a través de controles remotos, no debería sorprendernos que este puente se implemente como un ayudante remoto.
11
-
El nombre del proyecto es git-remote-hg, y se puede encontrar en https://github.com/felipec/git-remote-hg[].
11
+
El nombre del proyecto es 'git-remote-hg', y se puede encontrar en https://github.com/felipec/git-remote-hg[].
12
12
13
13
===== git-remote-hg
14
14
15
-
Primero, necesitas instalar git-remote-hg.
16
-
Esto básicamente implica dejar caer su archivo en algún lugar de tu camino, así:
15
+
Primero, necesita instalar git-remote-hg.
16
+
Esto básicamente implica dejar caer su archivo en algún lugar de su camino, así:
17
17
18
18
[source,console]
19
19
----
@@ -24,7 +24,7 @@ $ chmod +x ~/bin/git-remote-hg
24
24
25
25
... asumiendo que `~ / bin` está en su` $ PATH`.
26
26
Git-remote-hg tiene otra dependencia: la biblioteca `mercurial` para Python.
27
-
Si tienes instalado Python, es tan sencillo como:
27
+
Si tiene instalado Python, es tan sencillo como:
28
28
29
29
[source,console]
30
30
----
@@ -33,12 +33,12 @@ $ pip install mercurial
33
33
34
34
(Si no tiene instalado Python, visite https://www.python.org/[] y consígalo primero.)
35
35
36
-
Lo último que necesitarás es el cliente Mercurial.
36
+
Lo último que necesitará es el cliente Mercurial.
37
37
Vaya a http://mercurial.selenic.com/[] e instálelo si aún no lo ha hecho.
38
38
39
-
Ahora estás listo para el rock.
40
-
Todo lo que necesitas es un repositorio Mercurial al que puedes presionar.
41
-
Afortunadamente, todos los repositorios de Mercurial pueden actuar de esta manera, así que solo usaremos el repositorio de "hola mundo" que todos usan para aprender Mercurial:
39
+
Ahora está listo para el rock.
40
+
Todo lo que necesita es un repositorio Mercurial al que pueda presionar.
41
+
Afortunadamente, todos los repositorios de Mercurial pueden actuar de esta manera, así que sólo usaremos el repositorio de "hola mundo" que todos usan para aprender Mercurial:
Notará que el uso de un repositorio de Mercurial utiliza el comando `git clone` estándar.
65
-
Esto se debe a que git-remote-hg está funcionando a un nivel bastante bajo, utilizando un mecanismo similar a cómo se implementa el protocolo HTTP / S de Git (auxiliares remotos).
65
+
Esto se debe a que git-remote-hg está funcionando a un nivel bastante bajo, utilizando un mecanismo similar a como se implementa el protocolo HTTP / S de Git (auxiliares remotos).
66
66
Dado que Git y Mercurial están diseñados para que cada cliente tenga una copia completa del historial del repositorio, este comando hace un clon completo, incluyendo todo el historial del proyecto, y lo hace con bastante rapidez.
67
67
68
68
El comando de registro muestra dos confirmaciones, la última de las cuales es señalada por un montón de refs.
@@ -91,12 +91,12 @@ $ tree .git/refs
91
91
9 directories, 5 files
92
92
----
93
93
94
-
Git-remote-hg está tratando de hacer las cosas más idiomáticamente Git-esque, pero bajo el capó es la gestión de la cartografía conceptual entre dos sistemas ligeramente diferentes.
94
+
'Git-remote-hg' está tratando de hacer las cosas más idiomáticamente 'Git-esque', pero bajo el capó es la gestión de la cartografía conceptual entre dos sistemas ligeramente diferentes.
95
95
El directorio `refs/hg` es donde se almacenan las referencias remotas reales.
96
-
Por ejemplo, el `refs/hg/origen/branches/default` es un archivo ref de Git que contiene el SHA-1 que comienza con ``ac7955c'', que es el commit que señala `master`.
96
+
Por ejemplo, el `refs/hg/origen/branches/default` es un archivo 'ref' de Git que contiene el SHA-1 que comienza con ``ac7955c'', que es el 'commit' que señala `master`.
97
97
Así que el directorio `refs/hg` es como un`refs/remotes/origen' falso, pero tiene la distinción añadida entre marcadores y ramas.
98
98
99
-
El archivo `notes/hg` es el punto de partida de cómo git-remote-hg asigna los hashes de commit de Git a los identificadores de cambios de Mercurial.
99
+
El archivo `notes/hg` es el punto de partida de cómo 'git-remote-hg' asigna los hashes de 'commit' de Git a los identificadores de cambios de Mercurial.
100
100
Vamos a explorar un poco:
101
101
102
102
[source,console]
@@ -121,26 +121,26 @@ $ git cat-file -p ac9117f
121
121
122
122
Así que `refs/notes/hg` apunta a un árbol, que en la base de datos de objetos Git es una lista de otros objetos con nombres.
123
123
`Git ls-tree` genera el modo, el tipo, el hash de objeto y el nombre de archivo de elementos dentro de un árbol.
124
-
Una vez que excavamos hacia abajo a uno de los elementos del árbol, encontramos que en su interior hay un blob llamado ``ac9117f'' (el hash SHA-1 del commit apuntado por `master`), con contenidos ``0a04b98'' Que es el identificador del conjunto de cambios Mercurial en la punta de la rama `default`).
124
+
Una vez que excavamos hacia abajo a uno de los elementos del árbol, encontramos que en su interior hay un blob llamado ``ac9117f'' (el hash SHA-1 del 'commit' apuntado por `master`), con contenidos ``0a04b98''. Que es el identificador del conjunto de cambios Mercurial en la punta de la rama `default`).
125
125
126
-
La buena noticia es que en general no tenemos que preocuparnos por todo esto.
126
+
La buena noticia es, que en general, no tenemos que preocuparnos por todo esto.
127
127
El flujo de trabajo típico no será muy diferente de trabajar con un control remoto de Git.
128
128
129
-
Hay una cosa más a la que debemos atender antes de continuar: ignora.
130
-
Mercurial y Git usan un mecanismo muy similar para esto, pero es probable que no quieras realmente comprometer un archivo `.gitignore` en un repositorio de Mercurial.
131
-
Afortunadamente, Git tiene una forma de ignorar los archivos que son locales a un repositorio en disco, y el formato Mercurial es compatible con Git, por lo que sólo tienes que copiarlo:
129
+
Hay una cosa más a la que debemos atender antes de continuar: 'ignore'.
130
+
Mercurial y Git usan un mecanismo muy similar para esto, pero es probable que no quiera realmente comprometer un archivo `.gitignore` en un repositorio de Mercurial.
131
+
Afortunadamente, Git tiene una forma de ignorar los archivos que son locales a un repositorio en disco, y el formato Mercurial es compatible con Git, por lo que sólo tiene que copiarlo:
132
132
133
133
[source,console]
134
134
----
135
135
$ cp .hgignore .git/info/exclude
136
136
----
137
137
138
-
El archivo `.git / info / exclude 'actúa como un` .gitignore`, pero no está incluido en commits.
138
+
El archivo `.git / info / exclude 'actúa como un` .gitignore`, pero no está incluido en 'commits'.
139
139
140
140
141
141
===== Flujo de Trabajo
142
142
143
-
Supongamos que hemos hecho algunos trabajos e hicimos algunos commit en la rama `master` y estamos listos para enviarlo al repositorio remoto.
143
+
Supongamos que hemos hecho algunos trabajos e hicimos algunos 'commit' en la rama `master` y estamos listos para enviarlo al repositorio remoto.
* 65bb417 Create a standard "hello, world" program
173
173
----
174
174
175
-
Puesto que utilizamos el indicador `--all`, vemos las` `notes '' refs que son utilizadas internamente por git-remote-hg, pero podemos ignorarlas.
176
-
El resto es lo que esperábamos; `Origen / master` ha avanzado por una comisión, y nuestra historia ha divergido ahora.
175
+
Puesto que utilizamos el indicador `--all`, vemos las ``notes refs'' que son utilizadas internamente por 'git-remote-hg', pero podemos ignorarlas.
176
+
El resto es lo que esperábamos; `origin / master` ha avanzado por una comisión, y nuestra historia ha divergido ahora.
177
177
A diferencia de los otros sistemas con los que trabajamos en este capítulo, Mercurial es capaz de manejar fusiones, por lo que no vamos a hacer nada extravagante.
El conjunto de cambios numerado _2_ fue hecho por Mercurial, y los conjuntos de cambios numerados _3_ y _4_ fueron hechos por git-remote-hg, al empujar los commit hechos con Git.
232
+
El conjunto de cambios numerado _2_ fue hecho por Mercurial, y los conjuntos de cambios numerados _3_ y _4_ fueron hechos por 'git-remote-hg', al empujar los 'commit' hechos con Git.
233
233
234
234
===== Branches(Ramas) y Bookmarks(Marcadores)
235
235
@@ -238,7 +238,7 @@ En Mercurial, este tipo de referencia se llama marcador, y se comporta de la mis
238
238
239
239
El concepto de Mercurial de una "rama" es más pesado.
240
240
La rama en la que se realiza un conjunto de cambios se registra con el conjunto de cambios, lo que significa que siempre estará en el historial del repositorio.
241
-
He aquí un ejemplo de un commit que se hizo en la rama `develop`:
241
+
He aquí un ejemplo de un 'commit' que se hizo en la rama `develop`:
Git no puede realmente replicar esto (y no necesita, ambos tipos de rama puede representarse como una referencia Git), pero git-remote-hg necesita entender la diferencia, porque Mercurial se preocupa.
254
+
Observe la línea que comienza con ``branch''.
255
+
Git no puede realmente replicar esto (y no necesita, ambos tipos de rama puede representarse como una referencia Git), pero 'git-remote-hg' necesita entender la diferencia, porque Mercurial se preocupa.
256
256
257
257
Crear marcadores de Mercurial es tan fácil como crear ramas de Git.
Tenga en cuenta la nueva etiqueta `[featureA]` en la revisión 5.
300
300
Éstos actúan exactamente como las ramas de Git en el lado de Git, con una excepción: usted no puede suprimir un marcador del lado de Git (ésta es una limitación de ayudantes remotos).
301
301
302
-
Puedes trabajar con una rama ``heavyweight'' de Mercurial si: introduces ramas en los espacios para `branches` así:
302
+
Puede trabajar con una rama ``heavyweight'' de Mercurial si: introduce ramas en los espacios para `branches` así:
303
303
304
304
[source,console]
305
305
----
@@ -347,9 +347,9 @@ o changeset: 5:bd5ac26f11f9
347
347
348
348
El nombre de la rama ``permanent'' se registró en el conjunto de cambios marcados con _7_.
349
349
350
-
Desde el lado de Git, el trabajo con cualquiera de estos estilos de rama es el mismo: sólo checkout, commit, fetch, merge, pull y push como lo haría normalmente.
350
+
Desde el lado de Git, el trabajo con cualquiera de estos estilos de rama es el mismo: sólo ``checkout'', ``commit'', ``fetch'', ``merge'', ``pull'' y ``push'' como lo haría normalmente.
351
351
Una cosa que usted debe saber es que Mercurial no apoya la historia de la reescritura, agregando solamente a ella.
352
-
Esto es lo que nuestro repositorio de Mercurial parece después de un rebase interactivo y un force-push:
352
+
Esto es lo que nuestro repositorio de Mercurial parece después de un ``rebase interactivo'' y un ``force-push'':
0 commit comments