2016-09-04 14 views
1

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

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

P.S .: Я только нашел ответы, как this или this с 2010 по SO, где я не уверен, если ответы все еще применяются все усилия FB вложил в нее делать.

+0

Это проливает некоторый свет на как это работает: https://www.mercurial-scm.org/pipermail/mercurial-devel/2014-June/059425.html –

ответ

4

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

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

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

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

С недавним ртутным (который я настоятельно рекомендую), вы можете сбрить дополнительное время запуска интерпретатора 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, это будет просто слишком запутанным.

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

0

я не уверен, если ответы все еще применяются все усилия FB положить в него

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

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

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

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

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