2010-11-24 11 views
10

Convertí un depósito de Subversion en Mercurial, usando la extensión Convertir. Cuando miro el nuevo repositorio con Tortoise HG, veo en cada conjunto de cambios la ruta fuente y la revisión correspondientes (ver imagen). Tortoise HG Screenshot with HG Changeset and SVN source path/revisionSVN a HG: ahora salida número de revisión SVN del conjunto de cambios HG

¿Hay alguna manera de escribir esos dos en la consola? Lo ideal sería una salida como esta:

hg:1147 svn:[email protected] 
hg:1146 svn:[email protected] 
... 

Sé que puedo usar hg log con la opción de plantilla para personalizar la salida, pero no saben cómo obtener el código fuente de Subversion ruta/revisión.

EDITAR: Parece que la manera en que yo quería ir no es posible. La ruta de acceso/revisión svn se encuentra en un campo llamado extras dentro del conjunto de cambios (gracias @ Ry4en) y ni hg log ni hg export muestra este valor. Lo que voy a tratar ahora es utilizar el archivo .hg/shamap en combinación con

hg log --template 'hg:{rev} nodeid:{node}' 

Para asignar la revisión Mercurial a la fuente SVN ruta/revisión.

EDIT2: Mi versión de Mercurial es 1.4.3. Con Mercurial 1.7.1 es posible utilizar este comando (gracias @ Wim Coenen): hg log --template {node}\n{extras}\n\n

Respuesta

3

que está escondido en un campo denominado extras en el conjunto de cambios, y no creo que hay una entrada de plantilla de registro para ello . Podría aparecer en un hg export desde el cual podría grep, y ciertamente está disponible programáticamente, pero no creo que haya una forma de obtenerlo.

+7

Parece que puede imprimir 'extras', intente' hg log --template {node} \ n {extras} \ n \ n' por ejemplo. –

+0

@Wim: cuando introduzco el comando como lo escribiste (más comillas simples para la cadena de la plantilla), aparece el mensaje "Sin palabra clave 'extra'" (fíjate en las fallas s). Cuando uso 'extra' en vez de 'extras', obtengo la salida de registro, pero solo la id del nodo y ningún valor para el campo extra. –

+0

@ Ry4en: parece que tienes razón: no hay forma de obtener los datos con 'hg log'. Lamentablemente, tampoco veo los extras en la salida 'hg export'. Pero creo que puedo correlacionar el resultado del registro con las entradas en .hg/shamap para obtener la combinación que necesito. –

9

Las nuevas versiones de hgsubversión agregan una palabra clave de plantilla {svnrev}. Esto se describe en hg help subversion:

[...]

Encontrar y Subversion Despliegue de Revisiones

para revelar la relación entre conjuntos de cambios mercuriales y subversión revisiones, hgsubversion proporciona tres palabras clave de la plantilla:

svnrev Expanded to the original Subversion revision number. 
svnpath The path within the repository that the changeset represents. 
svnuuid The Universally Unique Identifier of the Subversion repository. 

Un ejemplo:

$ hg log --template='{rev}:{node|short} {author|user}\nsvn: {svnrev}\n' 

Las palabras clave de plantilla están disponibles cuando se usa Mercurial 1.5 o posterior.

Para encontrar conjuntos de cambios de Subversion, hgsubversion extiende revsets a proporcionar dos nuevos selectores:

fromsvn Select changesets that originate from Subversion. Takes no 
      arguments. 
svnrev Select changesets that originate in a specific Subversion 
      revision. Takes a revision argument. 

Por ejemplo:

$ hg log -r 'fromsvn()' 
$ hg log -r 'svnrev(500)' 

Revsets están disponibles al utilizar Mercurial 1.6 o posterior y se aceptan mediante varios comandos Mercurial para especificar revisiones. Consulte "hg help revsets" para más detalles.

+0

¿Esto también funciona cuando hice una conversión completa del repositorio SVN con la extensión 'convert' o tengo que usar hgsubversion desde el principio? –

+1

No está usando hgsubversion, ha convertido el repositorio. –

+0

@Chris: oh, lo siento, supongo que asumí que todos usaron hgsubversion en estos días :-) –

Cuestiones relacionadas