mercurialPierwsze kroki z merkurialem


Uwagi

Mercurial to nowoczesny, rozproszony system kontroli wersji o otwartym kodzie źródłowym. Być może słyszałeś o git, który jest dziś nieco bardziej popularny; git i Mercurial są bardzo porównywalne i oferują głównie podobną funkcjonalność.

Programiści używają Mercurial do śledzenia zmian w kodzie źródłowym swoich aplikacji. Można go używać do śledzenia zmian w dowolnym katalogu plików, chociaż, podobnie jak większość systemów kontroli źródła, najlepiej robi to, gdy są to pliki tekstowe (w przeciwieństwie do plików binarnych). Mercurial pozwala także wielu programistom na jednoczesną pracę nad tym samym katalogiem kodu źródłowego i zarządza procesem śledzenia zmian każdego programisty, a następnie scalaniem tych zmian.

Wersje

Mercurial postępuje zgodnie z planem czasowym i publikuje główne wydanie co trzy miesiące, w lutym, maju, sierpniu i listopadzie. Drobne wydanie jest publikowane co pozostały miesiąc. Zauważ, że Mercurial nie korzysta z wersji sematic, dlatego nie ma znaczącej różnicy między 2.9.2 (ostatnią wersją 2.9) a 3.0.

Kompatybilność wsteczna jest krytycznym wymogiem dla Mercurial, dlatego generalnie bezpieczne jest po prostu uaktualnienie instalacji Mercurial w razie potrzeby. Warto to jednak robić przynajmniej raz na trzy miesiące, ponieważ niektóre funkcje mogą uniemożliwić starym klientom działanie na nowszych repozytoriach.

Informacje o wydaniu projektu szczegółowo opisują zmiany między wersjami, natomiast informacje o aktualizacji zawierają jasne wskazówki na temat tego, co użytkownicy powinni wiedzieć podczas aktualizacji.

Wybór godnych uwagi wersji:

Wersja Notatki Data
3.5 Zatrzymuje obsługę Python 2.4 i 2.5 2015-07-31
2.1 Wprowadza „fazy” zestawu zmian, umożliwiając bezpieczną modyfikację historii 01.02.2012
1.9 Wprowadzono interfejs API serwera Command Server w celu zapewnienia lepszej integracji aplikacji 01.07.2011
1.7 Nowy format repozytorium obsługuje rzadkie nazwy plików 01.11.2010

Rozgałęzienie

Kiedy rozpoczynamy naszą pracę, musimy zdecydować, czy jest to oddzielny obszar pracy, nad którym pracujemy, czy też jest to część istniejącej linii pracy. Jeśli istnieje, możemy pracować poza tym oddziałem. Jeśli jest nowy, uruchomimy nowy oddział.

Nasz przepływ pracy to:

  • hg branch MyNewFeature
  • Praca Praca praca
  • hg commit -m "committing my changes"
  • Praca Praca praca
  • hg commit -m "more changes"

W tym momencie chcemy przenieść naszą pracę na zdalny serwer. Ale przed wprowadzeniem zmian (zignoruj to, jeśli jest to nowa gałąź, której wcześniej nie wypychałeś), musimy sprawdzić, czy są jakieś nadchodzące zmiany w tej gałęzi. Możemy to sprawdzić za pomocą:

hg incoming -b .
 

Jeśli w naszym oddziale są jakieś przychodzące zestawy zmian, musimy zrobić to i przesunąć nasze zmiany na początek listy zmian.

hg pull -b . --rebase
 

Po wykonaniu tej czynności lub jeśli nie ma żadnych przychodzących zestawów zmian, możemy kontynuować wypychanie.

Chcemy tylko przyspieszyć naszą obecną pracę, a nie wszystko, co kiedykolwiek zrobiliśmy. Naprawdę nigdy nie pcham całego repozytorium, ale moja obecna linia pracy. Powodem jest to, że przepychanie całego repozytorium zakłada, że integruję wiele linii pracy. Ale chcę tylko zintegrować moją obecną linię pracy i chcę pracować tylko w jednej linii na raz.

Jeśli po raz pierwszy pcham tę gałąź:

hg push -b . --new-branch
 

Jeśli już wypchnąłem tę gałąź:

hg push -b .
 

„-B”. polecenie oznacza po prostu wciśnij bieżącą gałąź, a nie cokolwiek innego.

Aby przełączać się między działającymi gałęziami :

hg update myBranchName
 

Pierwsze kroki

Zobacz także samouczek Mercurial

Tworzenie repozytorium rtęciowego

Repozytorium Mercurial to po prostu katalog (określany jako „katalog roboczy”) zawierający katalog .hg z metadanymi dotyczącymi zawartości repozytorium. Dzięki temu Mercurial jest bardzo lekki i łatwy w użyciu. Aby utworzyć nowe repozytorium, po prostu uruchom:

$ hg init project
 

Gdzie project to nazwa katalogu, który chcesz utworzyć. Spowoduje to utworzenie katalogu project wraz z katalogiem project/.hg zawierającym samo repozytorium.

   $ cd project
   $ echo Hello World > hello.txt
   $ hg stat
   ? hello.txt
 

Właśnie utworzyliśmy plik hello.txt w repozytorium i uruchomiliśmy hg status (lub stat w skrócie), aby zobaczyć aktualny status naszego repozytorium. Jak widać hello.txt jest opatrzone adnotacją ? , co oznacza, że Mercurial nie jest jeszcze tego świadomy. Polecenie add rejestruje ten nowy plik w Mercurial, dzięki czemu zostanie dołączony do następnego zatwierdzenia.

