Jestem nowy w Mercurial. Po prostu nie mogę znaleźć odpowiedniego polecenia. Próbowałem aktualizacji / kasy bez powodzenia. Korzystam z lokalnego repozytorium. Dzięki
Jestem nowy w Mercurial. Po prostu nie mogę znaleźć odpowiedniego polecenia. Próbowałem aktualizacji / kasy bez powodzenia. Korzystam z lokalnego repozytorium. Dzięki
Odpowiedzi:
Myślę, że chcesz hg revert -r<rev> <file>(spowoduje to zmianę tego pliku na taki, jaki był w danej wersji).
Jak powiedział djc, revertzmienia plik w miejscu, aby pasował do poprzedniej wersji. Jeśli chcesz, aby nie było go na miejscu, możesz użyć hg cat -r revisionid filename(oczywiście zastępując identyfikator rewizji i nazwę pliku), co spowoduje wyświetlenie pliku na stdout, odpowiednie do przekierowania w dowolne miejsce.
hg revertrzeczywiście rozwiązuje ten problem. Ale myślę, że jesteś zdezorientowany w szerszym zakresie rzeczy niż zwykła odpowiedź na swoje pytanie i chcesz spróbować odpowiedzieć pełniej.
hg updateto polecenie dotyczące całego repozytorium i nie będzie działać na pojedynczych plikach. W ten sposób nie przypomina wywrotu svn update. Jeśli tak hg --help update, możesz zobaczyć, że tak jest, ponieważ polecenie nie przyjmuje argumentu plikowego. Można go użyć do przeniesienia całego repozytorium do określonej migawki, ale nie można go użyć do zrobienia tego tylko do jednego pliku.
Jeśli wpiszesz hg --help, zobaczysz listę poleceń. Jest to dość obszerna i nieco zniechęcająca lista, ale jeśli ją przeczytasz, znajdziesz następującą linię:
revert restore individual files or directories to an earlier state
Teraz, jeśli chcesz tylko ostatni stan do celów porównawczych, istnieje inne polecenie, które może Cię zainteresować, i to jest hg cat. Umożliwi to wydrukowanie zawartości pliku w dowolnej wersji. Następnie możesz przekierować jego wyjście do innego pliku. Następnie możesz mieć poprzednią znaną dobrą wersję pliku i starszą wersję do porównania obok siebie.
Powodem, dla którego Mercurial ma oddzielne updatepolecenie, jest to, że w Mercurial można zrobić coś, co jest niemożliwe w Subversion. Możesz updatedo wcześniejszej wersji, wprowadzić zmiany, a następnie zatwierdzić. Spowoduje to utworzenie gałęzi. updatePolecenie ma wpływ także zmiany rewizji nadrzędny bieżącego katalogu roboczego, a także zmieniając zawartość wszystkich plików w tym katalogu do wersji rodzic rewizji za.
Oznacza to, że revertzmienia zawartość pliku (lub nawet całego repozytorium, jeśli podasz komendzie odpowiednie argumenty), ale pozostawia tę samą wersję nadrzędną bieżącej kopii roboczej.
Możesz znaleźć wersję nadrzędną (lub wersje w przypadku scalania) bieżącej kopii roboczej za pomocą hg parentspolecenia.
W wersjach Subversion zmiany są ściśle liniowe. Mercurial tworzy gałęzie w mgnieniu oka i prawie tak łatwo je scalić. Rewizje tworzą DAG, a nie ściśle liniową progresję.
Aby wyodrębnić określoną wersję określonego pliku, możesz to zrobić w systemie Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Tutaj 9 to numer wersji.
Albo jeszcze lepiej:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"