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.
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.
Odpowiedzi:
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
-n
/ --no-status
.
hg status --no-status --change REV
hg status --rev REV~1:REV
co robiłem.
hg status --change .
Po prostu usuń p
ze swojego hg log -vpr
pokazu listę plików. -p
oznacza pokaz patch. Możesz także użyć szablonu, aby sformatować wynik według własnego uznania.
hg status --change .
działała lepiej i dała przedrostek akcji pliku (A \ M \ D itp.) i lepszą ścieżkę względną
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
hg log -r BEGIN:END --template "{files}\n"
jak @ geoffrey-zheng i @ton napisali dwa lata temu !!!
hg status --rev BEGIN --rev END
jest: 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 -m
flagi wyświetla nie tylko zmodyfikowane, ale także dodane i usunięte pliki (tu też obowiązuje ładna standardowa kolorystyka); 4. są -a
i -r
flagi, które pozwalają na różne filtrowanie; 5. jeśli ktoś nie chce prefiksu statusu, jest -n
opcja, która go wyłącza.
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
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.sed -e 's/ /\n/g'
podzieli wszystkie pliki, aby pokazać je w oddzielnych wierszach isort
posortuje dla ciebie listę, żebyśmy mogli ją przefiltrować za pomocą uniquniq
przefiltruje listę w celu usunięcia duplikatów - plików, które uległy zmianie w więcej niż jednej wersji.--template
oparte na join()
systemie A bez tych niedociągnięć można skonstruować za pomocą sugestii @Foxichu.
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 -l5
aby 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).
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