¿Cómo limitar las N inputs más nuevas con Hg Log al especificar un Revset?

Esta pregunta no es un duplicado del logging de hg: ¿cómo get las últimas 5 inputs de logging? – es fácil aplicar un límite. El problema es que la salida de logging, cuando está limitada , no parece orderarse siempre descendiendo por date de logging: el comportamiento cambia con la adición de un cambio.

Por ejemplo, el logging simple funciona "como se esperaba" y muestra las cinco inputs de logging más recientes .

hg log -l5 

Sin embargo, cuando se usa un revset, el resultado es primero los nodos más antiguos (como se observó sin -l ); por lo tanto, a continuación se muestran las cinco inputs más antiguas que no se desean.

 hg log -r "user('Me')" -l5 

¿Cómo se puede indicar a hg log , con un revset, que ordere antes de la date de logging descendente ("como se esperaba") para que el límite tenga un efecto 1 pnetworkingecible y significativo?


 $ hg --version Mercurial Distributed SCM (version 3.6.1) 

1 No considero pnetworkingecible la posibilidad de realizar llamadas reverse azar en un set de revoluciones, pero si esa es la "mejor" manera …

Hay un par de opciones que tienes.

En primer lugar, puede usar reverse() junto con su revset existente, por ejemplo:

 hg log -r 'reverse(user("me"))' -l 5 

Como taquigrafía, también puede usar -f o --follow , que – cuando se usa junto con -r – ajustará la revisión en reverse(...) . Ejemplo:

 hg log -f -r 'user("me")' -l 5 

O puede codificar el límite en el set de cambios, por ejemplo:

 hg log -r 'last(user("me"), 5)' 

Tenga en count que los alias de revset pueden ser útiles para evitar tener que escribir repeticiones una y otra vez. Entonces, puedes poner algo como esto en tu .hgrc :

 [revsetalias] lastby($1) = last(user($1), 5) 

Y luego hazlo:

 hg log -r 'lastby("me")` 

Importante respuesta del apéndice: no use el reverse ciegas para esta tarea. Si bien funcionará en muchos casos, la solución genérica mejor / confiable es usar el sort , como en:

 hg log -r 'sort(user("me"), "-date")' -l 5 

Esto se debe a que reverse no garantiza que el order del set fuente esté bien orderado , por lo que puede dar como resultado un resultado final que no cumple con los criterios solicitados de "más nuevo".

El uso de sort arriba garantiza el comportamiento según ordera en la date, descendiendo y luego selecciona la opción de límite del logging de 5 por hg superior.

(De lo contrario, vea la respuesta de Reimer).