$ hg add hello.txt
 

Teraz, gdy Mercurial wie o zmienionym pliku, możesz uruchomić diff aby zobaczyć dokładnie, co się zmieniło od ostatniego zatwierdzenia - w tym przypadku dodajemy pełną zawartość hello.txt :

$ hg diff
diff -r 000000000000 hello.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/hello.txt Sat Jul 23 01:38:44 2016 -0400
@@ -0,0 +1,1 @@
+Hello
 

A kiedy będziemy z nich zadowoleni i gotowi do sprawdzenia naszych zmian, możemy uruchomić commit :

$ hg commit -m "Created a hello world file."
 

Zauważ, że umieściliśmy komunikat zatwierdzenia z opcją -m - jeśli nie określisz opcji -m Mercurial uruchomi edytor tekstowy, w którym możesz wprowadzić komunikat zatwierdzenia. Jest to przydatne, jeśli chcesz podać dłuższą wiadomość zawierającą wiele wierszy.

Po zatwierdzeniu zmian nie będą się one już wyświetlać, jeśli uruchomisz hg stat ponieważ repozytorium jest teraz zsynchronizowane z zawartością katalogu roboczego. Możesz uruchomić log aby zobaczyć listę zatwierdzeń, a -v zawiera dodatkowe szczegóły, takie jak pliki, których dotknęły poszczególne zatwierdzenia:

$ hg log -v
changeset:   0:b4c06cc77a42
tag:         tip
user:        Michael Diamond@Aodh <dimo414@gmail.com>
date:        Sat Jul 23 01:44:23 2016 -0400
files:       hello.txt
description:
Created a hello world file.
 

Instalacja i konfiguracja

Możesz pobrać Mercurial ze strony internetowej projektu, a istnieją narzędzia graficzne dla systemów Windows, Linux i OSX, jeśli wolisz to niż interfejs wiersza poleceń. Większość menedżerów pakietów uniksowych to Mercurial, na przykład na Debianie / Ubuntu:

$ apt-get install mercurial
 

Możesz sprawdzić, czy Mercurial jest zainstalowany, uruchamiając:

$ hg --version
 

Ustawiać

Mercurial działa od razu po wyjęciu z pudełka, ale prawdopodobnie będziesz chciał skonfigurować Mercurial, aby wiedział, kim jesteś, zanim przejdziesz dalej. Aby skojarzyć nazwę użytkownika ze swoimi zatwierdzeniami, edytuj ~/.hgrc (lub mercurial.ini w katalogu domowym w systemie Windows) i dodaj następujące wiersze:

[ui]
username = Your Name <your@email.address>
 

Jeśli nie chcesz tego robić, zawsze możesz podać nazwę użytkownika, kiedy zatwierdzasz flagą -u , np .:

$ hg commit -u "Your Name <your@email.address>"
 

Pchanie i ciągnięcie

Mercurial ułatwia dzielenie się swoją pracą i pobieranie wkładów od innych programistów. Wymaga to trzech kluczowych kroków; klonowanie , ciągnięcie i pchanie .

Klon

Aby skopiować zdalne repozytorium na dysk lokalny, należy go „sklonować”. Aby to zrobić, wystarczy przekazać zdalny adres URL, z którego chcesz sklonować. Aby sklonować kod źródłowy Mercurial, po prostu uruchom:

$ hg clone https://selenic.com/hg
 

Spowoduje to utworzenie lokalnego katalogu hg zawierającego kopię repozytorium Mercurial, do którego można zbudować, edytować i zatwierdzić (chociaż nie można opublikować zatwierdzeń z powrotem do repozytorium nadrzędnego).

Ciągnąć

Po wyrejestrowaniu repozytorium zechcesz je zsynchronizować, gdy inni opublikują w nim zmiany. Możesz pobrać nowe zmiany, po prostu uruchamiając:

$ hg pull
 

Spowoduje to pobranie nowych zatwierdzeń, ale nie zaktualizuje katalogu roboczego, więc nie zobaczysz natychmiast żadnych zmian. Aby zaktualizować zawartość katalogu roboczego, uruchom:

$ hg up
 

Który aktualizuje katalog roboczy do wersji tip (najnowszej) w repozytorium.

Możesz także uruchomić:

$ hg pull -u
 

Aby pobrać nowe zmiany i zaktualizować katalog roboczy w jednym kroku.

Pchać

Zakładając, że masz dostęp do zapisu w zdalnym repozytorium, możesz opublikować wszelkie zatwierdzenia dokonane lokalnie w zdalnym repozytorium tak samo łatwo:

$ hg push
 

Spowoduje to przesłanie zmian, o ile nie wystąpiły żadne inne zatwierdzenia od ostatniego pobrania. Jeśli twój push zostanie odrzucony, ponieważ „stworzy dodatkowe głowy”, oznacza to, że musisz wprowadzić nowe zmiany i połączyć je z własnymi.

$ hg pull
$ hg merge  # this creates a new changeset merging your changes with the remote changes
$ hg commit -m "Merged in remote changes"
$ hg push
 

W większości przypadków to wszystko, co musisz zrobić, ponieważ Mercurial obsługuje scalanie zmian automatycznie, jednak czasami trzeba ręcznie rozwiązać konflikty scalania (zobacz temat scalania). Jeśli potrzebujesz, zawsze możesz anulować scalenie i wrócić do czystego katalogu roboczego z:

$ hg up -c
 

Pamiętaj jednak, że jest to destrukcyjna operacja; wszelkie zmiany w katalogu roboczym zostaną usunięte.