Готова ли подпрограмма Mercurial 1.4.x к использованию? - PullRequest
8 голосов
/ 06 февраля 2010

Я бы хотел оценить Mercurial для моих рабочих проектов. Но большинство моих проектов очень сильно зависят от наличия поддержки, подобной svn: externals. Я искал по StackOverflow и погуглил для соответствующей поддержки в Mercurial. Все, что я нашел, это функция subrepo, добавленная в Mercurial 1.3, но страница для этой функции сказала:

Подпункты

являются экспериментальной функцией для Mercurial 1.3. Так что не делайте этого в критически важных хранилищах!

Я не хочу использовать что-то нестабильное.

Может ли кто-нибудь пролить свет на реальное состояние этой функции, а также планы ее полировки / доработки и когда она будет называться «стабильной» и готовой для критически важных хранилищ?

Ответы [ 2 ]

6 голосов
/ 07 февраля 2010

Слово в канале #mercurial IRC гласит, что подпункты будут продолжать работать так же, как и они, и поддержка будет расти. Например, в настоящее время команда «hg status» не знает о subrepo - она ​​работает, она просто не повторяется, но это будет в будущем. Однако текущее поведение, файловые форматы (.hgsub и .hgsubstate) будут изменены только обратно совместимыми способами.

Итак, продолжайте и рассчитывайте на это сейчас, и с нетерпением ждем, пока это станет лучше.

P.S. Начиная с Mercurial 1.4.2, подзапросы теперь могут быть репозиториями Subversion, так что вы можете использовать родителя Mercurial и SVN Kid.

1 голос
/ 07 февраля 2010

Мне пока повезло с этой функцией (легким) ее использованием. Это пригодится в двух местах:

  1. Резервное копирование дерева несвязанных репозиториев с помощью одной команды hg pull.
  2. Связывание проекта с конкретными версиями его зависимостей, так что один hg clone получает готовый исходный код. Это ближе к типичному svn:externals использованию.

Вот несколько ограничений, которые я видел до сих пор:

  1. В случае № 1 выше, вы должны зафиксировать все подпункты одновременно. Это только время от времени раздражает, так как Mercurial (как и любой DVCS) поощряет частые коммиты - так что большинство репозиториев не остаются в незавершенном состоянии с самого начала.
  2. Только самые базовые команды Mercurial осведомлены о суб-репо: clone, push / pull, update / commit и, возможно, несколько других.
  3. Авторам расширений понадобится время, чтобы протестировать свои расширения для репозиториев с подпунктами.

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

...