Gerar uma lista de quais arquivos mudaram entre as versões hg

118

Desejo gerar uma lista de quais arquivos mudaram entre duas revisões em um determinado diretório no Mercurial.

Em particular, não estou interessado no que mudou, mas em quais arquivos foram alterados nesse diretório.

Por exemplo, supondo que entre thene otherthen, apenas 2 arquivos alterados:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

Qual é o comando hipotético? Eu tentei diff e log, mas não vejo como convencê-los a fazer isso: ou eu obtenho o patch (diff), ou obtenho o repo completo (log).

Paul Nathan
fonte

Respostas:

166
hg status --rev x:y

onde xe ysão os números de revisão desejados (ou nomes de tags ou ramos).

Se você estiver usando o terminal no Windows, adicione hg status --rev x:y> your-file.txtpara salvar a lista em um arquivo.

alemjerus
fonte
3
Para ver apenas as mudanças no diretório atual:hg status --rev x:y .
Usuário
14
Para ver as mudanças na última revisão: hg status --rev .^
kunigami
8
Para obter apenas a lista de nomes de arquivos (e nenhum caractere de prefixo indicando o tipo de alteração), anexe -n, ou sejahg status --rev x:y -n
Cheetah
1
hg status --change .lista os arquivos alterados na .- mesma lista, hg status --rev .^mas mais diretamente
Metaxis
14

status é o que você precisa.

Mas, dependendo do que você entende por "entre duas revisões", você também pode considerar o uso do intervalo " x :: y " (DAG - Gráfico Acíclico Direcionado).

Dados conjuntos de mudanças paralelos,

1--2---4 \---3

hg status --rev 1:4 retornaria (1,2,3,4), ou seja, qualquer coisa entre e incluindo os pontos finais, de acordo com o rev numérico local . Isso pode (e provavelmente irá) retornar resultados diferentes em outros - embora relacionados - repositórios!

hg status --rev 1::4retornaria (1,2,4), ou seja, os pontos de extremidade e todos os conjuntos de alterações que são descendentes de '1' E ancestrais de '4'.

O último caso, x :: y, geralmente é mais útil em aplicativos do mundo real. Isso é o que você obtém via TortoiseHg \ Visual Diff.


> hg help revsets:

"x :: y" Um intervalo DAG, significando todos os conjuntos de alterações que são descendentes de x e ancestrais de y, incluindo os próprios x e y. Se o primeiro ponto final for deixado de fora, isso é equivalente a "ancestrais (y)", se o segundo for deixado de fora, é equivalente a "descendentes (x)".

martind2112
fonte
1
Talvez você precise incluir explicitamente o comando para que sua resposta não dependa da outra e seja mais infalível. Algo como "Sim, o status é o que você precisa. Por exemplo hg status --rev x::y".
PhoneixS