Mercurial - wszystkie pliki, które uległy zmianie w zestawie zmian?

98

Jak określić wszystkie pliki, które uległy zmianie w danym zbiorze zmian?

Nie szukam w tym przypadku różnicy, tylko listę dodawania / usuwania / modyfikacji.

hg log -vprX robi listę różnic, ale chcę tylko pliki.

Marcus Leon
źródło
Możliwy duplikat Zbadania pojedynczego
Michał Wróbel

Odpowiedzi:

150

Jeśli chcesz wyświetlić tylko te pliki, które uległy zmianie, powinieneś użyć "polecenia statusu" Poniżej wymieniono zmiany w plikach w wersji REV

hg status --change REV
pyfunc
źródło
14
+1, ale OP prawdopodobnie również chce flagi -n/ --no-status.
Niall C.
7
Dla łatwego kopiowania:hg status --no-status --change REV
zastrowm
+1 To jest o wiele łatwiejsze do wpisania niż to, hg status --rev REV~1:REVco robiłem.
Patrick Oscity,
3
posługiwać się '.' dla aktualnej REV. czyli -hg status --change .
zaxy78
16

Po prostu usuń pze swojego hg log -vprpokazu listę plików. -poznacza pokaz patch. Możesz także użyć szablonu, aby sformatować wynik według własnego uznania.

Geoffrey Zheng
źródło
3
Myślę, że będziesz potrzebować następującego szablonu: --template 'files: {files} \ n'
Ton Plomp
1
Wydaje
2
hg log -r. --template '{join (files, "\ n")}' do nowej linii oddziela pliki
Foxichu
1
Komentarz @Foxichu działał dla mnie, ale był trochę zepsuty. właściwie górna odpowiedź - hg status --change .działała lepiej i dała przedrostek akcji pliku (A \ M \ D itp.) i lepszą ścieżkę względną
zaxy78
13

Wiem, że pytanie dotyczy pojedynczego zestawu zmian, ale jeśli chcesz uzyskać wszystkie pliki zmodyfikowane dla szeregu zestawów zmian, możesz to zrobić

hg status --rev 1 --rev 10 -m
Nick DeVore
źródło
2
Okropnie źle. Pliki zmodyfikowane w zakresie są takie, hg log -r BEGIN:END --template "{files}\n"jak @ geoffrey-zheng i @ton napisali dwa lata temu !!!
Lazy Badger
Przepraszam za to. Zakładano, że ich odpowiedź dotyczy pojedynczego zestawu zmian.
Nick DeVore
1
Moim zdaniem ta odpowiedź nie jest taka straszna. hg status --rev BEGIN --rev ENDjest: 1. dużo łatwiejsze do zapamiętania niż hg log -r BEGIN:END --template "{files}\n"; 2. drukuje pliki w osobnych wierszach bez użycia sed(@Eric Lawler) lub join()(@Foxichu); 3. bez -mflagi wyświetla nie tylko zmodyfikowane, ale także dodane i usunięte pliki (tu też obowiązuje ładna standardowa kolorystyka); 4. są -ai -rflagi, które pozwalają na różne filtrowanie; 5. jeśli ktoś nie chce prefiksu statusu, jest -nopcja, która go wyłącza.
Michał Wróbel
9

Bieżąca zatwierdzona wersja

hg status --change .

.jest skrótem dla bieżącej wersji, tak jak @HEADw Git

Bieżąca niezatwierdzona wersja

hg status

Arbitralna zatwierdzona rewizja

hg status --change REV_ID
Gibolt
źródło
1
najprostsza i najdokładniejsza odpowiedź!
zaxy78
2

Znalazłem to pytanie przez Google dla podobnej koncepcji. Aby wyświetlić wszystkie pliki, które zmieniły się w ramach szeregu zestawów zmian, jest to tak proste, jak:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"pokaże listę każdego pliku zmienionego lub dodanego w każdym zbiorze zmian, od [start rev] do [end rev], z plikami każdego zestawu zmian w nowej linii. Zamień {file_mods}{file_adds}z, {files}aby wyświetlić wszystkie zmodyfikowane, dodane lub usunięte pliki.
  2. sed -e 's/ /\n/g' podzieli wszystkie pliki, aby pokazać je w oddzielnych wierszach i
  3. sort posortuje dla ciebie listę, żebyśmy mogli ją przefiltrować za pomocą uniq
  4. uniq przefiltruje listę w celu usunięcia duplikatów - plików, które uległy zmianie w więcej niż jednej wersji.
Eric L.
źródło
To rozwiązanie skleja ostatnio zmodyfikowany plik z pierwszym dodanym plikiem. Ponadto nie radzi sobie poprawnie ze spacjami w nazwach plików. Rozwiązanie --templateoparte na join()systemie A bez tych niedociągnięć można skonstruować za pomocą sugestii @Foxichu.
Michał Wróbel
1

Wiem, że to stare pytanie i jestem zaskoczony, że nikt po prostu nie zaoferował zmodyfikowanego kodu z OP. Otrzymałem listę zmodyfikowanych / dodanych / usuniętych plików (nie oznaczonych jako które) po prostu uruchamiając hg log -v. Albo czego faktycznie potrzebowałem, hg log -v -l5aby zobaczyć pliki, które zostały zmodyfikowane / dodane / usunięte w ciągu ostatnich 5 zatwierdzeń (w tym te, których jeszcze nie wysłałem do repozytorium).

Đorđe Relić
źródło
„nikt nie zaoferował tylko zmodyfikowanego kodu z OP” - @Geoffrey Zheng dokładnie to zrobił ~ 1h po wysłaniu pytania
Michał Wróbel
-2

Jeśli jesteś jak większość sklepów, używasz systemu biletowego do śledzenia zmian. Jeśli znasz numer biletu i chcesz znaleźć wszystkie zatwierdzenia związane z tym biletem (zakładając, że umieścisz numer biletu w komunikacie dotyczącym zatwierdzenia), możesz użyć:

hg log -k TICKET_NUMBER

Spowoduje to wyświetlenie wszystkich wersji powiązanych z biletem. Jednak nie zawiera listy plików. Możesz użyć jednej z powyższych odpowiedzi, aby następnie uzyskać listę plików powiązanych z wersjami.

Aby to jednak uprościć, łącząc informacje z poprzednich odpowiedzi, możesz wykonać następujące czynności, aby wyszukać zatwierdzenia, w tym zmienione pliki:

hg log -vk TICKET_NUMBER
iDimensionz
źródło
Jest to związane z pytaniem. Plakat pytał, jak pobrać pliki w zestawie zmian. Zestawy zmian są często związane z biletami. Moje rozwiązanie pokazuje, jak uzyskać pliki związane ze zestawami zmian skojarzonymi z biletem.
iDimensionz