2008-08-15 8 views
84

У меня есть два отдельных меркуриальных хранилища. На данный момент имеет смысл, что они «становятся едиными», потому что я хочу работать над двумя проектами одновременно.Как объединить два проекта в Mercurial?

Мне бы очень хотелось, чтобы каждый из двух проектов был подкаталогом в новом репозитории.

  1. Как объединить два проекта?
  2. Это хорошая идея, или я должен держать их отдельно?

Кажется, я должен быть в состоянии проталкивать из одного хранилища в другое ... Может быть, это действительно прямо?

ответ

69

Я был в состоянии объединить два моих репозиториев таким образом:

  1. Использование hg clone first_repository клонировать один из хранилищ.
  2. Используйте hg pull -f other_repository, чтобы извлечь код из другого репозитория.

Флаг -f (сила) на тяге является ключом - он говорит, что игнорирует тот факт, что два репозитория не из одного источника.

Для этой функции the docs.

+1

Сохраняет ли это ключи хэша коммитов со второго репо? (Я бы не догадался, но это может быть нормально, пока вы не сходите.) – Macke 2009-10-11 19:53:59

+6

Это работает, но вам нужно также запустить `hg merge`, чтобы, наконец, получить все, что работает – 2009-10-25 16:18:47

3

Если вы не используете один и тот же код в проектах, держите их отдельно. Вы можете установить ваш личный репозиторий каждого из этих проектов как отдельный каталог. Зачем смешивать все ветви, сливать и комментировать комментарии, когда вам это не нужно.

О вашей редакции: Выдвижение из одного хранилища в другое. Вы всегда можете использовать команду transplant. Хотя, все это действительно боковое, наступающее на ваш желание, чтобы совместить два, так что вы можете чувствовать себя некомфортно, используя мои предложения. Затем вы можете использовать расширение леса или что-то еще.

hg transplant -s REPOSITORY lower_rev:high_rev 
7

hg начал иметь subrepo с 1,3 (2009-07-01). Ранние версии были неполными и шаткими, но теперь это довольно удобно.