2010-01-18 10 views
7

Załóżmy, że sklonowałem zdalne repozytorium Mercurial (przez sieć lokalną lub nawet przez Internet), aby wypróbować coś.
Pracuję w moim klonie, dokonuję kilku zmian ... i wtedy zdaję sobie sprawę, że moje zmiany nie mają sensu i muszę zacząć od początku.Najszybszy sposób na "zresetowanie" repozytorium Mercurial do wersji X (bez klonowania)

Więc chcę mieć ponownie "świeży" klon z tego samego repozytorium.
Zasadniczo chcę "zresetować" moje lokalne repo do punktu, zanim zacząłem eksperymentować.

Jaki jest najlepszy/najszybszy sposób to zrobić?

Najprostszym sposobem jest po prostu zrobienie nowego klona, ​​ale HG ponownie kopiuje całe repozytorium i całą historię przez sieć.
Jeśli repozytorium jest naprawdę duże, zajmie to trochę czasu i/lub zablokuje sieć.

Próbowałem zrobić nowy klon w tym samym folderze (mając nadzieję, że HG to rozpozna i zaktualizuje tylko te pliki, które uległy zmianie i historię), ale wydaje się, że kopiuje ono również całe repozytorium.

Mogę "przywrócić", ale wycofuje tylko ostatnie zatwierdzenie. Jeśli wykonałem kilka poprawek, mogę cofnąć tylko ostatnią. Więc nie mogę zresetować repo do punktu, zanim zacząłem działać.

Wszelkie pomysły?
Czy naprawdę nie ma innego sposobu niż klonowanie wszystkiego jeszcze raz?
(uwaga: roztwór z TortoiseHg byłoby miło ... Wolę to na linii poleceń)

Odpowiedz

17

Kończy nam się używanie hg strip, jak sugeruje Gizmo, ale tradycyjnym sposobem na to byłoby klonowanie ponownie - nie z zdalnego repozytorium, ale z własnego lokalnego repozytorium. Na przykład, jeśli kasa jest „repozytorium” i dodasz Zestawienia zmian 99 i 100, które nie lubią chcesz zrobić:

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

które powinny być blisko natychmiastowe.

1

hg update -r <changeset number> np hg update -r 1 dla drugiej wersji. Możesz użyć wersji hg log, aby sprawdzić wersję, którą chcesz.

+2

To nie spowodowałoby powrotu systemu do stanu, w którym został sklonowany - nadal działałyby zatwierdzone od wczoraj " –

8

Jeśli włączysz Mq Extension, możesz użyć polecenia "hg strip", które usunie historię, której już nie chcesz.
Więcej informacji jest dostępnych na stronie wiki Strip command.

+0

". –

Powiązane problemy