Chcę wygenerować listę plików zmienionych między dwiema wersjami w danym katalogu w Mercurial.
W szczególności nie interesuje mnie, co się zmieniło, ale które pliki uległy zmianie w tym katalogu.
Np. Zakładając, że między then
a otherthen
, tylko 2 pliki uległy zmianie:
>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>
Jakie jest hipotetyczne polecenie? Próbowałem diff i log, ale nie widzę, jak ich do tego przekonać: albo dostaję łatkę (diff), albo całe repozytorium (log).
version-control
mercurial
Paul Nathan
źródło
źródło
hg status --rev x:y .
hg status --rev .^
-n
, np.hg status --rev x:y -n
hg status --change .
wymienia zmienione pliki w.
- tej samej liście co,hg status --rev .^
ale bardziej bezpośrednioStatus jest tym, czego potrzebujesz.
Ale w zależności od tego, co rozumiesz przez „między dwiema wersjami”, możesz również rozważyć użycie zakresu „ x :: y ” (DAG - Directed Acyclic Graph).
Biorąc pod uwagę równoległe zestawy zmian,
1--2---4 \---3
hg status --rev 1:4
zwróci (1, 2, 3, 4), tj. wszystko pomiędzy punktami końcowymi włącznie, zgodnie z lokalnym, numerycznym rev . Może to (i najprawdopodobniej zwróci) inne wyniki w innych - choć powiązanych - repozytoriach!hg status --rev 1::4
zwróci (1, 2, 4), tj. punkty końcowe i wszystkie zbiory zmian, które są potomkami „1” ORAZ przodkami „4”.Drugi przypadek, x :: y, jest zwykle bardziej przydatny w rzeczywistych aplikacjach. To właśnie otrzymujesz przez TortoiseHg \ Visual Diff.
> hg help revsets:
źródło
hg status --rev x::y
”.