Ртутная разреженная касса

В этой видеоконференции F8 (начиная с 8:40) 2015 года они говорят о преимуществах использования Mercurial и единый репозиторий через facebook.

Как это работает на практике? Могу ли я проверить подкаталог (в SVN) с помощью Mercurial? Если да, то как? Нужен ли мне для этого facebook-mercurial-extension

PS: я нашел только ответы типа this или this из 2010 г. на SO, где я не уверен, применимы ли ответы ко всем усилия FB вложили в это.


person Rentrop    schedule 04.09.2016    source источник
comment
Это проливает свет на то, как это работает: mercurial-scm .org / pipermail / mercurial-devel / 2014-июнь /   -  person Sedat Kapanoglu    schedule 05.09.2016


Ответы (2)


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

Что касается рабочего процесса, я предлагаю поискать в Google monorepo. У него есть свои плюсы и минусы, вам нужно понимать вашу ситуацию и текущий рабочий процесс, чтобы принять решение. Что касается производительности и масштабирования, продолжайте читать.

Идея remotefilelog состоит не в том, чтобы проверить подкаталог (как вы упомянули), а в том, чтобы проверить все. Для того, чтобы сделать это эффективно, вам понадобятся два расширения, активно разрабатываемых Facebook:

  • remotefilelog. Это дает вам нечто концептуально похожее на неглубокий клон. Это сокращает hg clone и hg pull время.
  • fsmonitor (ранее назывался hgwatchman, теперь он является частью ядра Mercurial). Это значительно сокращает время локальных операций, таких как hg status. Обратите внимание, что fsmonitor не зависит от remotefilelog. Вы можете начать экспериментировать с этим, поскольку это не требует настройки на стороне сервера.

С недавним mercurial (который я настоятельно рекомендую) вы можете сократить дополнительное время запуска интерпретатора Python, используя CommandServer + CHg.

Некоторые дополнительные примечания:

  • Я много тестировал fsmonitor. Он работает очень хорошо, в огромных репозиториях время hg status сокращается с 10 секунд до менее 1 секунды (и большая часть этой 1 секунды - это время запуска Python, см. Выше для CHg). Если ваш репозиторий действительно огромен, вам может потребоваться точная настройка некоторых параметров ядра inotify (или их эквивалента в MacOSX). В fsmonitor документации есть вся необходимая информация.
  • Я не тестировал remotefilelog, хотя прочитал все, что нашел об этом, и уверен, что это работает. В зависимости от того, как выполняется разработка (у всех всегда есть подключение к Интернету или нет, у организации есть собственное главное репо или нет), может быть оговорка: он частично преобразует децентрализованную hg в централизованную VCS, такую ​​как svn: некоторые операции, которые обычно могут быть сделано в автономном режиме (например: hg log и первый hg update в наборе изменений в прошлом) теперь потребует подключения к главному репозиторию.
  • Прежде чем рассматривать remotefilelog, я широко использовал расширение largefiles в огромном репо. У него те же недостатки, что и у remotefilelog, и несколько запутанных углов для пользователей, которые хотят использовать hg только для выполнения задач, не тратя время на понимание того, как это работает. Если бы мне пришлось управлять другим огромным репо, я бы использовал remotefilelog вместо largefiles, хотя их вариант использования на самом деле не тот.
  • Mercurial также поддерживает subrepositories (doc1, doc2). Проблема в том, что он меняет поведение hg в зависимости от того, где вы находитесь в дереве исходных текстов. Опять же, если разработчики не заботятся о реальном понимании того, как работает hg, это будет слишком запутанно.

Дополнительная информация:

person marco.m    schedule 07.09.2016

Я не уверен, что ответы все еще применимы, несмотря на все усилия, которые FB вложил в это

(Начало 2017 г.) Ответы на связанные вопросы по-прежнему применимы (потому что они иногда обновляются), но обратите внимание, что вам нужно будет прочитать все комментарии и ответы.

remotefilelog по существу разрешает неглубокие клоны по запросу (так что вы не получаете историю для всего за все время), но вы по-прежнему получаете важные метаданные и проверяете все каталоги репо в желаемая доработка.

Могу ли я проверить подкаталог (li [k] e в SVN) с помощью Mercurial? Если да, то как?

https://stackoverflow.com/a/40355673/7836056 обсуждает, как можно использовать сторонние расширения, чтобы разрешить узкие / разреженные checkouts (sparse.py от Facebook) или узкие клоны (NarrowHG от Google) с Mercurial, таким образом, «создает» только один каталог из основного репозитория (хотя и с радикально разными компромиссами).

(Обратите внимание, что формулировка имеет значение: «разреженная проверка» означает очень конкретное действие при обращении к распределенному контролю версий таким образом, которого не существует при его использовании для обозначения централизованного контроля версий)

person Anon    schedule 08.04.2017