2010-12-20 19 views
5

Quiero ser capaz de obtener un "registro hg" de cada conjunto de cambios que aparece en el gráfico entre changeset1 y changeset2. No puedo encontrar una manera de hacerlo sin que ninguna de a) la omisión de los nodos en las ramas con nombre que se fusionan entre changeset1: changset2 o B), incluyendo nodos en ramas nombradas que no son antepasados ​​de changeset2registro mercurial de cambios en ramas con nombre fusionadas, pero no sin combinar

He aquí un "hg GLOG" de un ejemplo simple con 2 ramas nombradas más la rama predeterminada. Una rama llamada se fusionaron y así sus nodos son relevantes, el otro es irrelevante:

@ changeset: 5:e384fe418e9b 
|\ tag:   tip 
| | parent:  2:7dc7af503071 
| | parent:  3:0a9be59d576e 
| | summary:  merge somefeature branch into default 
| | 
| | o changeset: 4:4e8c9ca127c9 
| | | branch:  unmerged_feature 
| | | parent:  1:ef98ad136fa8 
| | | summary:  change that is not merged into ending changeset 
| | | 
| o | changeset: 3:0a9be59d576e 
| |/ branch:  somefeature 
| | parent:  1:ef98ad136fa8 
| | summary:  changed b.txt 
| | 
o | changeset: 2:7dc7af503071 
| summary:  changed a.txt 
| 
o changeset: 1:ef98ad136fa8 
| summary:  added b.txt 
| 
o changeset: 0:271b22b4ad30 
    summary:  added a.txt 

Quiero una orden de registro que me dará todos los nodos que son descendiente de Rev 0 y ancestros de rev 5. Esto se todo excepto rev 4.

puedo obtener demasiada información:

hg log -r 0:5 --template "{rev}:branch={branches},desc={desc}\n" 

Esto me da una entrada de registro para rev 4, que no es un antepasado de Rev 5:

0:branch=,desc=added a.txt 
1:branch=,desc=added b.txt 
2:branch=,desc=changed a.txt 
3:branch=somefeature,desc=changed b.txt 
4:branch=unmerged_feature,desc=change that is not merged into ending changeset 
5:branch=,desc=merge somefeature branch into default 

puedo conseguir muy poca información:

hg log -b default -r 0:5 --template "{rev}:branch={branches},desc={desc}\n" 

omite REV 3, que es un descendiente de Rev 0 y antepasado de rev 5

0:branch=,desc=added a.txt 
1:branch=,desc=added b.txt 
2:branch=,desc=changed a.txt 
5:branch=,desc=merge somefeature branch into default 

Respuesta

6

Si está utilizando una versión más reciente de Mercurial (1.6.0 o superior), puede usar la función revsets. En este caso, necesita los antepasados ​​() operador:

hg log --rev ancestors(5) 

Ver hg help revsets para más información.

+0

Gracias. No había visto eso antes. Lo que realmente quiero es: hg log --rev 'ancestros (changeset2) y descendientes (changeset1)' –

+3

En realidad, parece que los dos puntos harán lo que yo quiero más simplemente: hg log --rev 'changeset1 :: changeset2' –

+3

Sí, quiere la sintaxis 'X :: Y' - Lo puse para este propósito :-) –

Cuestiones relacionadas