Zainspirowany przez Git dla początkujących: ostateczny praktyczny przewodnik .
Jest to kompilacja informacji na temat korzystania z Mercurial dla początkujących w celu praktycznego zastosowania.
Początkujący - programista, który dotknął kontroli źródła, nie rozumiejąc go zbyt dobrze.
Praktyczny - obejmujący sytuacje, które często napotyka większość użytkowników - tworzenie repozytorium, rozgałęzianie, scalanie, pobieranie / wypychanie z / do zdalnego repozytorium itp.
Uwagi :
- Wyjaśnij, jak coś zrobić, zamiast tego, jak coś jest realizowane.
- Odpowiedz na jedno pytanie na odpowiedź.
- Odpowiedz w sposób jasny i zwięzły, jak to możliwe.
- Edytuj / rozszerz istniejącą odpowiedź zamiast tworzyć nową odpowiedź na ten sam temat.
- Podaj link do wiki Mercurial lub HG Book dla osób, które chcą dowiedzieć się więcej.
Pytania:
Instalacja / konfiguracja
- Jak zainstalować Mercurial?
- Jak skonfigurować Mercurial?
- Jak tworzysz nowy projekt / repozytorium?
- Jak skonfigurować go tak, aby ignorował pliki?
Praca z kodem
- Jak uzyskać najnowszy kod?
- Jak sprawdzić kod?
- Jak zatwierdzasz zmiany?
- Jak widzisz, co jest niezaangażowane, lub status swojej obecnej bazy kodów?
- Jak usunąć pliki z repozytorium?
- Jak niszczysz niechciane zobowiązania?
- Jak porównać dwie wersje pliku lub bieżący plik i poprzednią wersję?
- Jak widzisz historię zmian w pliku lub repozytorium?
- Jak radzisz sobie z plikami binarnymi (na przykład dokumentami Visio lub środowiskami kompilatora)?
- Jak scalić pliki zmienione w „tym samym czasie”?
- Jak przywrócić zestaw zmian?
- Jak wrócisz do poprzedniej wersji kodu?
- Jak wyodrębnić łatkę z określonego zestawu zmian?
- Jak zapisać, że zmieniłeś nazwę pliku lub usunąłeś go bez użycia polecenia Mercurial?
Tagowanie, rozgałęzianie, wydania, linie bazowe
- Jak „oznaczyć” „tagować” lub „zwolnić” konkretny zestaw poprawek dla określonego zestawu plików, aby zawsze móc pobrać go później?
- Jak wyciągnąć określone „wydanie”?
- Jak się rozgałęziasz?
- Jak łączyć gałęzie?
- Jak łączysz części jednej gałęzi z drugą?
Inny
- Dobra wtyczka GUI / IDE dla Mercurial? Zalety wady?
- Jakieś inne typowe zadania, które powinien znać początkujący?
- Jak połączyć się z Subversion?
Inne referencje dotyczące rtęci
- Mercurial: The Definitive Guide
- Wiki Mercurial
- Poznaj Mercurial | Screencast Peepcode
- Opanowanie rtęci | Screencast TekPub
- Hg Init - od podstaw samouczek Mercurial
hg add
zignorujesz pliki, Mercurial będzie je śledził. Na przykład, jeśli masz kilka plików, takich jakdeploy-test.conf
,deploy-production.conf
nie, itp i chce je wersją (mogą mieć haseł w nich), ale zrobić chcesz wersjideploy-template.conf
można po prostu zignorowaćdeploy*
i ręcznie dodaćdeploy-templace.conf
.Jak widzisz, co jest niezaangażowane, lub status swojej obecnej bazy kodów?
Aby wyświetlić listę plików, które zostały zmienione:
Spowoduje to wydrukowanie każdego zmienionego pliku wraz z jego statusem, który może obejmować:
M
- Zmodyfikowano. Plik został zmieniony i zmiany nie zostały zatwierdzone.A
- Dodany. Plik nie był wcześniej śledzony, ale jeśli zatwierdzisz, Mercurial rozpocznie śledzenie.R
- usunięty. Plik był wcześniej śledzony, ale jeśli popełnisz, Mercurial przestanie go śledzić w tym i przyszłych zatwierdzeniach.?
- Nieznany. Plik nie jest obecnie śledzony przez Mercurial. Zatwierdzanie nie będzie miało na to żadnego wpływu, chyba że użyjesz gohg add
do dodania.!
- Brakuje. Plik był śledzony, ale Mercurial nie może go znaleźć w kopii roboczej.Aby zobaczyć zmiany, które faktycznie zostały wprowadzone w plikach:
źródło
Jak tworzysz nowy projekt / repozytorium?
źródło
Jak połączyć się z Subversion?
Istnieją trzy sposoby:
Rozszerzenie konwersji będzie sklonowanie istniejącego repozytorium Subversion w jednym Mercurial. Pochodzi z Mercurial. Działa mniej więcej tak:
Na przykład spowoduje to przechwycenie pnia repozytorium SixApart.
Rozszerzenie może stopniowo wprowadzać nowe wersje z repozytorium Subversion do repozytorium Mercurial (trochę jak pull). Jednak nie obsługuje przyjmowania poprawek Mercurial i wysyłania ich z powrotem do Subversion (bez wypychania). [XXX: Popraw to, jeśli jest źle] .
Przedłużenie hgsubversion . Jest to pod wieloma względami najbardziej wyrafinowane rozwiązanie, ponieważ wykorzystuje interfejs API Subversion do komunikacji z repozytorium Subversion. Ma on stać się mostem hg-svn. Pozwala na pełne przerzucanie zmian wersji (pełne klonowanie, ściąganie i wypychanie), jednak z chwilą pisania [XXX: popraw to, jeśli / kiedy stanie się niepoprawny] jest wciąż w fazie rozwoju i nie ma jeszcze oficjalnych wydań. W związku z tym działa tylko z najnowszą wersją Mercurial (1.3 od tego tekstu).
tags/
aby odróżnić je od równorzędnych nazw gałęzi).closed-branches
do zamykania gałęzi, które są usuwane w Subversion.hg svn <subcommand>
ma na celu integrację do tego stopnia, że nie potrzebujesz części „svn” (tzn. Chce traktować klon Subversion tak bardzo, jak to możliwe, jak każde inne repozytorium Mercurial);Działa to tak:
klon:
LUB (tylko w przypadku
svn://
adresów URL)Ciągnąć:
Pchać:
przychodzące:
towarzyski:
Sprawdzanie całego repozytorium:
Narzędzie hgsvn ( drzewo bitbucket ). Do niedawna pozwalało to tylko na klonowanie i pobieranie repozytorium Subversion, ale od
hgsvn 0.1.7
teraz obsługuje push. [Nie wiem, jak dobrze to popycha. Każdy, kto ma większe doświadczenie, powinien to zaktualizować.] Ma następujące ważne funkcje:branches/some-feature
byłobyhg branch some-feature
. Włącza łączetrunk
(tzn. Nic nie znajduje się w domyślnej gałęzi Mercurial, chyba że użytkownik wyraźnie do niej przełączy).Działa to tak:
klon:
Ciągnąć:
Pchać:
przychodzące:
towarzyski:
Sprawdzanie całego repozytorium:
Sprawdzanie tylko bagażnika:
źródło
hg convert
i naprawdę zajmuje dużo czasu, gdy masz repozytorium svn z wieloma zatwierdzeniami. Utworzenie lokalnego repozytoriumsvnsync
pomaga znacznie przyspieszyć działanie - szczególnie, gdy trzeba to zrobić kilka razy, ponieważ w komendzie konwersji masz złe opcje.svnsync
uzyskać dostęp do rzeczywistych plików repozytorium, a nie tylko adresu URL.Jak porównać dwie wersje pliku lub bieżący plik i poprzednią wersję?
Oba używają
hg diff
. Kiedyhg diff
jest używany, wszystkie zmiany w kopii roboczej i wskazówka (ostatnie zatwierdzenie) są wyświetlane.„Jak porównać dwie wersje pliku?”
Powyższe polecenie pokaże różne wersje rev1 i rev2 „file.code”.
„Jak porównać swój bieżący plik z poprzednią wersją?”
Powyższe polecenie pokaże różne między bieżącą wersją „file.code” a ostatnią wersją (ostatnią zatwierdzoną).
:RE
źródło
Jak „oznaczyć” „tagować” lub „zwolnić” konkretny zestaw poprawek dla określonego zestawu plików, aby zawsze móc pobrać go później?
Możesz także sklonować swoje repozytorium, aby utworzyć specjalne repozytorium znaczników .
źródło
hg tag my-tag
?Jak się rozgałęziasz?
$ hg oddział mój oddział
lub
$ hg klon oryginalnego repozytorium moja gałąź
Chociaż należy zauważyć, że oddział tworzy katalog „wirtualny” (tzn. Pliki pozostają takie same, ale hg traktuje je tak, jakby były różne w systemie), podczas gdy klon tworzy rzeczywistą, kompletną kopię. Ściśle mówiąc, klon nie rozgałęzia się.
źródło
hg branch my-branch
Dobra wtyczka GUI / IDE dla Mercurial?
GUI
Wtyczki
źródło
Jak zatwierdzasz zmiany?
Wywołaj to polecenie z bieżącego lokalnego * repozytorium rtęci
aliasy: ci
Gdzie może być opcja:
Przykładowym poleceniem byłoby:
UWAGI :
źródło
Jak skonfigurować Mercurial?
Mercurial przechowuje informacje o konfiguracji w
~/.hgrc
systemach * nix i%UserProfile%\mercurial.ini
Windows. (%UserProfile%
zwykle"C:\Documents and Settings\[username]\"
w systemach Windows 2000 lub Windows XP i zazwyczajC:\Users\[username]\
w systemach Windows Vista i Windows 7).Na początek powinieneś ustawić swoją nazwę użytkownika Mercurial, umieszczając następujące dane w swoim
.hgrc
lubmercurial.ini
:Użytkownicy TortoiseHg w systemach Windows mogą alternatywnie działać
hgtk userconfig
Zobacz także „ Tworzenie pliku konfiguracyjnego Mercurial ” w rozdziale 2 „ Mercurial: The Definitive Guide ”.
źródło
Jak łączyć gałęzie?
źródło
Jak zainstalować Mercurial?
Ładnie edytuj, jeśli instalowałeś ze źródła w systemie Linux lub korzystałeś z instalatorów Windows.
Mac OS X 10.4 (Tiger), 10.5 (Leopard)
Użyj easy_install Pythona (z Setuptools ):
Znajduje najnowszą wersję (1.3.1 w momencie pisania) i instaluje się o:
W przypadku Python 2.6 omija to również pakiet instalacyjny Mercurial OS X (w wersji 1.2.1 od 26 lipca 2009), skarżąc się, że potrzebuje Python 2.5. Z dokumentacji wynika, że Fink i Macports instalują wersję 1.2.
Linux
Większość jawnych pakietów Linux wydaje się pozostawać w tyle za bieżącą wersją, więc użyj easy_install (jak wyżej) lub pobierz tarball Mercurial , rozpakuj archiwum, przejdź do katalogu mercurial i uruchom:
(od wprowadzenia Mercurial, rozproszonego systemu kontroli wersji )
Windows
Istnieje pakiet binarny najnowszej wersji Mercurial . TortoiseHg to rozszerzenie powłoki Windows dla i instaluje Mercurial. Cygwin może również zainstalować Mercurial.
Alternatywnie (instrukcje zbyt długie, więc tutaj linkowane) możesz zbudować zoptymalizowaną lub czystą wersję Pythona Mercurial ze źródła.
źródło
Jak uzyskać najnowszy kod?
Mercurial pamięta, z którego sklonowano repozytorium (w .hg / hgrc), więc możesz po prostu uruchomić:
aby pobrać najnowszy kod z repozytorium pochodzenia. (To nie aktualizuje katalogu roboczego)
zaktualizować katalog roboczy.
aby wykonać jednocześnie ściąganie i aktualizację.
źródło
.hg/hgrc
podczas klonowania, więc nie musisz go określać podczas ciągnięcia / pchania. Jeśli chcesz, możesz dodać więcej ścieżek do[paths]
sekcji.hg/hgrc
.Jak sprawdzić kod?
Gdzie może być opcja:
Gdzie źródło jest źródłem oryginalnych plików znajdujących się w repozytorium, gdzie może to być zdalny adres URL lub katalog systemu plików. Na przykład:
A miejsce docelowe to miejsce, w którym będzie znajdować się kod źródłowy w lokalnym systemie plików.
źródło
Jak zatwierdzasz zmiany?
źródło
Jak widzisz, jakie zmiany będą wysyłane do repozytorium nadrzędnego po naciśnięciu?
Użyj,
hg outgoing
aby uzyskać listę zestawów zmian, które zostaną ustawione w domyślnym repozytorium:Aby uzyskać rzeczywiste zmiany kodu, użyj
-p
(--patch
). Spowoduje to wyświetlenie każdego zestawu zmian w całości:źródło
Jak usunąć plik z repozytorium?
Aby usunąć plik z repozytorium i usunąć go przy następnym zatwierdzeniu:
Aby usunąć plik z repozytorium, ale nie można go usunąć
lub z Mercurial 1.3
źródło
Jak wrócisz do poprzedniej wersji kodu?
Z tego pytania
@van: Jeśli później zatwierdzisz, skutecznie utworzysz nowy oddział. Następnie możesz kontynuować pracę tylko nad tym oddziałem lub ewentualnie połączyć istniejący z nim.
źródło
Jak przywrócić zestaw zmian?
Kilka dostępnych opcji
Łatwy sposób (wycofaj pojedynczy zestaw zmian)
Hard Way (ręcznie różnicuj i aplikuj)
Krok 1 : Utwórz plik łatki, aby przywrócić zmiany wprowadzone między wersją 107 a 108:
(alternatywnie, hg diff -r108 -r107 bez --reverse zrobi to samo)
Krok 2 : Zastosuj plik łatki:
Niektóre różnice mogą nie zostać zastosowane, na przykład:
Plik .rej będzie zawierał zawartość pliku różnicowego, który nie został zastosowany, musisz zajrzeć.
źródło
hg backout
jest?Jak widzisz historię zmian w pliku lub repozytorium?
Aby wyświetlić historię zmian całego repozytorium lub plików
lub
I zobaczyć listę w odwrotnej kolejności
źródło
Jak łączysz części jednej gałęzi z drugą?
Włącz rozszerzenie „przeszczep” w swoim pliku .hg / hgrc
Załaduj gałąź docelową, a następnie przeszczep wersję docelową.
np .: cherry pick wersja 81 z gałęzi „foo” do bieżącej gałęzi
źródło
graft
polecenia, aby zrobić to samo.hg help graft
po więcej informacjiJak wyodrębnić łatkę z określonego zestawu zmian?
Następnie możesz zaimportować to do innego oddziału za pomocą:
źródło