2014-11-05 3 views
0

У меня есть репозиторий Git, и мне нужно использовать library, который поставляется в виде исходного кода, который использует Mercurial в качестве контроля версий. Я хотел бы сохранить контроль версий внутри моего репозитория git, чтобы иметь возможность обновлять библиотеку простым способом.Репозиторий Git с субрепозитором Mercurial

Текущая структура каталогов выглядят следующим образом:

root (git repo here) 
    directory1 
    ... 
    directoryN 

Безопасно ли добавить библиотеку в папке root и имеет следующую конфигурацию?

root (git repo here) 
    library_folder (mercurial repo here) 
    directory1 
    ... 
    directoryN 

Если да, то изменения, сделанные путем обновления library_folder с помощью ртутный видны Git и они безопасны быть совершены в Git репо?

рабочий процесс должен быть чем-то вроде этого:

  1. новые обновления доступны в library
  2. Developer_x тянет изменения библиотеки с помощью Mercurial
  3. Developer_x совершает/раздвигает изменения в Git репозиторий
  4. Все разработчики извлекают изменения с использованием Git, как обычно, и у них есть обновления library.

ответ

1

Используя предлагаемый поток, будет также зафиксирован весь «.hg», содержащий полную историю Mercurial. Это похоже на отходы, много накладных расходов и неприятностей, ожидающих, что это произойдет.

Более безопасная альтернатива будет использовать hg-git, чтобы преобразовать ваш Mercurial репозиторий, а затем использовать git submodules или git поддерево (не уверен, что лучше), чтобы сохранить ссылку на правильный набор изменений. Таким образом, вам нужно только сохранить ссылку в основном хранилище, а не все содержимое библиотеки и историю.

Одним из вариантов было бы перейти на «один большой репозиторий», но тогда вы должны были бы передать все файлы библиотеки , кроме .hg. С этим можно легко работать (с меньшей сложностью). Недостатком является то, что вы теряете историю (вы можете изучить инструменты для импорта кода с историей и всеми).

0

Вы можете перемещаться в противоположном направлении от направления Mathiasdm: работать с хранилищем Mercurial прямо из Git.

Mercurial bridge in Git позволит вам have and use Mercurial repositories (читать комментарии Алекса) точно так же, как вы используете Git репозиториев (и я предложу поддерево Git, а не подмодули)

Смежные вопросы