Как клонировать подпапку репозитория в Mercurial?
У меня есть ртутный репозиторий, содержащий несколько связанных проектов. Я хочу развить только один из этих проектов, чтобы работать над ним в другом месте.
возможно ли клонирование только части репозитория, и это правильный способ достичь этого?
6 ответов:
что вы хотите-это узкий или частичная клон, но это, к сожалению, пока не поддерживается.
если у вас уже есть большой репозиторий, и вы понимаете, что было бы целесообразно разделить его на несколько меньших репозиториев, то вы можете использовать конвертировать расширение сделать превращение ртути в ртуть. Обратите внимание, что это создает новая хранилище
foo
и вы не можете нажмите / потяните междуyour-big-repo
иfoo
.The
convert extension
не включен по умолчанию, поэтому добавьте следующее в свой РЕПО илиmercurial.ini
file:[extensions] hgext.convert=
затем создать С
include "libs/foo" rename "libs/foo" .
(обратите внимание, что вы можете использовать прямые косые черты даже в Windows) и запустить
$ hg convert --filemap map.txt your-big-repo foo
что делать
foo
репозиторий с полной историей Сyour-big-repo
.если вы хотите удалить все доказательства
foo
Сyour-big-repo
вы можете сделать другое преобразование, где вы используетеexclude libs/foo
чтобы избавиться от каталог.когда у вас есть несколько репозиториев, как это, и вы хотите использовать их в целом, то вы должны смотреть на subrepositories. Эта функция позволяет включать другие репозитории в проверку-аналогично тому, как
svn:externals
работа. Пожалуйста, следуйте за рекомендации на странице Вики.
вместо того, чтобы делать частичный клон, вы можете использовать Конвертировать Расширение чтобы разделить ваше РЕПО на несколько репо по суб репозиторию.
в частности, см. раздел преобразование из Mercurial:
также полезно фильтровать ртутные репозитории, чтобы получить подмножества существующего. Например, чтобы преобразовать подкаталог subfoo репозитория foo в репозиторий с собственной жизнью (сохраняя при этом его полную историю), сделайте следующее:
$ echo include subfoo > /tmp/myfilemap $ echo rename subfoo . >> /tmp/myfilemap $ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo
я наткнулся на эту проблему и нашел один способ сделать это: используя символические ссылки (только Linux, к сожалению)
например, если вам нужны только
/project
в репозитории, на вашем компьютере клонировать РЕПО в другую папку, а затем использоватьln -s /repo/location/ project
. Mercurial справится с этим
невозможно,
hg clone
будет клонировать весь репозиторий.вы можете посмотреть расширение суб-репозитория, которое позволяет вам иметь репозитории внутри репозитория, которые могут соответствовать вашим потребностям.
(конец 2016 года) Mainline Mercurial по-прежнему не поддерживает пакет для "узких клонов", но есть сторонние расширения, которые решают проблему по-разному.
Если вы можете справиться только с узкой оформить заказ (он же "разреженная проверка" или "частичная проверка по пути к файлу"), то Facebook
Это прямо вперед с конвертировать расширение.