Jak sklonować podfolder repozytorium w Mercurial?
Mam repozytorium Mercurial zawierające garść powiązanych projektów. Chcę rozgałęzić tylko jeden z tych projektów, aby pracować nad nim gdzie indziej.
Czy klonowanie tylko części repozytorium jest możliwe i czy jest to właściwa droga do osiągnięcia tego celu?
6 answers
What you want is a wąski lub częściowy klon , ale niestety nie jest to jeszcze obsługiwane.
Jeśli masz już duże repozytorium i zdajesz sobie sprawę, że sensownym byłoby podzielenie go na kilka mniejszych repozytoriów, możesz użyć rozszerzenia convert , aby wykonać konwersję Mercurial do Mercurial. Zauważ, że tworzy to nowe repozytorium foo
i nie można naciskać / ciągnąć między your-big-repo
A foo
.
convert extension
nie jest domyślnie włączona, więc dodaj do pliku repo hgrc
lub pliku mercurial.ini
:
[extensions]
hgext.convert=
Następnie utwórz plik map.txt
z
include "libs/foo"
rename "libs/foo" .
(uwaga możesz używać ukośników do przodu nawet w systemie Windows) i uruchom
$ hg convert --filemap map.txt your-big-repo foo
, które uczyni foo
repozytorium z pełną historią folderu libs/foo
z your-big-repo
.
Jeśli chcesz usunąć wszystkie dowody foo
z your-big-repo
możesz wykonać kolejną konwersję, w której użyjesz exclude libs/foo
, aby pozbyć się katalog.
Jeśli masz kilka takich repozytoriów i chcesz ich używać jako całości, powinieneś zajrzeć do podrepozytoriów. Ta funkcja pozwala na włączenie innych repozytoriów do kasy - podobnie jak działa svn:externals
. Proszę postępować zgodnie z zaleceniami na tej stronie wiki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 10:10:34
Zamiast częściowego klonowania, możesz użyć Convert Extension , aby podzielić repo na więcej niż jedno repo za pomocą podrzędnego repozytorium.
W szczególności patrz sekcja, Konwersja z Mercurial :
Przydatne jest również filtrowanie repozytoriów Mercurial, aby uzyskać podzbiory istniejącego. Na przykład, aby przekształcić podkatalog subfoo repozytorium foo w repozytorium z własnym życiem (zachowując jego pełną historię), wykonaj "po": {]}
$ echo include subfoo > /tmp/myfilemap $ echo rename subfoo . >> /tmp/myfilemap $ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 10:12:04
Natknąłem się na ten problem i znalazłem jeden sposób, aby to zrobić: Korzystanie z dowiązań symbolicznych (niestety tylko Linux)
Na przykład, jeśli potrzebujesz tylko /project
w repozytorium, na komputerze Sklonuj repo w innym folderze, a następnie użyj ln -s /repo/location/ project
. Mercurial się tym zajmie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-31 03:29:04
Nie jest to możliwe, hg clone
sklonuje całe repozytorium.
Możesz spojrzeć na rozszerzenie sub-repozytorium, które pozwala na umieszczenie repozytoriów w repozytorium, które może odpowiadać Twoim potrzebom.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-28 11:58:36
(pod koniec 2016) Mainline Mercurial nadal nie obsługuje pakietów dla "wąskich klonów", ale istnieją rozszerzenia innych firm, które rozwiązują problem na różne sposoby.
Jeśli poradzisz sobie tylko z wąskim checkout (aka "sparse checkout" lub "partial checkout by file path"), rozszerzenie Facebook ' a sparse.py
z Hg-experimental repozytorium (zajrzyj do katalogu hgext3rd/
) może być wykonalne. W tym scenariuszu, nadal klon pełną historię (tak .katalog hg jest nie mniejsze), ale twój katalog roboczy pokazuje/działa tylko na podzbiorze pełnego repozytorium.
Alternatywnie Google stworzyło rozszerzenie NarrowHG, które wąska klonowanie (aka "częściowe klonowanie przez ścieżkę pliku"). Musisz mieć kontrolę nad serwerem, klientem i być skłonnym do korzystania z funkcji eksperymentalnych, ale to naprawdę ogranicza skopiowaną historię klona .hg do podzbioru tego, co było w oryginalnym repozytorium.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-22 05:21:40