Przenoszę proces kompilacji do użycia Mercurial i chcę przywrócić katalog roboczy do stanu wersji końcówki. Wcześniejsze uruchomienia procesu kompilacji zmodyfikowały niektóre pliki i dodały pliki, których nie chcę zatwierdzać, więc mam lokalne zmiany i pliki, które nie są dodawane do repozytorium.
Jaki jest najłatwiejszy sposób na pozbycie się tego wszystkiego i uzyskanie czystego katalogu roboczego z najnowszą wersją?
Obecnie robię to:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
ale wydaje się, że powinien być prostszy sposób.
Chcę zrobić to samo, co usunąć repozytorium, zrobić nowy klon i zaktualizować. Ale repozytorium jest zbyt duże, aby było wystarczająco szybkie.
hg update 00
), a następnie wrócisz do wskazówki. Dlaczego niehg revert --all
wystarczy wrócić do spójnego stanu folderu roboczego przed ściągnięciem i aktualizacją?archive
polecenie, aby być przydatne w przyszłości. Na przykład mógłbyśhg archive ../newbuild
, a migawka twojego repozytorium na końcuhg update
zostanie tam umieszczona. Zwykle robię to w przypadku nocnych kompilacji, aby nie ryzykować zaśmiecania mojego repozytorium. Po prostu usuń katalog kompilacji, gdy już go nie potrzebujesz.Odpowiedzi:
Kroki te powinny dać się skrócić do:
-C
Flaga informuje polecenie aktualizacji, aby odrzucić wszystkie zmiany lokalne przed aktualizacją.Jednak może to nadal pozostawić nieśledzone pliki w repozytorium. Wygląda na to, że chcesz się ich pozbyć, więc
purge
użyłbym do tego rozszerzenia:W każdym razie nie ma jednego polecenia, o wykonanie którego możesz poprosić Mercurial, a które zrobi wszystko, co chcesz, z wyjątkiem zmiany procesu na metodę „pełnego klonowania”, której nie możesz wykonać.
źródło
hg --config "extensions.purge=" purge --all
hg purge --all
po prostu przyprawił mnie o ból głowy, ponieważ usunął również moje lokalne konfiguracje, tj. użytkownik bazy danych / hasło itp. :)Spowoduje to usunięcie wszystkich zmian i zaktualizowanie do najnowszej głowy w bieżącej gałęzi.
Możesz także włączyć rozszerzenie czyszczenia, aby móc usunąć również wszystkie niewersjonowane pliki.
źródło
hg purge
dotyczy niewersjonowanych plików.Aby usunąć nieśledzone na * nix bez rozszerzenia czyszczenia, którego możesz użyć
Który używa
źródło
Jeśli szukasz łatwej metody , możesz spróbować tego.
Osobiście prawie nie pamiętam linii poleceń dla wszystkich moich narzędzi, więc zwykle robię to za pomocą interfejsu użytkownika:
1. Najpierw wybierz „zatwierdź”
2. Następnie wyświetl ignorowane pliki. Jeśli masz niezatwierdzone zmiany, ukryj je.
3. Teraz zaznacz je wszystkie i kliknij „Usuń bez wersji”.
Gotowe. Jest to procedura, która jest o wiele łatwiejsza do zapamiętania niż rzeczy z linii poleceń.
źródło
hg status pokaże ci wszystkie nowe pliki, a następnie możesz je po prostu rmować .
Zwykle chcę się pozbyć zignorowanych i niewersjonowanych plików, więc:
A następnie wykonaj:
co ustawia wszystkie wersjonowane pliki w odpowiednim stanie dla wersji xxxx
Aby podążać za tradycją przepełnienia stosu, mówiącą ci, że nie chcesz tego robić, często stwierdzam, że ta „opcja nuklearna” zniszczyła rzeczy, na których mi zależy.
Właściwym sposobem na to jest posiadanie opcji „make clean” w procesie budowania, a może także „make reallyclean” i „make distclean”.
źródło