Хранение сторонних библиотек в рамках проекта Mercurial: суб-репо или нет? - PullRequest
3 голосов
/ 13 июня 2010

Мы разрабатываем проект с закрытым исходным кодом, с версией Mercurial. В нашем проекте мы используем две библиотеки:

  • Одна из этих библиотек разрабатывается сторонней организацией. Они используют git, и мы обычно вынимаем их репо раз в неделю, чтобы получать последние изменения.

  • Другая библиотека разрабатывается нами и активно разрабатывается. Он должен жить в своем собственном публичном хранилище Mercurial, так как он лицензирован в соответствии с LGPL. (Это вилка стороннего компонента LGPL, портированного на нашу платформу)

Итак, мой вопрос: как мне организовать источник, чтобы обеспечить:

  1. Разработчик из нашей команды должен иметь возможность получить весь исходный код (основной проект + библиотеки) с помощью одной команды "клонирования"

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

Должны ли мы использовать функциональность mercurial sub-repos с hg-git для доступа к библиотеке под git? Хорошо ли это поддерживается TortoiseHg и BitBucket? (плюсы: легко вытащить изменения библиотеки / минусы: хорошо ли это работает?)

Или мы должны хранить только снимки библиотек в нашем проекте? (Таким образом, когда в библиотеках появляются новые изменения в исходном коде, мы переносим их в отдельное место, а затем копируем весь исходный код в наш проект? разрабатываемый нами, который подвержен множеству ежедневных изменений)

1 Ответ

1 голос
/ 13 июня 2010

Да, используйте подпункт с hg-git.Это просто, хорошо поддерживается и эффективно.Ваш файл .hgsubstate будет содержать указатели на моментальные снимки вложенных репозиториев, и этот файл находится под контролем, поэтому в любой момент времени вы сможете ответить на вопрос: с какой версией библиотеки X это работало.Это хорошая вещь.

С другой стороны, вы можете использовать менеджер зависимостей, такой как ivy или maven, в зависимости от вашего языка, но не включайте их библиотеки в репозиторий, если вы можете избежать этого.Указатели на версии их кода лучше, и менеджер зависимостей или вложенные выражения - самые чистые способы сделать это.

...