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